Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
V
Vim
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Someone-Else
Vim
Commits
4e427193
Commit
4e427193
authored
19 years ago
by
Bram Moolenaar
Browse files
Options
Downloads
Patches
Plain Diff
updated for version 7.0220
parent
1056d988
Loading
Loading
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
runtime/doc/map.txt
+33
-3
33 additions, 3 deletions
runtime/doc/map.txt
runtime/optwin.vim
+3
-1
3 additions, 1 deletion
runtime/optwin.vim
src/getchar.c
+76
-10
76 additions, 10 deletions
src/getchar.c
src/vim.h
+2
-0
2 additions, 0 deletions
src/vim.h
with
114 additions
and
14 deletions
runtime/doc/map.txt
+
33
−
3
View file @
4e427193
*map.txt* For Vim version 7.0aa. Last change: 2006 Mar 0
6
*map.txt* For Vim version 7.0aa. Last change: 2006 Mar
1
0
VIM REFERENCE MANUAL by Bram Moolenaar
...
...
@@ -145,6 +145,9 @@ type "a", then "bar" will get inserted.
1.2 SPECIAL ARGUMENTS *:map-arguments*
"<buffer>", "<silent>", "<script>", "<expr>" and "<unique>" can be used in any
order. They must appear right after the command, before any other arguments.
*:map-local* *:map-<buffer>* *E224* *E225*
If the first argument to one of these commands is "<buffer>" it will apply to
mappings locally to the current buffer only. Example: >
...
...
@@ -194,8 +197,35 @@ Example of what will fail: >
If you want to map a key and then have it do what it was originally mapped to,
have a look at |maparg()|.
"<buffer>", "<silent>", "<script>" and "<unique>" can be used in any order.
They must appear right after the command, before any other arguments.
*:map-<expr>* *:map-expression*
If the first argument to one of these commands is "<expr>" and it is used to
define a new mapping or abbreviation, the argument is an expression. The
expression is evaluated to obtain the {rhs} that is used. Example: >
:inoremap <expr> . InsertDot()
The result of the InsertDot() function will be inserted. It could check the
text before the cursor and start omni completion when some condition is met.
Be very careful about side effects! The expression is evaluated while
obtaining characters, if you change buffer text, move the cursor, edit another
file, etc. you may very well make command disfunctional.
Here is an example that inserts a list number that increases: >
let counter = 0
inoremap <expr> <C-L> ListItem()
inoremap <expr> <C-R> ListReset()
func ListItem()
let g:counter += 1
return g:counter . '. '
endfunc
func ListReset()
let g:counter = 0
return ''
endfunc
CTRL-L inserts the next number, CTRL-E resets the count. CTRL-E returns an
empty string, so that nothing is inserted.
1.3 MAPPING AND MODES *:map-modes*
...
...
This diff is collapsed.
Click to expand it.
runtime/optwin.vim
+
3
−
1
View file @
4e427193
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Mar 0
5
" Last Change: 2006 Mar
1
0
" If there already is an option window, jump to that one.
if
bufwinnr
(
"option-window"
)
>
0
...
...
@@ -1163,6 +1163,8 @@ if has("multi_byte")
call
<
SID
>
OptionG
(
"ccv"
,
&
ccv
)
call
append
(
"$"
,
"delcombine\tDelete combining (composing) characters on their own"
)
call
<
SID
>
BinOptionG
(
"deco"
,
&
deco
)
call
append
(
"$"
,
"maxcombine\tMaximum number of combining (composing) characters displayed"
)
call
<
SID
>
OptionG
(
"mco"
,
&
mco
)
if
has
(
"xim"
)
&&
has
(
"gui_gtk"
)
call
append
(
"$"
,
"imactivatekey\tkey that activates the X input method"
)
call
<
SID
>
OptionG
(
"imak"
,
&
imak
)
...
...
This diff is collapsed.
Click to expand it.
src/getchar.c
+
76
−
10
View file @
4e427193
...
...
@@ -1792,8 +1792,8 @@ vgetorpeek(advance)
int
local_State
;
int
mlen
;
int
max_mlen
;
#ifdef FEAT_CMDL_INFO
int
i
;
#ifdef FEAT_CMDL_INFO
int
new_wcol
,
new_wrow
;
#endif
#ifdef FEAT_GUI
...
...
@@ -2309,6 +2309,17 @@ vgetorpeek(advance)
}
#endif
#ifdef FEAT_EVAL
/*
* Handle ":map <expr>": evaluate the {rhs} as an
* expression.
*/
if
(
mp
->
m_expr
)
s
=
eval_to_string
(
mp
->
m_str
,
NULL
,
FALSE
);
else
#endif
s
=
mp
->
m_str
;
/*
* Insert the 'to' part in the typebuf.tb_buf.
* If 'from' field is the same as the start of the
...
...
@@ -2317,13 +2328,23 @@ vgetorpeek(advance)
* If m_noremap is set, don't remap the whole 'to'
* part.
*/
if
(
ins_typebuf
(
mp
->
m_str
,
mp
->
m_noremap
!=
REMAP_YES
if
(
s
==
NULL
)
i
=
FAIL
;
else
{
i
=
ins_typebuf
(
s
,
mp
->
m_noremap
!=
REMAP_YES
?
mp
->
m_noremap
:
STRNCMP
(
mp
->
m_str
,
mp
->
m_keys
,
:
STRNCMP
(
s
,
mp
->
m_keys
,
(
size_t
)
keylen
)
!=
0
?
REMAP_YES
:
REMAP_SKIP
,
0
,
TRUE
,
cmd_silent
||
mp
->
m_silent
)
==
FAIL
)
0
,
TRUE
,
cmd_silent
||
mp
->
m_silent
);
#ifdef FEAT_EVAL
if
(
mp
->
m_expr
)
vim_free
(
s
);
#endif
}
if
(
i
==
FAIL
)
{
c
=
-
1
;
break
;
...
...
@@ -2955,6 +2976,9 @@ do_map(maptype, arg, mode, abbrev)
mapblock_T
**
map_table
;
int
unique
=
FALSE
;
int
silent
=
FALSE
;
#ifdef FEAT_EVAL
int
expr
=
FALSE
;
#endif
int
noremap
;
keys
=
arg
;
...
...
@@ -2967,7 +2991,7 @@ do_map(maptype, arg, mode, abbrev)
else
noremap
=
REMAP_YES
;
/* Accept <buffer>, <silent>, <script> and <unique> in any order. */
/* Accept <buffer>, <silent>,
<expr>
<script> and <unique> in any order. */
for
(;;)
{
#ifdef FEAT_LOCALMAP
...
...
@@ -3003,6 +3027,16 @@ do_map(maptype, arg, mode, abbrev)
noremap
=
REMAP_SCRIPT
;
continue
;
}
/*
* Check for "<expr>": {rhs} is an expression.
*/
if
(
STRNCMP
(
keys
,
"<expr>"
,
6
)
==
0
)
{
keys
=
skipwhite
(
keys
+
6
);
expr
=
TRUE
;
continue
;
}
#endif
/*
* Check for "<unique>": don't overwrite an existing mapping.
...
...
@@ -3328,6 +3362,7 @@ do_map(maptype, arg, mode, abbrev)
mp
->
m_silent
=
silent
;
mp
->
m_mode
=
mode
;
#ifdef FEAT_EVAL
mp
->
m_expr
=
expr
;
mp
->
m_script_ID
=
current_SID
;
#endif
did_it
=
TRUE
;
...
...
@@ -3413,6 +3448,7 @@ do_map(maptype, arg, mode, abbrev)
mp
->
m_silent
=
silent
;
mp
->
m_mode
=
mode
;
#ifdef FEAT_EVAL
mp
->
m_expr
=
expr
;
mp
->
m_script_ID
=
current_SID
;
#endif
...
...
@@ -3835,11 +3871,18 @@ set_context_in_map_cmd(xp, cmd, arg, forceit, isabbrev, isunmap, cmdidx)
arg
=
skipwhite
(
arg
+
8
);
continue
;
}
#ifdef FEAT_EVAL
if
(
STRNCMP
(
arg
,
"<script>"
,
8
)
==
0
)
{
arg
=
skipwhite
(
arg
+
8
);
continue
;
}
if
(
STRNCMP
(
arg
,
"<expr>"
,
6
)
==
0
)
{
arg
=
skipwhite
(
arg
+
6
);
continue
;
}
#endif
break
;
}
xp
->
xp_pattern
=
arg
;
...
...
@@ -3879,7 +3922,7 @@ ExpandMappings(regmatch, num_file, file)
{
count
=
0
;
for
(
i
=
0
;
i
<
4
;
++
i
)
for
(
i
=
0
;
i
<
5
;
++
i
)
{
if
(
i
==
0
)
p
=
(
char_u
*
)
"<silent>"
;
...
...
@@ -3888,9 +3931,11 @@ ExpandMappings(regmatch, num_file, file)
#ifdef FEAT_EVAL
else
if
(
i
==
2
)
p
=
(
char_u
*
)
"<script>"
;
else
if
(
i
==
3
)
p
=
(
char_u
*
)
"<expr>"
;
#endif
#ifdef FEAT_LOCALMAP
else
if
(
i
==
3
&&
!
expand_buffer
)
else
if
(
i
==
4
&&
!
expand_buffer
)
p
=
(
char_u
*
)
"<buffer>"
;
#endif
else
...
...
@@ -4002,6 +4047,7 @@ check_abbr(c, ptr, col, mincol)
int
len
;
int
scol
;
/* starting column of the abbr. */
int
j
;
char_u
*
s
;
#ifdef FEAT_MBYTE
char_u
tb
[
MB_MAXBYTES
+
4
];
#else
...
...
@@ -4148,10 +4194,23 @@ check_abbr(c, ptr, col, mincol)
/* insert the last typed char */
(
void
)
ins_typebuf
(
tb
,
1
,
0
,
TRUE
,
mp
->
m_silent
);
}
#ifdef FEAT_EVAL
if
(
mp
->
m_expr
)
s
=
eval_to_string
(
mp
->
m_str
,
NULL
,
FALSE
);
else
#endif
s
=
mp
->
m_str
;
if
(
s
!=
NULL
)
{
/* insert the to string */
(
void
)
ins_typebuf
(
mp
->
m_str
,
mp
->
m_noremap
,
0
,
TRUE
,
mp
->
m_silent
);
(
void
)
ins_typebuf
(
s
,
mp
->
m_noremap
,
0
,
TRUE
,
mp
->
m_silent
);
/* no abbrev. for these chars */
typebuf
.
tb_no_abbr_cnt
+=
(
int
)
STRLEN
(
mp
->
m_str
)
+
j
+
1
;
typebuf
.
tb_no_abbr_cnt
+=
(
int
)
STRLEN
(
s
)
+
j
+
1
;
#ifdef FEAT_EVAL
if
(
mp
->
m_expr
)
vim_free
(
s
);
#endif
}
tb
[
0
]
=
Ctrl_H
;
tb
[
1
]
=
NUL
;
...
...
@@ -4310,6 +4369,13 @@ makemap(fd, buf)
return
FAIL
;
if
(
mp
->
m_silent
&&
fputs
(
" <silent>"
,
fd
)
<
0
)
return
FAIL
;
#ifdef FEAT_EVAL
if
(
mp
->
m_noremap
==
REMAP_SCRIPT
&&
fputs
(
"<script>"
,
fd
)
<
0
)
return
FAIL
;
if
(
mp
->
m_expr
&&
fputs
(
" <expr>"
,
fd
)
<
0
)
return
FAIL
;
#endif
if
(
putc
(
' '
,
fd
)
<
0
||
put_escstr
(
fd
,
mp
->
m_keys
,
0
)
==
FAIL
...
...
This diff is collapsed.
Click to expand it.
src/vim.h
+
2
−
0
View file @
4e427193
...
...
@@ -1127,6 +1127,8 @@ enum auto_event
EVENT_CURSORMOVEDI
,
/* cursor was moved in Insert mode */
EVENT_TABLEAVE
,
/* before leaving a tab page */
EVENT_TABENTER
,
/* after entering a tab page */
EVENT_SHELLCMDPOST
,
/* after ":!cmd" */
EVENT_SHELLFILTERPOST
,
/* after ":1,2!cmd", ":w !cmd", ":r !cmd". */
NUM_EVENTS
/* MUST be the last one */
};
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment