aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/editing.txt52
-rw-r--r--runtime/doc/eval.txt42
-rw-r--r--src/nvim/eval.c8
-rw-r--r--test/functional/ex_cmds/cd_spec.lua22
4 files changed, 56 insertions, 68 deletions
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index ebf524fdbb..0ad917006f 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1216,20 +1216,18 @@ use has("browsefilter"): >
==============================================================================
7. The current directory *current-directory*
-You may use the |:cd|, |:tcd| and |:lcd| commands to change to another
-directory, so you will not have to type that directory name in front of the
-file names. It also makes a difference for executing external commands, e.g.
-":!ls".
+You can use |:cd|, |:tcd| and |:lcd| to change to another directory, so you
+will not have to type that directory name in front of the file names. It also
+makes a difference for executing external commands, e.g. ":!ls" or ":te ls".
-There are three levels of working directories: global, tab and window. The
-local working directory of the current window takes precedence over the local
-working directory of the tab, which in turn takes precedence over the global
-working directory. If a local working directory, tab or window, does not
-exist, the next one in the hierarchy applies.
+There are three current-directory "scopes": global, tab and window. The
+window-local working directory takes precedence over the tab-local
+working directory, which in turn takes precedence over the global
+working directory. If a local working directory (tab or window) does not
+exist, the next-higher scope in the hierarchy applies.
-All commands for changing the working directory can be suffixed with an
-exclamation mark (e.g. |:cd!|). This is for compatibility with Vim and will be
-ignored by Neovim.
+Commands for changing the working directory can be suffixed with a bang "!"
+(e.g. |:cd!|) which is ignored, for compatibility with Vim.
*:cd* *E747* *E472*
:cd[!] On non-Unix systems: Print the current directory
@@ -1254,11 +1252,10 @@ ignored by Neovim.
*:chd* *:chdir*
:chd[ir][!] [path] Same as |:cd|.
- *:tc* *:tcd* *E5000* *E5001* *E5002*
+ *:tc* *:tcd* *E5000* *E5001* *E5002*
:tc[d][!] {path} Like |:cd|, but set the current directory for the
- current tab. The current directory for other tabs
- or the local directory of windows in this tab is not
- changed, except for the current window.
+ current tab and window. The current directory for
+ other tabs and windows is not changed.
*:tcd-*
:tcd[!] - Change to the previous current directory (before the
@@ -1284,19 +1281,20 @@ ignored by Neovim.
Also see |getcwd()|.
So long as no |:tcd| or |:lcd| command has been used, all windows share the
-same current directory. Using a command to jump to another window doesn't
+same "current directory". Using a command to jump to another window doesn't
change anything for the current directory.
-When a |:lcd| command has been used for a window, the specified directory
-becomes the current directory for that window. Windows where the |:lcd|
-command has not been used stick to the tab- or global current directory. When
-jumping to another window the current directory will become the last specified
-local current directory. If none was specified, the tab- or global current
-directory is used.
+
+When |:lcd| has been used for a window, the specified directory becomes the
+current directory for that window. Windows where the |:lcd| command has not
+been used stick to the global or tab-local directory. When jumping to another
+window the current directory will become the last specified local current
+directory. If none was specified, the global or tab-local directory is used.
+
When changing tabs the same behaviour applies. If the current tab has no
local working directory the global working directory is used. When a |:cd|
command is used, the current window and tab will lose their local current
-directories and will use the global current directory from now on. When a
-|:tcd| command is used, only the current window will lose its local working
+directories and will use the global current directory from now on. When
+a |:tcd| command is used, only the current window will lose its local working
directory.
After using |:cd| the full path name will be used for reading and writing
@@ -1346,9 +1344,7 @@ There are a few things to remember when editing binary files:
9. Encryption *encryption*
*:X* *E817* *E818* *E819* *E820*
-Support for editing encrypted files has been removed, but may be added back in
-the future. See the following discussions for more information:
-
+Support for editing encrypted files has been removed.
https://github.com/neovim/neovim/issues/694
https://github.com/neovim/neovim/issues/701
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 3e1281a021..0fdf905bd3 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1886,7 +1886,7 @@ getcmdpos() Number return cursor position in command-line
getcmdtype() String return current command-line type
getcmdwintype() String return current command-line window type
getcurpos() List position of the cursor
-getcwd( [{scope}]) String the current working directory
+getcwd( [{scope}]) 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}
@@ -3559,21 +3559,17 @@ getcurpos() Get the position of the cursor. This is like getpos('.'), but
MoveTheCursorAround
call setpos('.', save_cursor)
<
-getcwd([{window}[, {tab}]]) *getcwd()*
- With no argument the result is a String, which is the name of the
- current effective working directory. If an arguments are provided for a
- window or a tabpage the working directory of that scope is returned.
-
- Tabs and windows are identified using their respective number. If a
- number is 0 the current tab or window is implied. If one is not given
- it defaults to 0. Thus
-
+getcwd([{window}[, {tab}]]) *getcwd()*
+ With no arguments the result is a String, which is the name of
+ the current effective working directory. With {window} or
+ {tab} the working directory of that scope is returned.
+ Tabs and windows are identified by their respective numbers,
+ 0 means current tab or window. Missing argument implies 0.
+ Thus the following are equivalent: >
getcwd()
getcwd(0)
getcwd(0, 0)
-
- are all equal. If {window} is -1 it will be ignored and only the tab
- will be looked at.
+< If {window} is -1 it is ignored, only the tab is resolved.
getfsize({fname}) *getfsize()*
@@ -3909,20 +3905,18 @@ has_key({dict}, {key}) *has_key()*
The result is a Number, which is 1 if |Dictionary| {dict} has
an entry with key {key}. Zero otherwise.
-haslocaldir([{window}[, {tab}]]) *haslocaldir()*
- The result is a Number, which is 1 when the specified tabpage or window
- has a local path set via |:lcd| or |:tcd|, and 0 otherwise.
-
- Tabs and windows are identified using their respective number. If a
- number is 0 the current tab or window is implied. If one is not given
- it defaults to 0. Thus
-
+haslocaldir([{window}[, {tab}]]) *haslocaldir()*
+ The result is a Number, which is 1 when the specified tabpage
+ or window has a local path set via |:lcd| or |:tcd|, and
+ 0 otherwise.
+
+ Tabs and windows are identified by their respective numbers,
+ 0 means current tab or window. Missing argument implies 0.
+ Thus the following are equivalent: >
haslocaldir()
haslocaldir(0)
haslocaldir(0, 0)
-
- are all equal. If {window} is -1 it will be ignored and only the tab
- will be looked at.
+< If {window} is -1 it is ignored, only the tab is resolved.
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
The result is a Number, which is 1 if there is a mapping that
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 9579a8ea75..b2fdef8466 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -9826,7 +9826,7 @@ static void f_getcwd(typval_T *argvars, typval_T *rettv)
}
}
- // It the deepest scope number is `-1` advance the scope by one.
+ // If the deepest scope number is `-1` advance the scope.
if (scope_number[scope] < 0) {
scope++;
}
@@ -9847,8 +9847,7 @@ static void f_getcwd(typval_T *argvars, typval_T *rettv)
win = NULL;
} else if (scope_number[kCdScopeWindow] >= 0) {
if (!tp) {
- EMSG(_("E5001: A higher-level scope cannot be -1 if a lower-level"
- " scope is >= 0."));
+ EMSG(_("E5001: Higher scope cannot be -1 if lower scope is >= 0."));
goto end;
}
@@ -10782,8 +10781,7 @@ static void f_haslocaldir(typval_T *argvars, typval_T *rettv)
win = NULL;
} else if (scope_number[kCdScopeWindow] >= 0) {
if (!tp) {
- EMSG(_("E5001: A higher-level scope cannot be -1 if a lower-level"
- " scope is >= 0."));
+ EMSG(_("E5001: Higher scope cannot be -1 if lower scope is >= 0."));
return;
}
diff --git a/test/functional/ex_cmds/cd_spec.lua b/test/functional/ex_cmds/cd_spec.lua
index da22a85d6b..f5cce65104 100644
--- a/test/functional/ex_cmds/cd_spec.lua
+++ b/test/functional/ex_cmds/cd_spec.lua
@@ -110,34 +110,34 @@ end
-- Test legal parameters for 'getcwd' and 'haslocaldir'
for _, cmd in ipairs {'getcwd', 'haslocaldir'} do
- describe('getcwd()', function()
+ describe(cmd..'()', function()
-- Test invalid argument types
local expected = 'Vim(call):E474: Invalid argument'
- it('fails to parse a string', function()
+ it('fails on string', function()
eq(expected, exc_exec('call ' .. cmd .. '("some string")'))
end)
- it('fails to parse a float', function()
+ it('fails on float', function()
eq(expected, exc_exec('call ' .. cmd .. '(1.0)'))
end)
- it('fails to parse a list', function()
+ it('fails on list', function()
eq(expected, exc_exec('call ' .. cmd .. '([1, 2])'))
end)
- it('fails to parse a dictionary', function()
+ it('fails on dictionary', function()
eq(expected, exc_exec('call ' .. cmd .. '({"key": "value"})'))
end)
- it('fails to parse a funcref', function()
+ it('fails on funcref', function()
eq(expected, exc_exec('call ' .. cmd .. '(function("tr"))'))
end)
-
+
-- Test invalid numbers
- it('fails to parse number less than -1', function()
+ it('fails on number less than -1', function()
eq(expected, exc_exec('call ' .. cmd .. '(-2)'))
end)
- local expected = 'Vim(call):E5001: A higher-level scope cannot be -1 if a lower-level scope is >= 0.'
- it('fails to parse arument -1 when previous arg was greater than -1', function()
+ local expected = 'Vim(call):E5001: Higher scope cannot be -1 if lower scope is >= 0.'
+ it('fails on -1 if previous arg is >=0', function()
eq(expected, exc_exec('call ' .. cmd .. '(0, -1)'))
end)
-
+
-- Test wrong number of arguments
local expected = 'Vim(call):E118: Too many arguments for function: ' .. cmd
it('fails to parse more than one argument', function()