Files
neovim/src/nvim/window.h
zeertzjq f89558848b vim-patch:9.1.2001: cursor may end up in wrong window after :botright copen (#37056)
Problem:  After :botright copen and closing the quikfix window, the
          cursor ends up in the wrong window. The problem is fr_child
          always points to the first (leftmost for FR_ROW, topmost for
          FR_COL) child frame. When do :vsplit, the new window is
          created on the left, and frame_insert() updates the parent's
          fr_child to point to this new left window.
Solution: Create a snapshot before open the quickfix window and restore
          it when close it (glepnir).

closes: vim/vim#18961

b43f9ded7e

Co-authored-by: glepnir <glephunter@gmail.com>
2025-12-21 10:41:53 +08:00

40 lines
1.3 KiB
C

#pragma once
#include <stdbool.h>
#include "nvim/buffer_defs.h" // IWYU pragma: keep
#include "nvim/garray_defs.h" // IWYU pragma: keep
#include "nvim/macros_defs.h"
#include "nvim/option_defs.h" // IWYU pragma: keep
#include "nvim/types_defs.h" // IWYU pragma: keep
/// arguments for win_split()
enum {
WSP_ROOM = 0x01, ///< require enough room
WSP_VERT = 0x02, ///< split/equalize vertically
WSP_HOR = 0x04, ///< equalize horizontally
WSP_TOP = 0x08, ///< window at top-left of shell
WSP_BOT = 0x10, ///< window at bottom-right of shell
WSP_HELP = 0x20, ///< creating the help window
WSP_BELOW = 0x40, ///< put new window below/right
WSP_ABOVE = 0x80, ///< put new window above/left
WSP_NEWLOC = 0x100, ///< don't copy location list
WSP_NOENTER = 0x200, ///< don't enter the new window
WSP_QUICKFIX = 0x400, ///< creating the quickfix window
};
enum {
MIN_COLUMNS = 12, ///< minimal columns for screen
MIN_LINES = 2, ///< minimal lines for screen
STATUS_HEIGHT = 1, ///< height of a status line under a window
};
enum {
/// Lowest number used for window ID. Cannot have this many windows per tab.
LOWEST_WIN_ID = 1000,
};
EXTERN int tabpage_move_disallowed INIT( = 0); ///< moving tabpages around disallowed
#include "window.h.generated.h"