diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_cmds.c | 1 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 1 | ||||
-rw-r--r-- | src/nvim/main.c | 1 | ||||
-rw-r--r-- | src/nvim/misc1.c | 1 | ||||
-rw-r--r-- | src/nvim/mouse.c | 65 | ||||
-rw-r--r-- | src/nvim/normal.c | 9 | ||||
-rw-r--r-- | src/nvim/option.c | 1 | ||||
-rw-r--r-- | src/nvim/os_unix.c | 1 | ||||
-rw-r--r-- | src/nvim/search.c | 1 | ||||
-rw-r--r-- | src/nvim/term.c | 89 | ||||
-rw-r--r-- | src/nvim/window.c | 1 |
11 files changed, 82 insertions, 89 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 0829049e4d..7c6e046133 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -47,6 +47,7 @@ #include "nvim/garray.h" #include "nvim/memory.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/ops.h" #include "nvim/option.h" diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index db12cf1b2e..e56592923d 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -48,6 +48,7 @@ #include "nvim/keymap.h" #include "nvim/garray.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/ops.h" #include "nvim/option.h" #include "nvim/os_unix.h" diff --git a/src/nvim/main.c b/src/nvim/main.c index 99d4e18546..8e19cf3686 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -43,6 +43,7 @@ #include "nvim/log.h" #include "nvim/memory.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/ops.h" #include "nvim/option.h" diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 5c6963b2b7..fc848466c6 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -42,6 +42,7 @@ #include "nvim/misc2.h" #include "nvim/garray.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/option.h" #include "nvim/os_unix.h" #include "nvim/path.h" diff --git a/src/nvim/mouse.c b/src/nvim/mouse.c index 7fc581a7c0..93b5c7b3c0 100644 --- a/src/nvim/mouse.c +++ b/src/nvim/mouse.c @@ -2,8 +2,12 @@ #include "nvim/mouse.h" #include "nvim/vim.h" -#include "nvim/screen.h" +#include "nvim/ascii.h" #include "nvim/window.h" +#include "nvim/strings.h" +#include "nvim/screen.h" +#include "nvim/ui.h" +#include "nvim/os_unix.h" #include "nvim/term.h" #include "nvim/fold.h" #include "nvim/diff.h" @@ -436,3 +440,62 @@ win_T *mouse_find_win(int *rowp, int *colp) } return fp->fr_win; } + +/* + * setmouse() - switch mouse on/off depending on current mode and 'mouse' + */ +void setmouse(void) +{ + int checkfor; + + + /* be quick when mouse is off */ + if (*p_mouse == NUL) + return; + + /* don't switch mouse on when not in raw mode (Ex mode) */ + if (cur_tmode != TMODE_RAW) { + mch_setmouse(false); + return; + } + + if (VIsual_active) + checkfor = MOUSE_VISUAL; + else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) + checkfor = MOUSE_RETURN; + else if (State & INSERT) + checkfor = MOUSE_INSERT; + else if (State & CMDLINE) + checkfor = MOUSE_COMMAND; + else if (State == CONFIRM || State == EXTERNCMD) + checkfor = ' '; /* don't use mouse for ":confirm" or ":!cmd" */ + else + checkfor = MOUSE_NORMAL; /* assume normal mode */ + + if (mouse_has(checkfor)) + mch_setmouse(true); + else + mch_setmouse(false); +} + +/* + * Return true if + * - "c" is in 'mouse', or + * - 'a' is in 'mouse' and "c" is in MOUSE_A, or + * - the current buffer is a help file and 'h' is in 'mouse' and we are in a + * normal editing mode (not at hit-return message). + */ +int mouse_has(int c) +{ + for (char_u *p = p_mouse; *p; ++p) + switch (*p) { + case 'a': if (vim_strchr((char_u *)MOUSE_A, c) != NULL) + return true; + break; + case MOUSE_HELP: if (c != MOUSE_RETURN && curbuf->b_help) + return true; + break; + default: if (c == *p) return true; break; + } + return false; +} diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 0a43d59607..1b21100933 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -46,6 +46,7 @@ #include "nvim/misc2.h" #include "nvim/keymap.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/ops.h" #include "nvim/option.h" #include "nvim/quickfix.h" @@ -7374,3 +7375,11 @@ static void nv_cursorhold(cmdarg_T *cap) did_cursorhold = true; cap->retval |= CA_COMMAND_BUSY; /* don't call edit() now */ } + +/* + * Return TRUE when 'mousemodel' is set to "popup" or "popup_setpos". + */ +static int mouse_model_popup(void) +{ + return p_mousem[0] == 'p'; +} diff --git a/src/nvim/option.c b/src/nvim/option.c index 79ded9f32f..2882d7a511 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -66,6 +66,7 @@ #include "nvim/garray.h" #include "nvim/cursor_shape.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/os_unix.h" #include "nvim/path.h" diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c index 8784559b50..677976e3e1 100644 --- a/src/nvim/os_unix.c +++ b/src/nvim/os_unix.c @@ -37,6 +37,7 @@ #include "nvim/message.h" #include "nvim/misc1.h" #include "nvim/misc2.h" +#include "nvim/mouse.h" #include "nvim/garray.h" #include "nvim/path.h" #include "nvim/screen.h" diff --git a/src/nvim/search.c b/src/nvim/search.c index e9184d84cd..3055729bf8 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -39,6 +39,7 @@ #include "nvim/misc1.h" #include "nvim/misc2.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/option.h" #include "nvim/path.h" diff --git a/src/nvim/term.c b/src/nvim/term.c index 26f0785849..064535a1dd 100644 --- a/src/nvim/term.c +++ b/src/nvim/term.c @@ -43,6 +43,7 @@ #include "nvim/keymap.h" #include "nvim/memory.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/option.h" #include "nvim/os_unix.h" @@ -1506,7 +1507,6 @@ int set_termname(char_u *term) # define HMT_PTERM 8 # define HMT_URXVT 16 # define HMT_SGR 32 -static int has_mouse_termcode = 0; void set_mouse_termcode ( @@ -1517,16 +1517,6 @@ set_mouse_termcode ( char_u name[2] = { n, KE_FILLER }; add_termcode(name, s, FALSE); - if (n == KS_NETTERM_MOUSE) - has_mouse_termcode |= HMT_NETTERM; - else if (n == KS_DEC_MOUSE) - has_mouse_termcode |= HMT_DEC; - else if (n == KS_URXVT_MOUSE) - has_mouse_termcode |= HMT_URXVT; - else if (n == KS_SGR_MOUSE) - has_mouse_termcode |= HMT_SGR; - else - has_mouse_termcode |= HMT_NORMAL; } # if (defined(UNIX) && defined(FEAT_MOUSE_TTY)) || defined(PROTO) @@ -1538,16 +1528,6 @@ del_mouse_termcode ( char_u name[2] = { n, KE_FILLER }; del_termcode(name); - if (n == KS_NETTERM_MOUSE) - has_mouse_termcode &= ~HMT_NETTERM; - else if (n == KS_DEC_MOUSE) - has_mouse_termcode &= ~HMT_DEC; - else if (n == KS_URXVT_MOUSE) - has_mouse_termcode &= ~HMT_URXVT; - else if (n == KS_SGR_MOUSE) - has_mouse_termcode &= ~HMT_SGR; - else - has_mouse_termcode &= ~HMT_NORMAL; } # endif @@ -2545,73 +2525,6 @@ int swapping_screen(void) } /* - * setmouse() - switch mouse on/off depending on current mode and 'mouse' - */ -void setmouse(void) -{ - int checkfor; - - - /* be quick when mouse is off */ - if (*p_mouse == NUL || has_mouse_termcode == 0) - return; - - /* don't switch mouse on when not in raw mode (Ex mode) */ - if (cur_tmode != TMODE_RAW) { - mch_setmouse(FALSE); - return; - } - - if (VIsual_active) - checkfor = MOUSE_VISUAL; - else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) - checkfor = MOUSE_RETURN; - else if (State & INSERT) - checkfor = MOUSE_INSERT; - else if (State & CMDLINE) - checkfor = MOUSE_COMMAND; - else if (State == CONFIRM || State == EXTERNCMD) - checkfor = ' '; /* don't use mouse for ":confirm" or ":!cmd" */ - else - checkfor = MOUSE_NORMAL; /* assume normal mode */ - - if (mouse_has(checkfor)) - mch_setmouse(TRUE); - else - mch_setmouse(FALSE); -} - -/* - * Return TRUE if - * - "c" is in 'mouse', or - * - 'a' is in 'mouse' and "c" is in MOUSE_A, or - * - the current buffer is a help file and 'h' is in 'mouse' and we are in a - * normal editing mode (not at hit-return message). - */ -int mouse_has(int c) -{ - for (char_u *p = p_mouse; *p; ++p) - switch (*p) { - case 'a': if (vim_strchr((char_u *)MOUSE_A, c) != NULL) - return TRUE; - break; - case MOUSE_HELP: if (c != MOUSE_RETURN && curbuf->b_help) - return TRUE; - break; - default: if (c == *p) return TRUE; break; - } - return FALSE; -} - -/* - * Return TRUE when 'mousemodel' is set to "popup" or "popup_setpos". - */ -int mouse_model_popup(void) -{ - return p_mousem[0] == 'p'; -} - -/* * By outputting the 'cursor very visible' termcap code, for some windowed * terminals this makes the screen scrolled to the correct position. * Used when starting Vim or returning from a shell. diff --git a/src/nvim/window.c b/src/nvim/window.c index 315d5f07de..bd461a873f 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -41,6 +41,7 @@ #include "nvim/file_search.h" #include "nvim/garray.h" #include "nvim/move.h" +#include "nvim/mouse.h" #include "nvim/normal.h" #include "nvim/option.h" #include "nvim/os_unix.h" |