Hi,

2347 fixes, thanks!

-m

On Thursday, January 14, 2021 at 12:31:22 PM UTC-5 mckel...@gmail.com wrote:

> Hi,
>
> Just tried to build and see -
>
> term.c: In function ‘out_flush’:
> term.c:2553:5: error: ‘gui’ undeclared (first use in this function)
>  2553 |    (gui.in_use && !gui.dying && !gui.starting)
>       |     ^~~
>
> Do I need a manual re-configure ?
>
> thx,
> -m
>
> On Thursday, January 14, 2021 at 11:36:05 AM UTC-5 Bram Moolenaar wrote:
>
>>
>> Patch 8.2.2345 
>> Problem: No focus events in a terminal. 
>> Solution: Add the t_fd and t_fe termcap entries and implement detecting 
>> focus events. (Hayaki Saito, Magnus Groß, closes #7673, 
>> closes #609, closes #5526) 
>> Files: runtime/doc/term.txt, src/optiondefs.h, src/term.c, src/term.h 
>>
>>
>> *** ../vim-8.2.2344/runtime/doc/term.txt 2020-12-29 20:53:28.299402080 
>> +0100 
>> --- runtime/doc/term.txt 2021-01-14 17:20:23.946278238 +0100 
>> *************** 
>> *** 372,377 **** 
>> --- 373,382 ---- 
>> t_Ri restore icon text from stack *t_Ri* *'t_Ri'* 
>> t_TE end of "raw" mode *t_TE* *'t_TE'* 
>> t_TI put terminal into "raw" mode *t_TI* *'t_TI'* 
>> + t_fd disable focus-event tracking *t_TI* *'t_TI'* 
>> + |xterm-focus-event| 
>> + t_fe enable focus-event tracking *t_TI* *'t_TI'* 
>> + |xterm-focus-event| 
>>
>> Some codes have a start, middle and end part. The start and end are 
>> defined 
>> by the termcap option, the middle part is text. 
>> *************** 
>> *** 545,550 **** 
>> --- 550,565 ---- 
>> value with the context menu (right mouse button while CTRL key is 
>> pressed), 
>> there should be a tick at allow-window-ops. 
>>
>> + *xterm-focus-event* 
>> + Some terminals including xterm support the focus event tracking 
>> feature. 
>> + If this feature is enabled by the 't_fe' sequence, special key 
>> sequences are 
>> + sent from the terminal to Vim every time the terminal gains or loses 
>> focus. 
>> + Vim fires focus events (|FocusGained|/|FocusLost|) by handling them 
>> accordingly. 
>> + Focus event tracking is disabled by a 't_fd' sequence when exiting 
>> "raw" mode. 
>> + If you would like to disable this feature, add the following to your 
>> .vimrc: 
>> + `set t_fd=` 
>> + `set t_fe=` 
>> + 
>> *termcap-colors* 
>> Note about colors: The 't_Co' option tells Vim the number of colors 
>> available. 
>> When it is non-zero, the 't_AB' and 't_AF' options are used to set the 
>> color. 
>> *** ../vim-8.2.2344/src/optiondefs.h 2020-08-11 21:58:12.585968185 +0200 
>> --- src/optiondefs.h 2021-01-14 17:20:23.946278238 +0100 
>> *************** 
>> *** 2957,2962 **** 
>> --- 2957,2964 ---- 
>> p_term("t_EC", T_CEC) 
>> p_term("t_EI", T_CEI) 
>> p_term("t_fs", T_FS) 
>> + p_term("t_fd", T_FD) 
>> + p_term("t_fe", T_FE) 
>> p_term("t_GP", T_CGP) 
>> p_term("t_IE", T_CIE) 
>> p_term("t_IS", T_CIS) 
>> *** ../vim-8.2.2344/src/term.c 2020-12-30 14:08:30.908689169 +0100 
>> --- src/term.c 2021-01-14 17:33:48.443716246 +0100 
>> *************** 
>> *** 196,201 **** 
>> --- 196,206 ---- 
>>
>> static int detected_8bit = FALSE; // detected 8-bit terminal 
>>
>> + #if (defined(UNIX) || defined(VMS)) 
>> + static int focus_mode = FALSE; // xterm's "focus reporting" 
>> availability 
>> + static int focus_state = FALSE; // TRUE if the terminal window gains 
>> focus 
>> + #endif 
>> + 
>> #ifdef FEAT_TERMRESPONSE 
>> // When the cursor shape was detected these values are used: 
>> // 1: block, 2: underline, 3: vertical bar 
>> *************** 
>> *** 908,913 **** 
>> --- 913,922 ---- 
>> {(int)KS_CRT, IF_EB("\033[23;2t", ESC_STR "[23;2t")}, 
>> {(int)KS_SSI, IF_EB("\033[22;1t", ESC_STR "[22;1t")}, 
>> {(int)KS_SRI, IF_EB("\033[23;1t", ESC_STR "[23;1t")}, 
>> + # if (defined(UNIX) || defined(VMS)) 
>> + {(int)KS_FD, IF_EB("\033[?1004l", ESC_STR "[?1004l")}, 
>> + {(int)KS_FE, IF_EB("\033[?1004h", ESC_STR "[?1004h")}, 
>> + # endif 
>>
>> {K_UP, IF_EB("\033O*A", ESC_STR "O*A")}, 
>> {K_DOWN, IF_EB("\033O*B", ESC_STR "O*B")}, 
>> *************** 
>> *** 2044,2049 **** 
>> --- 2053,2079 ---- 
>> set_mouse_termcode(KS_MOUSE, (char_u *)"\233M"); 
>> #endif 
>>
>> + #if (defined(UNIX) || defined(VMS)) 
>> + // focus reporting is supported by xterm compatible terminals and tmux. 
>> + if (use_xterm_like_mouse(term)) 
>> + { 
>> + char_u name[3]; 
>> + name[0] = (int)KS_EXTRA; 
>> + name[2] = NUL; 
>> + 
>> + // handle focus in event 
>> + name[1] = (int)KE_FOCUSGAINED; 
>> + add_termcode(name, (char_u *)"\033[I", FALSE); 
>> + 
>> + // handle focus out event 
>> + name[1] = (int)KE_FOCUSLOST; 
>> + add_termcode(name, (char_u *)"\033[O", FALSE); 
>> + 
>> + focus_mode = TRUE; 
>> + focus_state = TRUE; 
>> + } 
>> + #endif 
>> + 
>> #ifdef USE_TERM_CONSOLE 
>> // DEFAULT_TERM indicates that it is the machine console. 
>> if (STRCMP(term, DEFAULT_TERM) != 0) 
>> *************** 
>> *** 2519,2525 **** 
>> if (ch_log_output) 
>> { 
>> out_buf[len] = NUL; 
>> ! ch_log(NULL, "raw terminal output: \"%s\"", out_buf); 
>> ch_log_output = FALSE; 
>> } 
>> #endif 
>> --- 2549,2558 ---- 
>> if (ch_log_output) 
>> { 
>> out_buf[len] = NUL; 
>> ! ch_log(NULL, "raw %s output: \"%s\"", 
>> ! (gui.in_use && !gui.dying && !gui.starting) 
>> ! ? "GUI" : "terminal", 
>> ! out_buf); 
>> ch_log_output = FALSE; 
>> } 
>> #endif 
>> *************** 
>> *** 3582,3587 **** 
>> --- 3615,3627 ---- 
>> out_str(T_CTI); // start "raw" mode 
>> out_str(T_KS); // start "keypad transmit" mode 
>> out_str(T_BE); // enable bracketed paste mode 
>> + 
>> + #if (defined(UNIX) || defined(VMS)) 
>> + // enable xterm's focus reporting mode 
>> + if (focus_mode && *T_FE != NUL) 
>> + out_str(T_FE); 
>> + #endif 
>> + 
>> out_flush(); 
>> termcap_active = TRUE; 
>> screen_start(); // don't know where cursor is now 
>> *************** 
>> *** 3633,3638 **** 
>> --- 3673,3685 ---- 
>> #ifdef FEAT_JOB_CHANNEL 
>> ch_log_output = TRUE; 
>> #endif 
>> + 
>> + #if (defined(UNIX) || defined(VMS)) 
>> + // disable xterm's focus reporting mode 
>> + if (focus_mode && *T_FD != NUL) 
>> + out_str(T_FD); 
>> + #endif 
>> + 
>> out_str(T_BD); // disable bracketed paste mode 
>> out_str(T_KE); // stop "keypad transmit" mode 
>> out_flush(); 
>> *************** 
>> *** 5647,5652 **** 
>> --- 5694,5738 ---- 
>> # endif // !USE_ON_FLY_SCROLL 
>> #endif // FEAT_GUI 
>>
>> + #if (defined(UNIX) || defined(VMS)) 
>> + /* 
>> + * Handle FocusIn/FocusOut event sequences reported by XTerm. 
>> + * (CSI I/CSI O) 
>> + */ 
>> + if (focus_mode 
>> + # ifdef FEAT_GUI 
>> + && !gui.in_use 
>> + # endif 
>> + && key_name[0] == KS_EXTRA 
>> + ) 
>> + { 
>> + int did_aucmd = FALSE; 
>> + 
>> + if (key_name[1] == KE_FOCUSGAINED && !focus_state) 
>> + { 
>> + did_aucmd = apply_autocmds(EVENT_FOCUSGAINED, 
>> + NULL, NULL, FALSE, curbuf); 
>> + did_cursorhold = TRUE; 
>> + focus_state = TRUE; 
>> + key_name[1] = (int)KE_IGNORE; 
>> + } 
>> + else if (key_name[1] == KE_FOCUSLOST && focus_state) 
>> + { 
>> + did_aucmd = apply_autocmds(EVENT_FOCUSLOST, 
>> + NULL, NULL, FALSE, curbuf); 
>> + did_cursorhold = TRUE; 
>> + focus_state = FALSE; 
>> + key_name[1] = (int)KE_IGNORE; 
>> + } 
>> + if (did_aucmd && (State & (NORMAL | INSERT | TERMINAL))) 
>> + { 
>> + // in case a message was displayed: reposition the cursor 
>> + setcursor(); 
>> + out_flush(); 
>> + } 
>> + } 
>> + #endif 
>> + 
>> /* 
>> * Change <xHome> to <Home>, <xUp> to <Up>, etc. 
>> */ 
>> *** ../vim-8.2.2344/src/term.h 2020-05-31 16:41:04.646603340 +0200 
>> --- src/term.h 2021-01-14 17:20:23.946278238 +0100 
>> *************** 
>> *** 109,118 **** 
>> KS_CST, // save window title 
>> KS_CRT, // restore window title 
>> KS_SSI, // save icon text 
>> ! KS_SRI // restore icon text 
>> }; 
>>
>> ! #define KS_LAST KS_SRI 
>>
>> /* 
>> * the terminal capabilities are stored in this array 
>> --- 109,120 ---- 
>> KS_CST, // save window title 
>> KS_CRT, // restore window title 
>> KS_SSI, // save icon text 
>> ! KS_SRI, // restore icon text 
>> ! KS_FD, // disable focus event tracking 
>> ! KS_FE // enable focus event tracking 
>> }; 
>>
>> ! #define KS_LAST KS_FE 
>>
>> /* 
>> * the terminal capabilities are stored in this array 
>> *************** 
>> *** 212,217 **** 
>> --- 214,221 ---- 
>> #define T_CRT (TERM_STR(KS_CRT)) // restore window title 
>> #define T_SSI (TERM_STR(KS_SSI)) // save icon text 
>> #define T_SRI (TERM_STR(KS_SRI)) // restore icon text 
>> + #define T_FD (TERM_STR(KS_FD)) // disable focus event tracking 
>> + #define T_FE (TERM_STR(KS_FE)) // enable focus event tracking 
>>
>> typedef enum { 
>> TMODE_COOK, // terminal mode for external cmds and Ex mode 
>> *** ../vim-8.2.2344/src/version.c 2021-01-13 21:46:53.832589880 +0100 
>> --- src/version.c 2021-01-14 17:24:31.397508436 +0100 
>> *************** 
>> *** 752,753 **** 
>> --- 752,755 ---- 
>> { /* Add new patch number below this line */ 
>> + /**/ 
>> + 2345, 
>> /**/ 
>>
>> -- 
>> hundred-and-one symptoms of being an internet addict: 
>> 141. You'd rather go to http://www.weather.com/ than look out your 
>> window. 
>>
>> /// Bram Moolenaar -- br...@moolenaar.net -- http://www.Moolenaar.net 
>> \\\ 
>> /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ 
>> \\\ an exciting new programming language -- http://www.Zimbu.org /// 
>> \\\ help me help AIDS victims -- http://ICCF-Holland.org /// 
>>
>

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/350dbdf8-0942-427f-bdb4-70da35a51fa4n%40googlegroups.com.

Raspunde prin e-mail lui