getcmdline() String return the current command-line
getcmdpos() Number return cursor position in command-line
getcmdtype() String return the current command-line type
+getcurpos() List position of the cursor
getcwd() String the current working directory
+getfontname( [{name}]) String name of font being used
getfperm( {fname}) String file permissions of file {fname}
getfsize( {fname}) Number size in bytes of file {fname}
-getfontname( [{name}]) String name of font being used
getftime( {fname}) Number last modification time of file
getftype( {fname}) String description of type of file {fname}
getline( {lnum}) String line {lnum} of current buffer
with two, three or four item:
[{lnum}, {col}, {off}]
[{lnum}, {col}, {off}, {curswant}]
- This is like the return value of |getpos()|, but without the
- first item.
+ This is like the return value of |getpos()| or |getcurpos|,
+ but without the first item.
Does not change the jumplist.
If {lnum} is greater than the number of lines in the buffer,
the cursor will be positioned at the last character in the
line.
If {col} is zero, the cursor will stay in the current column.
+ If {curswant} is given it is used to set the preferred column
+ for vertical movment. Otherwise {col} is used.
When 'virtualedit' is used {off} specifies the offset in
screen columns from the start of the character. E.g., a
position within a <Tab> or after the last character.
Returns an empty string otherwise.
Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
+ *getcurpos()*
+getcurpos() Get the position of the cursor. This is like getpos('.'), but
+ includes an extra item in the list:
+ [bufnum, lnum, col, off, curswant]
+ The "curswant" number is the preferred column when moving the
+ cursor vertically.
+ This can be used to save and restore the cursor position: >
+ let save_cursor = getcurpos()
+ MoveTheCursorAround
+ call setpos('.', save_cursor)
+
*getcwd()*
getcwd() The result is a String, which is the name of the current
working directory.
*getpos()*
getpos({expr}) Get the position for {expr}. For possible values of {expr}
- see |line()|.
- The result is a |List| with four or five numbers:
+ see |line()|. For getting the cursor position see
+ |getcurpos()|.
+ The result is a |List| with four numbers:
[bufnum, lnum, col, off]
- [bufnum, lnum, col, off, curswant]
"bufnum" is zero, unless a mark like '0 or 'A is used, then it
is the buffer number of the mark.
"lnum" and "col" are the position in the buffer. The first
it is the offset in screen columns from the start of the
character. E.g., a position within a <Tab> or after the last
character.
- The "curswant" number is only added for getpos('.'), it is the
- preferred column when moving the cursor vertically.
Note that for '< and '> Visual mode matters: when it is "V"
(visual line mode) the column of '< is zero and the column of
'> is a large number.
- This can be used to save and restore the cursor position: >
- let save_cursor = getpos(".")
- MoveTheCursorAround
- call setpos('.', save_cursor)
-< Also see |setpos()|.
+ This can be used to save and restore the position of a mark: >
+ let save_a_mark = getpos("'a")
+ ...
+ call setpos(''a', save_a_mark
+< Also see |getcurpos()| and |setpos()|.
or({expr}, {expr}) *or()*
Bitwise OR on the two arguments. The arguments are converted
Returns 0 when the position could be set, -1 otherwise.
An error message is given if {expr} is invalid.
- Also see |getpos()|
+ Also see |getpos()| and |getcurpos()|.
This does not restore the preferred column for moving
vertically; if you set the cursor position with this, |j| and
static void f_getline __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getmatches __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getpid __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_getcurpos __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
{"getcmdline", 0, 0, f_getcmdline},
{"getcmdpos", 0, 0, f_getcmdpos},
{"getcmdtype", 0, 0, f_getcmdtype},
+ {"getcurpos", 0, 0, f_getcurpos},
{"getcwd", 0, 0, f_getcwd},
{"getfontname", 0, 1, f_getfontname},
{"getfperm", 1, 1, f_getfperm},
rettv->vval.v_number = mch_get_pid();
}
+static void getpos_both __ARGS((typval_T *argvars, typval_T *rettv, int getcurpos));
+
+/*
+ * "getcurpos()" function
+ */
+ static void
+f_getcurpos(argvars, rettv)
+ typval_T *argvars;
+ typval_T *rettv;
+{
+ getpos_both(argvars, rettv, TRUE);
+}
+
/*
* "getpos(string)" function
*/
f_getpos(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
+{
+ getpos_both(argvars, rettv, FALSE);
+}
+
+ static void
+getpos_both(argvars, rettv, getcurpos)
+ typval_T *argvars;
+ typval_T *rettv;
+ int getcurpos;
{
pos_T *fp;
list_T *l;
if (rettv_list_alloc(rettv) == OK)
{
l = rettv->vval.v_list;
- fp = var2fpos(&argvars[0], TRUE, &fnum);
+ if (getcurpos)
+ fp = &curwin->w_cursor;
+ else
+ fp = var2fpos(&argvars[0], TRUE, &fnum);
if (fnum != -1)
list_append_number(l, (varnumber_T)fnum);
else
(fp != NULL) ? (varnumber_T)fp->coladd :
#endif
(varnumber_T)0);
- if (fp == &curwin->w_cursor)
+ if (getcurpos)
list_append_number(l, (varnumber_T)curwin->w_curswant + 1);
}
else