ardagnir / athame

Full vim for your shell (bash, zsh, gdb, python, etc)
GNU General Public License v3.0
1.62k stars 32 forks source link

Why aren't the registers working? #55

Closed ntjn closed 6 years ago

ntjn commented 6 years ago

Does this follow from the architecture trivially, or is it just not implemented? If it's not against the design, do you think it would be hard to implement?

I mostly need the + register to be able to yank into X11 clipboard.

:redir @+ | echom "Q_Q" | redir END

does not copy either.

ardagnir commented 6 years ago

The + and " registers should work. What OS and Vim version are you using?

ntjn commented 6 years ago

I'm using Arch Linux with 4.15.14-1-ARCH kernel. Full vim --version output: VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Dec 23 2017 12:10:41) Included patches: 1-1422 Compiled by ntj@archlinux Huge version with GTK2 GUI. Features included (+) or not (-): +acl +farsi +mouse_sgr -tag_any_white +arabic +file_in_path -mouse_sysmouse -tcl +autocmd +find_in_path +mouse_urxvt +termguicolors -autoservername +float +mouse_xterm +terminal +balloon_eval +folding +multi_byte +terminfo +balloon_eval_term -footer +multi_lang +termresponse +browse +fork() -mzscheme +textobjects ++builtin_terms +gettext +netbeans_intg +timers +byte_offset -hangul_input +num64 +title +channel +iconv +packages +toolbar +cindent +insert_expand +path_extra +user_commands +clientserver +job -perl +vertsplit +clipboard +jumplist +persistent_undo +virtualedit +cmdline_compl +keymap +postscript +visual +cmdline_hist +lambda +printer +visualextra +cmdline_info +langmap +profile +viminfo +comments +libcall -python +vreplace +conceal +linebreak -python3 +wildignore +cryptv +lispindent +quickfix +wildmenu +cscope +listcmds +reltime +windows +cursorbind +localmap +rightleft +writebackup +cursorshape -lua -ruby +X11 +dialog_con_gui +menu +scrollbind -xfontset +diff +mksession +signs +xim +digraphs +modify_fname +smartindent +xpm +dnd +mouse +startuptime +xsmp_interact -ebcdic +mouseshape +statusline +xterm_clipboard +emacs_tags +mouse_dec -sun_workshop -xterm_save +eval +mouse_gpm +syntax +ex_extra -mouse_jsbterm +tag_binary +extra_search +mouse_netterm +tag_old_static 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: "/usr/local/share/vim" Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -fno-strength-reduce -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 Linking: gcc -L/usr/local/lib -Wl,--as-needed -o vim -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -lm -ltinfo -lelf -lnsl -lacl -lattr -lgpm -ldl

ntjn commented 6 years ago

Neither + nor any other register is working. I'm using "+<normal>, but it isn't even shown on the status bar.

ntjn commented 6 years ago

Sorry for flooding, but yanking seems to work inside of athame, but can't use data in "+ register outside of it, neither inside with Shift+Ins.

ardagnir commented 6 years ago

Are you using the version in AUR?

Shift+Ins normally uses the "* register.

Something to note: if you don't have ATHAME_VIM_PERSIST on and you yank and then press enter to run a bash command or whatever, the value of "+ will persist between lines, but it will no longer be accessible outside of Vim until you yank to it again. (Without ATHAME_VIM_PERSIST, each bash line is a new instance of Vim, and "+ leaves the X11 clipboard when Vim closes.)

Nothing shows up on the Athame status bar except mode, ex commands, searches, and errors. That doesn't mean registers aren't working.

ntjn commented 6 years ago

I tried both the AUR version and built one as well.

Tried to use the "* register recently.

I haven't been executing any command, just tried to copy some bullshit to X11 clipboard. Tried to enable ATHAME_VIM_PERSIST as well. The register is now available in every line, but still not outside of vim.

wahrwolf commented 6 years ago

Do you use any fancy plugins? some hijack registers (e.g. for autocompletion, etc). Maybe link a gist of your current .vimrc for easier debugging.

ntjn commented 6 years ago

Using + /* works from vim, only athame has issues with it, but I link dotfiles anyway. I commented out every plugin, but still no success.

.athamerc .vimrc

PS: ... is the best one can write to ruin a whole sencence.

wahrwolf commented 6 years ago

For testing purposes could you set clipboard=unnamedplus This tells all commands like yank and delete to use the + register. If you can access your clipboard with that in athame you probably have some program (e.g. your terminal, shell, ghost) stealing some keys from you

ntjn commented 6 years ago

Doesn't work either. I don't think anything is stealing keys, because I'm able to use the + register inside athame, so keystrokes are recognized. I'm using bash built for athame, and plain xterm, wm is i3, that isn't stealing anything either. I am going to dig down the rabbit hole, despite the cause of this issue seems far from trivial.

ardagnir commented 6 years ago

What are $DISPLAY and $TERM set to in Athame’s vim? You can use “= from Athame to get the value.

ntjn commented 6 years ago

DISPLAY=:0 and TERM=xterm-256color

ntjn commented 6 years ago

Solved by accident. After building another vim I've realised /usr/local/bin/vim is the preferred location over /usr/bin/vim where vim is installed on Arch by default, and athame have been using another with X11 disabled.

Aster89 commented 3 years ago

Give the dates of last commit and last PR, I suppose this amzing project is essentially abandoned.

Nonetheless, I'll provide this repro steps that show something is not quite right with registers + and *. As you can see in the following screencast I do the following

  1. yank something in the * register
  2. yank something in the + register
    • show the registers' content
    • send Vim to background via Ctrl-z
    • go back to Vim with fg
    • show the registers' content

Result: the * register has the same content as the + register, i.e. the content of the + register has been yanked to the * register. However, if you invert step 1 and 2, then * is copied into +. Therefore my observation is that the last register between + and * in which you have yanked is put into the other register if you send Vim to background and then to foreground again.

asciicast