aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/version.c2
-rw-r--r--src/nvim/window.c27
-rw-r--r--test/functional/legacy/signs_spec.lua24
3 files changed, 39 insertions, 14 deletions
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 4d0e950b24..f0f1db506d 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -251,7 +251,7 @@ static int included_patches[] = {
//490,
489,
488,
- //487,
+ 487,
486,
485,
//484 NA
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 1a102cf069..ed4a8d8e7a 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -3543,27 +3543,28 @@ static void win_enter_ext(win_T *wp, bool undo_sync, int curwin_invalid, int tri
}
-/*
- * Jump to the first open window that contains buffer "buf", if one exists.
- * Returns a pointer to the window found, otherwise NULL.
- */
+/// Jump to the first open window that contains buffer "buf", if one exists.
+/// Returns a pointer to the window found, otherwise NULL.
win_T *buf_jump_open_win(buf_T *buf)
{
- FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
- if (wp->w_buffer == buf) {
- win_enter(wp, false);
- return wp;
+ if (curwin->w_buffer == buf) {
+ win_enter(curwin, false);
+ return curwin;
+ } else {
+ FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
+ if (wp->w_buffer == buf) {
+ win_enter(wp, false);
+ return wp;
+ }
}
}
return NULL;
}
-/*
- * Jump to the first open window in any tab page that contains buffer "buf",
- * if one exists.
- * Returns a pointer to the window found, otherwise NULL.
- */
+/// Jump to the first open window in any tab page that contains buffer "buf",
+/// if one exists.
+/// @return the found window, or NULL.
win_T *buf_jump_open_tab(buf_T *buf)
{
diff --git a/test/functional/legacy/signs_spec.lua b/test/functional/legacy/signs_spec.lua
new file mode 100644
index 0000000000..89b2bf3b73
--- /dev/null
+++ b/test/functional/legacy/signs_spec.lua
@@ -0,0 +1,24 @@
+-- Tests for signs
+
+local helpers = require('test.functional.helpers')
+local feed, insert, source = helpers.feed, helpers.insert, helpers.source
+local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
+
+describe('signs', function()
+ setup(clear)
+
+ it('is working', function()
+ execute('sign define JumpSign text=x')
+ execute([[exe 'sign place 42 line=2 name=JumpSign buffer=' . bufnr('')]])
+ -- Split the window to the bottom to verify :sign-jump will stay in the current
+ -- window if the buffer is displayed there.
+ execute('bot split')
+ execute([[exe 'sign jump 42 buffer=' . bufnr('')]])
+ execute([[call append(line('$'), winnr())]])
+
+ -- Assert buffer contents.
+ expect([[
+
+ 2]])
+ end)
+end)