Loading ...
Sorry, an error occurred while loading the content.

Re: Omnicomplete shows strange behavior when preview window is enabled

Expand Messages
  • Ben Fritz
    ... It is not a terminal issue, I see it on Windows gvim. I see the issue with syntax folding enabled and closed folds in the window; I do not use cursorcolumn
    Message 1 of 21 , Feb 7, 2013
    • 0 Attachment
      On Thursday, February 7, 2013 10:23:47 AM UTC-6, Benjamin Isbarn wrote:
      > It might be an issue with Konsole. I use Konsole on all my machines. I
      >
      > downloaded xterm and tried it and it worked, but when i resized the window
      >
      > (the xterm window) i had the same issue.
      >

      It is not a terminal issue, I see it on Windows gvim. I see the issue with
      syntax folding enabled and closed folds in the window; I do not use
      cursorcolumn except for a quick mapping to toggle it on when I want to quickly
      find the cursor, then I toggle it back off.

      Today I finally had a reproducible situation where I see the issue, so I dug
      through my .vimrc to find the lines causing the problem.

      Here are the lines:

      " get rid of scrolloff option for certain buffers like the quickfix and
      " preview windows
      autocmd BufEnter *
      \ if (&ft=='qf' || &previewwindow || (bufname('%') ==# "__Tag_List__" || bufname("%")==?'__Tagbar__')) && !exists('s:scrolloff_sav') |
      \ let s:scrolloff_sav=&scrolloff |
      \ set scrolloff=0 |
      \ endif
      " File type will not be set on the first BufEnter
      autocmd Filetype qf
      \ if !exists('s:scrolloff_sav') |
      \ let s:scrolloff_sav=&scrolloff |
      \ set scrolloff=0 |
      \ endif
      autocmd BufLeave *
      \ if (&ft=='qf' || &previewwindow || (bufname('%') ==# "__Tag_List__" || bufname("%")==?'__Tagbar__')) && exists('s:scrolloff_sav') |
      \ let &scrolloff=s:scrolloff_sav |
      \ unlet s:scrolloff_sav |
      \ endif

      A few relevant settings:

      completeopt=menuone,preview
      omnifunc=ccomplete#Complete
      foldmethod=syntax
      scrolloff=5

      If I use the following procedure with the above autocmds in my .vimrc, I see the
      popup menu flash briefly and go invisible. The preview window gets updated
      properly as I press the <Up> and <Down> buttons as if the menu was visible.
      <C-N> and <C-P> work as they are supposed to. But the popup menu stays
      inivisible.

      1. Edit a C file (the one I used was a proprietary code file for my employer, I
      can't share it, sorry).
      2. Go to a place in the C file in a nested fold (in my code, it is 5 levels
      deep).
      3. Close all folds with zM
      4. Show the cursor line with zv
      5. Type a partial match and press <C-X><C-O> to start omnicompletion (which
      includes tags, I believe).

      Now I see the issue or not, depending on my autocmds above.

      I think what may be happening is that my autocmds are adjusting scrolloff on
      BufEnter/BufLeave, which triggers because the preview window is most likely
      entered to update it to show the completion menu info. When scrolloff is
      updated, the window positions may change. Perhaps changing window scroll
      position via autocmd while the completion menu is up causes problems.

      --
      --
      You received this message from the "vim_use" 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_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Ben Fritz
      ... I tried but was unable to create a minimal configuration based on these setting that would reproduce the issue. I ll look into it some more this weekend at
      Message 2 of 21 , Feb 8, 2013
      • 0 Attachment
        On Thursday, February 7, 2013 12:24:25 PM UTC-6, Ben Fritz wrote:
        >
        > " get rid of scrolloff option for certain buffers like the quickfix and
        > " preview windows
        > autocmd BufEnter *
        > \ if (&ft=='qf' || &previewwindow || (bufname('%') ==# "__Tag_List__" || bufname("%")==?'__Tagbar__')) && !exists('s:scrolloff_sav') |
        > \ let s:scrolloff_sav=&scrolloff |
        > \ set scrolloff=0 |
        > \ endif
        > " File type will not be set on the first BufEnter
        > autocmd Filetype qf
        > \ if !exists('s:scrolloff_sav') |
        > \ let s:scrolloff_sav=&scrolloff |
        > \ set scrolloff=0 |
        > \ endif
        > autocmd BufLeave *
        > \ if (&ft=='qf' || &previewwindow || (bufname('%') ==# "__Tag_List__" || bufname("%")==?'__Tagbar__')) && exists('s:scrolloff_sav') |
        > \ let &scrolloff=s:scrolloff_sav |
        > \ unlet s:scrolloff_sav |
        > \ endif
        >
        > A few relevant settings:
        >
        > completeopt=menuone,preview
        > omnifunc=ccomplete#Complete
        > foldmethod=syntax
        > scrolloff=5
        >

        I tried but was unable to create a minimal configuration based on these setting that would reproduce the issue. I'll look into it some more this weekend at home.

        --
        --
        You received this message from the "vim_use" 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_use" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Benjamin Fritz
        The attached vimrc.vim file (when used as the .vimrc, with no non-standard plugins), can reproduce the issue on the attached test.c file with the attached tags
        Message 3 of 21 , Feb 8, 2013
        • 0 Attachment
          The attached vimrc.vim file (when used as the .vimrc, with no
          non-standard plugins), can reproduce the issue on the attached test.c
          file with the attached tags file.

          Open the test.c file, go to line 62 (return 3), and insert a new line
          above it. Type foo=Fun<C-X><C-O> to get the completion menu. Then
          press the down or up arrows to navigate the completion menu.

          I'm not really sure why I am setting fillchars within my foldtext
          function but that seems to be one necessary component in this config
          at least.

          --
          --
          You received this message from the "vim_use" 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_use" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        • Benjamin Fritz
          ... gmail is being a huge pain. tags file attached...again. -- -- You received this message from the vim_use maillist. Do not top-post! Type your reply below
          Message 4 of 21 , Feb 8, 2013
          • 0 Attachment
            On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
            > The attached vimrc.vim file (when used as the .vimrc, with no
            > non-standard plugins), can reproduce the issue on the attached test.c
            > file with the attached tags file.
            >

            gmail is being a huge pain. tags file attached...again.

            --
            --
            You received this message from the "vim_use" 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_use" group.
            To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
            For more options, visit https://groups.google.com/groups/opt_out.
          • Ben Fritz
            ... OK this is getting ridiculous. It s attached to the email. Generate your own tags or copy-paste the following into a new file: !_TAG_FILE_FORMAT 2
            Message 5 of 21 , Feb 8, 2013
            • 0 Attachment
              On Friday, February 8, 2013 9:37:18 PM UTC-6, Ben Fritz wrote:
              > On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
              >
              > > The attached vimrc.vim file (when used as the .vimrc, with no
              >
              > > non-standard plugins), can reproduce the issue on the attached test.c
              >
              > > file with the attached tags file.
              >
              > >
              >
              >
              >
              > gmail is being a huge pain. tags file attached...again.

              OK this is getting ridiculous. It's attached to the email. Generate your own tags or copy-paste the following into a new file:

              !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
              !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
              !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@.../
              !_TAG_PROGRAM_NAME Exuberant Ctags //
              !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
              !_TAG_PROGRAM_VERSION 5.8 //
              Func1 .\test.c ?^int Func1(void)$?;" function signature:(void)
              Func2 .\test.c ?^int Func2(void)$?;" function signature:(void)
              Func3 .\test.c ?^int Func3(void)$?;" function signature:(void)
              Func4 .\test.c ?^int Func4(void)$?;" function signature:(void)
              Func5 .\test.c ?^int Func5(void)$?;" function signature:(void)
              Func6 .\test.c ?^int Func6(void)$?;" function signature:(void)
              Func7 .\test.c ?^int Func7(void)$?;" function signature:(void)
              Func8 .\test.c ?^int Func8(void)$?;" function signature:(void)
              FuncCall .\test.c ?^int FuncCall(int a, int b, int c, int d, int e, int f, int g)$?;" function signature:(int a, int b, int c, int d, int e, int f, int g)
              test.c .\test.c 1;" file

              --
              --
              You received this message from the "vim_use" 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_use" group.
              To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
              For more options, visit https://groups.google.com/groups/opt_out.
            • Christian Brabandt
              Hi Ben! ... Interesting. On my main develop machine, using Ubuntu 12.10 with intel driver, this does not happen, but on my desktop Ubuntu 12.04 with vesa
              Message 6 of 21 , Feb 12, 2013
              • 0 Attachment
                Hi Ben!

                On Fr, 08 Feb 2013, Ben Fritz wrote:

                > On Friday, February 8, 2013 9:37:18 PM UTC-6, Ben Fritz wrote:
                > > On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
                > >
                > > > The attached vimrc.vim file (when used as the .vimrc, with no
                > >
                > > > non-standard plugins), can reproduce the issue on the attached test.c
                > >
                > > > file with the attached tags file.
                > >
                > > >
                > >
                > >
                > >
                > > gmail is being a huge pain. tags file attached...again.
                >
                > OK this is getting ridiculous. It's attached to the email. Generate your own tags or copy-paste the following into a new file:
                >
                > !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
                > !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
                > !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@.../
                > !_TAG_PROGRAM_NAME Exuberant Ctags //
                > !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
                > !_TAG_PROGRAM_VERSION 5.8 //
                > Func1 .\test.c ?^int Func1(void)$?;" function signature:(void)
                > Func2 .\test.c ?^int Func2(void)$?;" function signature:(void)
                > Func3 .\test.c ?^int Func3(void)$?;" function signature:(void)
                > Func4 .\test.c ?^int Func4(void)$?;" function signature:(void)
                > Func5 .\test.c ?^int Func5(void)$?;" function signature:(void)
                > Func6 .\test.c ?^int Func6(void)$?;" function signature:(void)
                > Func7 .\test.c ?^int Func7(void)$?;" function signature:(void)
                > Func8 .\test.c ?^int Func8(void)$?;" function signature:(void)
                > FuncCall .\test.c ?^int FuncCall(int a, int b, int c, int d, int e, int f, int g)$?;" function signature:(int a, int b, int c, int d, int e, int f, int g)
                > test.c .\test.c 1;" file
                >

                Interesting. On my main develop machine, using Ubuntu 12.10 with intel
                driver, this does not happen, but on my desktop Ubuntu 12.04 with vesa
                driver I can reproduce the problem. I see, if I can debug it further.

                Mit freundlichen Grüßen
                Christian
                --
                Wie man sein Kind nicht nennen sollte:
                Jeff Etage

                --
                --
                You received this message from the "vim_use" 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_use" group.
                To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
                For more options, visit https://groups.google.com/groups/opt_out.
              • Ben Fritz
                ... This is off-topic for the problem at hand (disappearing completion menu), but I went back and looked at my main config to figure out why I was setting
                Message 7 of 21 , Feb 12, 2013
                • 0 Attachment
                  On Friday, February 8, 2013 9:32:45 PM UTC-6, Ben Fritz wrote:
                  >
                  > I'm not really sure why I am setting fillchars within my foldtext
                  >
                  > function but that seems to be one necessary component in this config
                  >
                  > at least.

                  This is off-topic for the problem at hand (disappearing completion menu), but I went back and looked at my main config to figure out why I was setting fillchars at all (obviously it seems pointless in the toy example .vimrc I posted).

                  In my real config, my foldtext function switches on a buffer-local variable and the value of the 'diff' option to determine which of three different styles to use. I can't really think of a better place to put it. For now I think I'll put it into a CursorHold event rather than keeping it in the foldtext expression.

                  --
                  --
                  You received this message from the "vim_use" 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_use" group.
                  To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
                  For more options, visit https://groups.google.com/groups/opt_out.
                • Christian Brabandt
                  ... Ben, Benjamin, can you check, whether this patch fixes the problem for you? diff -r ba8835947b8b src/screen.c ... +++ b/src/screen.c Tue Feb 12
                  Message 8 of 21 , Feb 12, 2013
                  • 0 Attachment
                    On Fr, 08 Feb 2013, Ben Fritz wrote:

                    > On Friday, February 8, 2013 9:37:18 PM UTC-6, Ben Fritz wrote:
                    > > On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
                    > >
                    > > > The attached vimrc.vim file (when used as the .vimrc, with no
                    > >
                    > > > non-standard plugins), can reproduce the issue on the attached test.c
                    > >
                    > > > file with the attached tags file.
                    > >

                    Ben, Benjamin,
                    can you check, whether this patch fixes the problem for you?

                    diff -r ba8835947b8b src/screen.c
                    --- a/src/screen.c Wed Feb 06 19:58:43 2013 +0100
                    +++ b/src/screen.c Tue Feb 12 22:28:06 2013 +0100
                    @@ -545,6 +545,10 @@
                    }
                    #endif
                    }
                    +#ifdef FEAT_INS_EXPAND
                    + if (pum_visible()) /* win_update() might have overwritten the popup menu */
                    + pum_redraw();
                    +#endif
                    #if defined(FEAT_SEARCH_EXTRA)
                    end_search_hl();
                    #endif

                    Bram, I think, this patch fixes an issue, that the completion menu is
                    not correctly displayed when the preview window is used (and the windows
                    are scrolled). It might be possible, that it also fixes those issues
                    from the todo list:

                    ,----
                    | popup completion menu closes quickly when there is a fold in the buffer. (Jan
                    | Christoph Ebersbach, 2011 Jul 3)
                    `----

                    ,----
                    | Completion menu disappears when using 'cursorcolumn'. (Sven-Hendrik Haase,
                    | 2011 May 23)
                    `----

                    But I am not sure, as reproducing the issue seems quite complicated (see
                    the long thread on vim_use about how to reproduce it). Do you have more
                    infos how to reproduce those issues?

                    regards,
                    Christian

                    --
                    --
                    You received this message from the "vim_use" 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_use" group.
                    To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
                    For more options, visit https://groups.google.com/groups/opt_out.
                  • Benjamin Fritz
                    ... Yes, this patch works, at least for my toy test case! Thanks! I don t run self-compiled Vim at work on Windows (at least not yet). But it certainly acts
                    Message 9 of 21 , Feb 12, 2013
                    • 0 Attachment
                      On Tue, Feb 12, 2013 at 3:37 PM, Christian Brabandt <cblists@...> wrote:
                      >
                      > On Fr, 08 Feb 2013, Ben Fritz wrote:
                      >
                      >> On Friday, February 8, 2013 9:37:18 PM UTC-6, Ben Fritz wrote:
                      >> > On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
                      >> >
                      >> > > The attached vimrc.vim file (when used as the .vimrc, with no
                      >> >
                      >> > > non-standard plugins), can reproduce the issue on the attached test.c
                      >> >
                      >> > > file with the attached tags file.
                      >> >
                      >
                      > Ben, Benjamin,
                      > can you check, whether this patch fixes the problem for you?
                      >
                      > diff -r ba8835947b8b src/screen.c
                      > --- a/src/screen.c Wed Feb 06 19:58:43 2013 +0100
                      > +++ b/src/screen.c Tue Feb 12 22:28:06 2013 +0100
                      > @@ -545,6 +545,10 @@
                      > }
                      > #endif
                      > }
                      > +#ifdef FEAT_INS_EXPAND
                      > + if (pum_visible()) /* win_update() might have overwritten the popup menu */
                      > + pum_redraw();
                      > +#endif
                      > #if defined(FEAT_SEARCH_EXTRA)
                      > end_search_hl();
                      > #endif
                      >

                      Yes, this patch works, at least for my toy test case! Thanks!

                      I don't run self-compiled Vim at work on Windows (at least not yet).
                      But it certainly acts like the same issue I've reproduced with my toy
                      example. I did get the toy example by paring down my own Vim config
                      after all.

                      > Bram, I think, this patch fixes an issue, that the completion menu is
                      > not correctly displayed when the preview window is used (and the windows
                      > are scrolled). It might be possible, that it also fixes those issues
                      > from the todo list:
                      >
                      > ,----
                      > | popup completion menu closes quickly when there is a fold in the buffer. (Jan
                      > | Christoph Ebersbach, 2011 Jul 3)
                      > `----
                      >

                      I'm pretty sure it will fix this issue, since that's what I thought
                      was affecting me.

                      > ,----
                      > | Completion menu disappears when using 'cursorcolumn'. (Sven-Hendrik Haase,
                      > | 2011 May 23)
                      > `----
                      >

                      This one I've never seen first-hand.

                      > But I am not sure, as reproducing the issue seems quite complicated (see
                      > the long thread on vim_use about how to reproduce it). Do you have more
                      > infos how to reproduce those issues?
                      >
                      > regards,
                      > Christian

                      --
                      --
                      You received this message from the "vim_use" 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_use" group.
                      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
                      For more options, visit https://groups.google.com/groups/opt_out.
                    • Bram Moolenaar
                      ... It s a bit of a brute force solution but I suppose it should be OK. ... Not much. I ll remove those remarks and await someone reporting a problem again,
                      Message 10 of 21 , Feb 13, 2013
                      • 0 Attachment
                        Christian Brabandt wrote:

                        > On Fr, 08 Feb 2013, Ben Fritz wrote:
                        >
                        > > On Friday, February 8, 2013 9:37:18 PM UTC-6, Ben Fritz wrote:
                        > > > On Fri, Feb 8, 2013 at 9:32 PM, Benjamin Fritz <fritzophrenic@...> wrote:
                        > > >
                        > > > > The attached vimrc.vim file (when used as the .vimrc, with no
                        > > >
                        > > > > non-standard plugins), can reproduce the issue on the attached test.c
                        > > >
                        > > > > file with the attached tags file.
                        > > >
                        >
                        > Ben, Benjamin,
                        > can you check, whether this patch fixes the problem for you?
                        >
                        > diff -r ba8835947b8b src/screen.c
                        > --- a/src/screen.c Wed Feb 06 19:58:43 2013 +0100
                        > +++ b/src/screen.c Tue Feb 12 22:28:06 2013 +0100
                        > @@ -545,6 +545,10 @@
                        > }
                        > #endif
                        > }
                        > +#ifdef FEAT_INS_EXPAND
                        > + if (pum_visible()) /* win_update() might have overwritten the popup menu */
                        > + pum_redraw();
                        > +#endif
                        > #if defined(FEAT_SEARCH_EXTRA)
                        > end_search_hl();
                        > #endif
                        >
                        > Bram, I think, this patch fixes an issue, that the completion menu is
                        > not correctly displayed when the preview window is used (and the windows
                        > are scrolled). It might be possible, that it also fixes those issues
                        > from the todo list:

                        It's a bit of a brute force solution but I suppose it should be OK.

                        > ,----
                        > | popup completion menu closes quickly when there is a fold in the buffer. (Jan
                        > | Christoph Ebersbach, 2011 Jul 3)
                        > `----
                        >
                        > ,----
                        > | Completion menu disappears when using 'cursorcolumn'. (Sven-Hendrik Haase,
                        > | 2011 May 23)
                        > `----
                        >
                        > But I am not sure, as reproducing the issue seems quite complicated (see
                        > the long thread on vim_use about how to reproduce it). Do you have more
                        > infos how to reproduce those issues?

                        Not much. I'll remove those remarks and await someone reporting a
                        problem again, if there still is a problem.

                        --
                        Dogs must have a permit signed by the mayor in order to congregate in groups
                        of three or more on private property.
                        [real standing law in Oklahoma, United States of America]

                        /// Bram Moolenaar -- Bram@... -- 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_use" 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_use" group.
                        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
                        For more options, visit https://groups.google.com/groups/opt_out.
                      Your message has been successfully submitted and would be delivered to recipients shortly.