macvim-dev / macvim-dev/macvim

Terminal mode buffers do not implement Xterm control sequences to change cursor shape correctly

Ouverte
#1,215 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Vim Script
Étoiles
7.9k
Forks
691
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Describe the bug
According to the VIM documentation in terminal.txt under terminal-cursor-style:

By default the cursor in the terminal window uses a not blinking block. The
normal xterm escape sequences can be used to change the blinking state and the
shape. Once focus leaves the terminal window Vim will restore the original
cursor.

These control sequences are defined as follows (source: XTerm Control Sequences ):

CSI Ps SP q
          Set cursor style (DECSCUSR), VT520.
            Ps = 0  ⇒  blinking block.
            Ps = 1  ⇒  blinking block (default).
            Ps = 2  ⇒  steady block.
            Ps = 3  ⇒  blinking underline.
            Ps = 4  ⇒  steady underline.
            Ps = 5  ⇒  blinking bar, xterm.
            Ps = 6  ⇒  steady bar, xterm.

However, trying these in a terminal inside the GUI of MacVim does not work.

To Reproduce
Detailed steps to reproduce the behavior:

  1. Run mvim --clean
  2. Type :terminal to create a new terminal emulator buffer
  3. Type any of the following commands and press enter:
    • printf '\e[1 q' should turn the cursor into a blinking block, which works;
    • printf '\e[2 q' should turn the cursor into a steady block, which works;
    • printf '\e[3 q' should turn the cursor into a blinking underline, instead the cursor turns invisible;
    • printf '\e[4 q' should turn the cursor into a steady underline, instead the cursor turns invisible;
    • printf '\e[5 q' should turn the cursor into a blinking bar, instead the cursor turns invisible;
    • printf '\e[6 q' should turn the cursor into a steady bar, instead the cursor turns invisible.

Expected behavior
The same steps executed in gvim on Kubuntu 18.04 all work as expected, changing the cursor shapes as prescribed by the definition of the control sequences cited above.

Environment (please complete the following information):

  • Vim version

    :version
    VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Sep 24 2021 14:13:28)
    macOS version - x86_64
    Included patches: 1-3455
    Compiled by GitHub Actions
    Huge version with MacVim GUI.  Features included (+) or not (-):
    +acl               +file_in_path      -mouse_sysmouse    +tag_binary
    +arabic            +find_in_path      +mouse_urxvt       -tag_old_static
    +autocmd           +float             +mouse_xterm       -tag_any_white
    +autochdir         +folding           +multi_byte        -tcl
    -autoservername    -footer            +multi_lang        +termguicolors
    +balloon_eval      +fork()            -mzscheme          +terminal
    +balloon_eval_term +fullscreen        +netbeans_intg     +terminfo
    +browse            +gettext           +num64             +termresponse
    ++builtin_terms    -hangul_input      +odbeditor         +textobjects
    +byte_offset       +iconv             +packages          +textprop
    +channel           +insert_expand     +path_extra        +timers
    +cindent           +ipv6              +perl/dyn          +title
    +clientserver      +job               +persistent_undo   +toolbar
    +clipboard         +jumplist          +popupwin          +transparency
    +cmdline_compl     +keymap            +postscript        +user_commands
    +cmdline_hist      +lambda            +printer           +vartabs
    +cmdline_info      +langmap           +profile           +vertsplit
    +comments          +libcall           +python/dyn        +virtualedit
    +conceal           +linebreak         +python3/dyn       +visual
    +cryptv            +lispindent        +quickfix          +visualextra
    +cscope            +listcmds          +reltime           +viminfo
    +cursorbind        +localmap          +rightleft         +vreplace
    +cursorshape       +lua/dyn           +ruby/dyn          +wildignore
    +dialog_con_gui    +menu              +scrollbind        +wildmenu
    +diff              +mksession         +signs             +windows
    +digraphs          +modify_fname      +smartindent       +writebackup
    +dnd               +mouse             -sodium            -X11
    -ebcdic            +mouseshape        -sound             -xfontset
    +emacs_tags        +mouse_dec         +spell             +xim
    +eval              -mouse_gpm         +startuptime       -xpm
    +ex_extra          -mouse_jsbterm     +statusline        -xsmp
    +extra_search      +mouse_netterm     -sun_workshop      -xterm_clipboard
    -farsi             +mouse_sgr         +syntax            -xterm_save
       system vimrc file: "$VIM/vimrc"
         user vimrc file: "$HOME/.vimrc"
     2nd user vimrc file: "~/.vim/vimrc"
          user exrc file: "$HOME/.exrc"
      system gvimrc file: "$VIM/gvimrc"
        user gvimrc file: "$HOME/.gvimrc"
    2nd user gvimrc file: "~/.vim/gvimrc"
           defaults file: "$VIMRUNTIME/defaults.vim"
        system menu file: "$VIMRUNTIME/menu.vim"
      fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
    Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-u
    nknown-pragmas -pipe -DMACOS_X -DMACOS_X_DARWIN -g -O2 -arch x86_64 -arch arm64
    -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wall -Wextra -Wshadow -Werro
    r -Wno-error=missing-field-initializers -Wno-error=deprecated-declarations -Wno-
    error=unused-function
    Linking: clang -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/li
    byaml/lib -L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/readline/lib -L. -fs
    tack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local
    /opt/openssl@1.1/lib -L/usr/local/opt/readline/lib -arch x86_64 -arch arm64 -L/u
    sr/local/lib -o Vim -lm -lncurses -liconv /usr/local/lib/libintl.a -framework Ap
    pKit -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CO
    RE
    
  • OS: macOS Catalina 10.15.7

  • Terminal: GUI

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le problème avec mvim --clean, puis comparez le comportement des séquences CSI Ps SP q indiquées avec gvim dans un tampon de terminal. Suivez la manière dont MacVim gère les séquences de style du curseur du terminal, en vous concentrant sur la raison pour laquelle les valeurs 3–6 deviennent invisibles alors que 1–2 fonctionnent. Le travail est terminé lorsque les styles de soulignement et de barre, clignotants et fixes, sont rendus correctement sans provoquer de régression des styles de bloc.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
vim
Domaine
desktop
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.