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

Re: How to get updated winwidth() after :set guifont ?

Expand Messages
  • Tony Mechelynck
    I m redirecting this thread to the vim_mac group and adding Björn to the CC. ... 7.3.353 ... -- You received this message from the vim_mac maillist. Do not
    Message 1 of 5 , Jan 2, 2012
    • 0 Attachment
      I'm redirecting this thread to the vim_mac group and adding Björn to the CC.

      On 02/01/12 03:33, Zhao Cai wrote:
      >> On 01/01/12 16:37, Zhao Cai wrote:
      >>> Problem: Right after `set guifont=…`, `winwidth()` returns the old win width instead of the new width which would be changed by new guifont size.
      >>>
      >>> I tried to call `redraw` between but it does not work.
      >>>
      >>> Any suggestion? Thanks.
      >>>
      >>> - Zhao
      >>>
      >>
      >> Experiments here show the following (while typing ex-commands manually in gvim 7.3.390 with GTK2/Gnome2 GUI):
      >>
      >> If the GUI is maximized (truly maximized, not just with :set lines=999 columns=9999 but by clicking the Maximize menu or widget), it is anchored to the screen borders; in that case setting a smaller font will increase 'lines', 'columns' and also winwidth(0)
      >>
      >> If the GUI is not truly maximized, then setting a smaller font will keep 'lines' and 'columns' unchanged and reduce the pixel size of the GUI. In that case winwidth(0) is also kept unchanged.
      >>
      >> Trying to set 'lines' or 'columns' to a value bigger than the available screen space (also by increasing the 'guifont' size) will cause Vim to reduce 'lines' and 'columns' to something no bigger than what is now available onscreen. In this case winwidth(0) may also get reduced.
      >>
      >> With no vertical splits present, I always see winwidth(0) ==&columns
      >
      > Thanks for your answer!
      >
      >> If you see something else, please answer the following:
      >>
      >> - Which GUI flavour? (macvim, GTK2, Motif, Windows, …)
      > MacVim
      >> - Which Vim version and patch level?
      > 7.3 (2010 Aug 15, compiled Nov 10 2011 17:45:40)
      >> - Compiled by yourself (from which sources) or downloaded precompiled (from where)?
      > Precompiled newest snapshot
      >> - Exact steps to reproduce; actual results; expected results
      >
      > I just retested a few more times. The problem happens only when I use mac lion's native full screen. For normal full screen, the winwidth function works just fine.
      >
      > Command I use: `let&guifont = 'Bitstream Vera Sans Mono:h18' | echomsg winwidth(0)`
      >
      >
      >
      > Detailed version info
      > ```
      > :version
      > VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 10 2011 17:45:40)
      > MacOS X (unix) version
      > Included patches: 1-353

      7.3.353

      > Compiled by Bjorn Winckler<bjorn.winckler@...>
      > Huge version with MacVim GUI. Features included (+) or not (-):
      > +arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent +clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope +cursorbind
      > +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +fork() +fullscreen -gettext
      > -hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse +mouseshape +mouse_dec -mouse_gpm
      > -mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +mouse_urxvt +multi_byte +multi_lang -mzscheme +netbeans_intg +odbeditor +path_extra +perl +persistent_undo +postscript +printer +profile
      > +python -python3 +quickfix +reltime +rightleft +ruby +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo
      > +termresponse +textobjects +title +toolbar +transparency +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset +xim
      > -xsmp -xterm_clipboard -xterm_save
      > system vimrc file: "$VIM/vimrc"
      > user vimrc file: "$HOME/.vimrc"
      > user exrc file: "$HOME/.exrc"
      > system gvimrc file: "$VIM/gvimrc"
      > user gvimrc file: "$HOME/.gvimrc"
      > system menu file: "$VIMRUNTIME/menu.vim"
      > fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
      > Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X_UNIX -no-cpp-precomp -g -O2 -arch i386 -D_FORTIFY_SOURCE=1
      > Linking: gcc -L. -L. -arch i386 -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon -lncurses -liconv -framework Cocoa -fstack-protector -L/usr/local/lib -L/System/Librar
      > y/Perl/5.12/darwin-thread-multi-2level/CORE -lperl -lm -lutil -lc -framework Python -framework Ruby
      > ```
      >
      >> Best regards,
      >> Tony.
      >> --
      >> The devil finds work for idle circuits to do.
      >>
      >> --
      >> 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 from the "vim_mac" 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
    • björn
      ... Thanks for bringing this to my attention Tony. ... MacVim is a multiprocess application where core Vim runs in one process and the MacVim GUI runs in
      Message 2 of 5 , Jan 2, 2012
      • 0 Attachment
        2012/1/2 Tony Mechelynck:
        > I'm redirecting this thread to the vim_mac group and adding Björn to the CC.

        Thanks for bringing this to my attention Tony.

        > On 02/01/12 03:33, Zhao Cai wrote:
        >>>
        >>> On 01/01/12 16:37, Zhao Cai wrote:
        >>>>
        >>>> Problem: Right after `set guifont=…`, `winwidth()` returns the old win
        >>>> width instead of the new width which would be changed by new guifont size.
        >>>>
        >>>> I tried to call `redraw` between but it does not work.
        >>
        >> I just retested a few more times. The problem happens only when I use mac
        >> lion's native full screen. For normal full screen, the winwidth function
        >> works just fine.

        MacVim is a multiprocess application where core Vim runs in one
        process and the MacVim GUI runs in another. When you call ":set
        gfn=..." this causes an IPC message to be (asynchronously) sent to the
        GUI which will then resize its window appropriately and then send
        another message back to the Vim process telling it what the new window
        size should be in order to fit on the screen.

        Hence, if you try to get the window width right after setting 'gfn' it
        will still tell you the old value because the IPC message that tells
        Vim about the updated window dimensions have yet to arrive.

        Fixing this problem will require a redesign to how MacVim resizes
        windows, which is difficult I'm afraid. I'd suggest you try to find
        other ways around this problem.

        Björn

        --
        You received this message from the "vim_mac" 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
      • Zhao Cai
        Thank for your answer, Björn and Tony! Now I understand the reason for this behavior. I will figure something out… Zhao ... -- You received this message
        Message 3 of 5 , Jan 2, 2012
        • 0 Attachment
          Thank for your answer, Björn and Tony! Now I understand the reason for this behavior. I will figure something out…

          Zhao

          On Jan 2, 2012, at 12:58 PM, björn wrote:

          > 2012/1/2 Tony Mechelynck:
          >> I'm redirecting this thread to the vim_mac group and adding Björn to the CC.
          >
          > Thanks for bringing this to my attention Tony.
          >
          >> On 02/01/12 03:33, Zhao Cai wrote:
          >>>>
          >>>> On 01/01/12 16:37, Zhao Cai wrote:
          >>>>>
          >>>>> Problem: Right after `set guifont=…`, `winwidth()` returns the old win
          >>>>> width instead of the new width which would be changed by new guifont size.
          >>>>>
          >>>>> I tried to call `redraw` between but it does not work.
          >>>
          >>> I just retested a few more times. The problem happens only when I use mac
          >>> lion's native full screen. For normal full screen, the winwidth function
          >>> works just fine.
          >
          > MacVim is a multiprocess application where core Vim runs in one
          > process and the MacVim GUI runs in another. When you call ":set
          > gfn=..." this causes an IPC message to be (asynchronously) sent to the
          > GUI which will then resize its window appropriately and then send
          > another message back to the Vim process telling it what the new window
          > size should be in order to fit on the screen.
          >
          > Hence, if you try to get the window width right after setting 'gfn' it
          > will still tell you the old value because the IPC message that tells
          > Vim about the updated window dimensions have yet to arrive.
          >
          > Fixing this problem will require a redesign to how MacVim resizes
          > windows, which is difficult I'm afraid. I'd suggest you try to find
          > other ways around this problem.
          >
          > Björn
          >
          > --
          > You received this message from the "vim_mac" 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 from the "vim_mac" 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
        • John Beckett
          ... If desperate, consider :sleep with a value that usually works. John -- You received this message from the vim_mac maillist. Do not top-post! Type your
          Message 4 of 5 , Jan 2, 2012
          • 0 Attachment
            Zhao Cai wrote:
            > Thank for your answer, Björn and Tony! Now I understand the
            > reason for this behavior. I will figure something out…

            If desperate, consider :sleep with a value that usually works.

            John

            --
            You received this message from the "vim_mac" 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
          • Zhao Cai
            Thanks! John, :sleep does work. ... -- You received this message from the vim_mac maillist. Do not top-post! Type your reply below the text you are replying
            Message 5 of 5 , Jan 2, 2012
            • 0 Attachment
              Thanks! John, :sleep does work.

              On Jan 2, 2012, at 6:53 PM, John Beckett wrote:

              > Zhao Cai wrote:
              >> Thank for your answer, Björn and Tony! Now I understand the
              >> reason for this behavior. I will figure something out…
              >
              > If desperate, consider :sleep with a value that usually works.
              >
              > John
              >
              > --
              > You received this message from the "vim_mac" 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 from the "vim_mac" 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
            Your message has been successfully submitted and would be delivered to recipients shortly.