mirror of
https://github.com/neovim/neovim.git
synced 2025-09-16 16:28:17 +00:00
setpos(): Set lowercase mark in other buffers (#5753)
Also make setpos("'A", [999, 1, 1, 0]) fail, i.e. return -1 (assuming there is no buffer 999). Fixes #5713 Background: `:help setpos()` mentions an argument `"bufnum"` that determines the buffer a mark should be put in. This argument is respected for uppercase marks, but not for lowercase marks. This is reasonable (though I personally would like `setpos()` to be able to set marks in other buffers), but the help doesn't mention this anywhere. It's also strange that attempting to change buffers with `setpos('.', [bufnr('#'), 1, 1, 0])` alerts the user that having a different buffer is an error, while attempting to set a mark with `setpos("'d", [bufnr('#'), 1, 1, 0])` doesn't tell the user that the `"bufnum"` argument is an error.
This commit is contained in:

committed by
Justin M. Keyes

parent
a3a5090ba4
commit
b5560a69b1
@@ -130,9 +130,15 @@ int setmark_pos(int c, pos_T *pos, int fnum)
|
||||
return OK;
|
||||
}
|
||||
|
||||
buf_T *buf = buflist_findnr(fnum);
|
||||
// Can't set a mark in a non-existant buffer.
|
||||
if (buf == NULL) {
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (ASCII_ISLOWER(c)) {
|
||||
i = c - 'a';
|
||||
RESET_FMARK(curbuf->b_namedm + i, *pos, curbuf->b_fnum);
|
||||
RESET_FMARK(buf->b_namedm + i, *pos, fnum);
|
||||
return OK;
|
||||
}
|
||||
if (ASCII_ISUPPER(c) || ascii_isdigit(c)) {
|
||||
|
Reference in New Issue
Block a user