forked from aniani/vim
patch 8.1.1905: cannot set all properties of the info popup
Problem: Cannot set all properties of the info popup. Solution: Add popup_findinfo(). Rename popup_getpreview() to popup_findpreview().
This commit is contained in:
parent
258cef59d8
commit
c7c5f10a36
@ -289,6 +289,20 @@ popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
|
|||||||
See the example here: |popup_dialog-example|
|
See the example here: |popup_dialog-example|
|
||||||
|
|
||||||
|
|
||||||
|
popup_findinfo() *popup_findinfo()*
|
||||||
|
Get the |window-ID| for the popup info window, as it used by
|
||||||
|
the popup menu. See |complete-popup|. The info popup is
|
||||||
|
hidden when not used, it can be deleted with |popup_clear()|
|
||||||
|
and |popup_close()|.
|
||||||
|
Return zero if there is none.
|
||||||
|
|
||||||
|
|
||||||
|
popup_findpreview() *popup_findpreview()*
|
||||||
|
Get the |window-ID| for the popup preview window.
|
||||||
|
Return zero if there is none.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
popup_getoptions({id}) *popup_getoptions()*
|
popup_getoptions({id}) *popup_getoptions()*
|
||||||
Return the {options} for popup {id} in a Dict.
|
Return the {options} for popup {id} in a Dict.
|
||||||
A zero value means the option was not set. For "zindex" the
|
A zero value means the option was not set. For "zindex" the
|
||||||
@ -336,10 +350,6 @@ popup_getpos({id}) *popup_getpos()*
|
|||||||
|
|
||||||
If popup window {id} is not found an empty Dict is returned.
|
If popup window {id} is not found an empty Dict is returned.
|
||||||
|
|
||||||
popup_getpreview() *popup_getpreview()*
|
|
||||||
Get the |window-ID| for the popup preview window.
|
|
||||||
Return zero if there is none.
|
|
||||||
|
|
||||||
|
|
||||||
popup_hide({id}) *popup_hide()*
|
popup_hide({id}) *popup_hide()*
|
||||||
If {id} is a displayed popup, hide it now. If the popup has a
|
If {id} is a displayed popup, hide it now. If the popup has a
|
||||||
|
@ -702,9 +702,10 @@ static funcentry_T global_functions[] =
|
|||||||
{"popup_dialog", 2, 2, 0, f_popup_dialog},
|
{"popup_dialog", 2, 2, 0, f_popup_dialog},
|
||||||
{"popup_filter_menu", 2, 2, 0, f_popup_filter_menu},
|
{"popup_filter_menu", 2, 2, 0, f_popup_filter_menu},
|
||||||
{"popup_filter_yesno", 2, 2, 0, f_popup_filter_yesno},
|
{"popup_filter_yesno", 2, 2, 0, f_popup_filter_yesno},
|
||||||
|
{"popup_findinfo", 0, 0, 0, f_popup_findinfo},
|
||||||
|
{"popup_findpreview", 0, 0, 0, f_popup_findpreview},
|
||||||
{"popup_getoptions", 1, 1, 0, f_popup_getoptions},
|
{"popup_getoptions", 1, 1, 0, f_popup_getoptions},
|
||||||
{"popup_getpos", 1, 1, 0, f_popup_getpos},
|
{"popup_getpos", 1, 1, 0, f_popup_getpos},
|
||||||
{"popup_getpreview", 0, 0, 0, f_popup_getpreview},
|
|
||||||
{"popup_hide", 1, 1, 0, f_popup_hide},
|
{"popup_hide", 1, 1, 0, f_popup_hide},
|
||||||
{"popup_locate", 2, 2, 0, f_popup_locate},
|
{"popup_locate", 2, 2, 0, f_popup_locate},
|
||||||
{"popup_menu", 2, 2, 0, f_popup_menu},
|
{"popup_menu", 2, 2, 0, f_popup_menu},
|
||||||
|
@ -5154,7 +5154,8 @@ prepare_tagpreview(
|
|||||||
else if (use_popup)
|
else if (use_popup)
|
||||||
{
|
{
|
||||||
wp = popup_find_info_window();
|
wp = popup_find_info_window();
|
||||||
// TODO: set position
|
if (wp != NULL)
|
||||||
|
popup_show(wp);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
# endif
|
# endif
|
||||||
|
@ -5808,7 +5808,7 @@ ex_pclose(exarg_T *eap)
|
|||||||
}
|
}
|
||||||
# ifdef FEAT_TEXT_PROP
|
# ifdef FEAT_TEXT_PROP
|
||||||
// Also when 'previewpopup' is empty, it might have been cleared.
|
// Also when 'previewpopup' is empty, it might have been cleared.
|
||||||
popup_close_preview(FALSE);
|
popup_close_preview();
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -923,8 +923,8 @@ pum_set_selected(int n, int repeat UNUSED)
|
|||||||
}
|
}
|
||||||
#if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
|
#if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
|
||||||
if (!has_info)
|
if (!has_info)
|
||||||
// close any popup info window
|
// hide any popup info window
|
||||||
popup_close_preview(TRUE);
|
popup_hide_info();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!resized)
|
if (!resized)
|
||||||
@ -944,8 +944,8 @@ pum_undisplay(void)
|
|||||||
redraw_tabline = TRUE;
|
redraw_tabline = TRUE;
|
||||||
status_redraw_all();
|
status_redraw_all();
|
||||||
#if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
|
#if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
|
||||||
// close any popup info window
|
// hide any popup info window
|
||||||
popup_close_preview(TRUE);
|
popup_hide_info();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2058,6 +2058,18 @@ f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
popup_close_and_callback(wp, &argvars[1]);
|
popup_close_and_callback(wp, &argvars[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
popup_hide(win_T *wp)
|
||||||
|
{
|
||||||
|
if ((wp->w_popup_flags & POPF_HIDDEN) == 0)
|
||||||
|
{
|
||||||
|
wp->w_popup_flags |= POPF_HIDDEN;
|
||||||
|
--wp->w_buffer->b_nwindows;
|
||||||
|
redraw_all_later(NOT_VALID);
|
||||||
|
popup_mask_refresh = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* popup_hide({id})
|
* popup_hide({id})
|
||||||
*/
|
*/
|
||||||
@ -2067,10 +2079,17 @@ f_popup_hide(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
int id = (int)tv_get_number(argvars);
|
int id = (int)tv_get_number(argvars);
|
||||||
win_T *wp = find_popup_win(id);
|
win_T *wp = find_popup_win(id);
|
||||||
|
|
||||||
if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) == 0)
|
if (wp != NULL)
|
||||||
|
popup_hide(wp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
popup_show(win_T *wp)
|
||||||
|
{
|
||||||
|
if ((wp->w_popup_flags & POPF_HIDDEN) != 0)
|
||||||
{
|
{
|
||||||
wp->w_popup_flags |= POPF_HIDDEN;
|
wp->w_popup_flags &= ~POPF_HIDDEN;
|
||||||
--wp->w_buffer->b_nwindows;
|
++wp->w_buffer->b_nwindows;
|
||||||
redraw_all_later(NOT_VALID);
|
redraw_all_later(NOT_VALID);
|
||||||
popup_mask_refresh = TRUE;
|
popup_mask_refresh = TRUE;
|
||||||
}
|
}
|
||||||
@ -2085,13 +2104,8 @@ f_popup_show(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
int id = (int)tv_get_number(argvars);
|
int id = (int)tv_get_number(argvars);
|
||||||
win_T *wp = find_popup_win(id);
|
win_T *wp = find_popup_win(id);
|
||||||
|
|
||||||
if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) != 0)
|
if (wp != NULL)
|
||||||
{
|
popup_show(wp);
|
||||||
wp->w_popup_flags &= ~POPF_HIDDEN;
|
|
||||||
++wp->w_buffer->b_nwindows;
|
|
||||||
redraw_all_later(NOT_VALID);
|
|
||||||
popup_mask_refresh = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3314,7 +3328,15 @@ popup_find_info_window(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
f_popup_getpreview(typval_T *argvars UNUSED, typval_T *rettv)
|
f_popup_findinfo(typval_T *argvars UNUSED, typval_T *rettv)
|
||||||
|
{
|
||||||
|
win_T *wp = popup_find_info_window();
|
||||||
|
|
||||||
|
rettv->vval.v_number = wp == NULL ? 0 : wp->w_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
f_popup_findpreview(typval_T *argvars UNUSED, typval_T *rettv)
|
||||||
{
|
{
|
||||||
win_T *wp = popup_find_preview_window();
|
win_T *wp = popup_find_preview_window();
|
||||||
|
|
||||||
@ -3355,10 +3377,13 @@ popup_create_preview_window(int info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_QUICKFIX) || defined(PROTO)
|
#if defined(FEAT_QUICKFIX) || defined(PROTO)
|
||||||
|
/*
|
||||||
|
* Close any preview popup.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
popup_close_preview(int info)
|
popup_close_preview(void)
|
||||||
{
|
{
|
||||||
win_T *wp = info ? popup_find_info_window() : popup_find_preview_window();
|
win_T *wp = popup_find_preview_window();
|
||||||
|
|
||||||
if (wp != NULL)
|
if (wp != NULL)
|
||||||
{
|
{
|
||||||
@ -3369,6 +3394,18 @@ popup_close_preview(int info)
|
|||||||
popup_close_and_callback(wp, &res);
|
popup_close_and_callback(wp, &res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Hide the info popup.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
popup_hide_info(void)
|
||||||
|
{
|
||||||
|
win_T *wp = popup_find_info_window();
|
||||||
|
|
||||||
|
if (wp != NULL)
|
||||||
|
popup_hide(wp);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -27,6 +27,7 @@ void f_popup_menu(typval_T *argvars, typval_T *rettv);
|
|||||||
void f_popup_notification(typval_T *argvars, typval_T *rettv);
|
void f_popup_notification(typval_T *argvars, typval_T *rettv);
|
||||||
void f_popup_close(typval_T *argvars, typval_T *rettv);
|
void f_popup_close(typval_T *argvars, typval_T *rettv);
|
||||||
void f_popup_hide(typval_T *argvars, typval_T *rettv);
|
void f_popup_hide(typval_T *argvars, typval_T *rettv);
|
||||||
|
void popup_show(win_T *wp);
|
||||||
void f_popup_show(typval_T *argvars, typval_T *rettv);
|
void f_popup_show(typval_T *argvars, typval_T *rettv);
|
||||||
void f_popup_settext(typval_T *argvars, typval_T *rettv);
|
void f_popup_settext(typval_T *argvars, typval_T *rettv);
|
||||||
void popup_close(int id);
|
void popup_close(int id);
|
||||||
@ -49,9 +50,11 @@ int set_ref_in_popups(int copyID);
|
|||||||
win_T *popup_find_preview_window(void);
|
win_T *popup_find_preview_window(void);
|
||||||
int popup_is_popup(win_T *wp);
|
int popup_is_popup(win_T *wp);
|
||||||
win_T *popup_find_info_window(void);
|
win_T *popup_find_info_window(void);
|
||||||
void f_popup_getpreview(typval_T *argvars, typval_T *rettv);
|
void f_popup_findinfo(typval_T *argvars, typval_T *rettv);
|
||||||
|
void f_popup_findpreview(typval_T *argvars, typval_T *rettv);
|
||||||
int popup_create_preview_window(int info);
|
int popup_create_preview_window(int info);
|
||||||
void popup_close_preview(int info);
|
void popup_close_preview(void);
|
||||||
|
void popup_hide_info(void);
|
||||||
void popup_set_title(win_T *wp);
|
void popup_set_title(win_T *wp);
|
||||||
void popup_update_preview_title(void);
|
void popup_update_preview_title(void);
|
||||||
/* vim: set ft=c : */
|
/* vim: set ft=c : */
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|x| @7| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
|x| @7| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
||||||
|x| @7| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
|x| @7| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
||||||
|x| @7| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
|x| @7| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
|
||||||
|x| @7| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0&#e0e0e08|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0#0000000#ffffff0@27
|
|x| @7| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffff4012|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0&#ffffff0@27
|
||||||
|t|e|s|t| |t|e|x|t| |a|w|o|r|d> @59
|
|t|e|s|t| |t|e|x|t| |a|w|o|r|d> @59
|
||||||
|~+0#4040ff13&| @73
|
|~+0#4040ff13&| @73
|
||||||
|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26
|
|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26
|
||||||
|
@ -2162,7 +2162,7 @@ func Test_previewpopup()
|
|||||||
call term_sendkeys(buf, "/another\<CR>\<C-W>}")
|
call term_sendkeys(buf, "/another\<CR>\<C-W>}")
|
||||||
call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_2', {})
|
call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_2', {})
|
||||||
|
|
||||||
call term_sendkeys(buf, ":call popup_move(popup_getpreview(), #{col: 15})\<CR>")
|
call term_sendkeys(buf, ":call popup_move(popup_findpreview(), #{col: 15})\<CR>")
|
||||||
call term_sendkeys(buf, ":\<CR>")
|
call term_sendkeys(buf, ":\<CR>")
|
||||||
call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_3', {})
|
call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_3', {})
|
||||||
|
|
||||||
@ -2245,6 +2245,10 @@ func Get_popupmenu_lines()
|
|||||||
\ }
|
\ }
|
||||||
endfunc
|
endfunc
|
||||||
call setline(1, 'text text text text text text text ')
|
call setline(1, 'text text text text text text text ')
|
||||||
|
func ChangeColor()
|
||||||
|
let id = popup_findinfo()
|
||||||
|
call popup_setoptions(id, #{highlight: 'InfoPopup'})
|
||||||
|
endfunc
|
||||||
END
|
END
|
||||||
return lines
|
return lines
|
||||||
endfunc
|
endfunc
|
||||||
@ -2313,6 +2317,7 @@ func Test_popupmenu_info_align_menu()
|
|||||||
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_2', {})
|
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_2', {})
|
||||||
|
|
||||||
call term_sendkeys(buf, "\<Esc>")
|
call term_sendkeys(buf, "\<Esc>")
|
||||||
|
call term_sendkeys(buf, ":call ChangeColor()\<CR>")
|
||||||
call term_sendkeys(buf, ":call setline(2, ['x']->repeat(10))\<CR>")
|
call term_sendkeys(buf, ":call setline(2, ['x']->repeat(10))\<CR>")
|
||||||
call term_sendkeys(buf, "Gotest text test text\<C-X>\<C-U>")
|
call term_sendkeys(buf, "Gotest text test text\<C-X>\<C-U>")
|
||||||
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_3', {})
|
call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_3', {})
|
||||||
|
@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1905,
|
||||||
/**/
|
/**/
|
||||||
1904,
|
1904,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user