nnn.vim icon indicating copy to clipboard operation
nnn.vim copied to clipboard

Undefined variable: g:nnn#action in ftplugin/nnn.vim

Open sedimentation-fault opened this issue 10 months ago • 0 comments

Problem

Cloned nnn.vim (the directory) into /usr/local/share/vim/plugin/ In my vimrc I have added /usr/local/share/vim to my runtimepath. Upon start of vim/gvim, I get:

Error detected while processing /usr/local/share/vim/plugin/nnn.vim/ftplugin/nnn.vim:
line    6:
E121: Undefined variable: g:nnn#action
E116: Invalid arguments for function empty(g:nnn#action)
line   12:
E121: Undefined variable: g:nnn#set_default_mappings

How to reproduce

See above.

Expected behavior

No error, of course

Environment:

  • OS: Gentoo Linux
  • Terminal: x11-misc/tabbed-0.6-r1 with x11-terms/xterm-367, or app-editors/gvim-8.2.3741
  • Shell: app-shells/bash-5.1_p16
  • Vim version: app-editors/vim-8.2.3741
  • Plugin manager: None
  • Plugin version: git clone of yesterday
  • Nnn version: app-misc/nnn-4.8

Solution Change

if !empty(g:nnn#action)

to

if exists('g:nnn#action') && !empty(g:nnn#action)

and

if g:nnn#set_default_mappings

to

if exists('g:nnn#set_default_mappings') && g:nnn#set_default_mappings

Now, the errors went away, but I am not sure if this is OK, or if I just covered up a more serious problem. Are nnn#action and g:nnn#set_default_mappings supposed to be defined at the time ftplugin/nnn.vim uses them - and what happens if they are not? ftplugin/nnn.vim will not retouch them, since b:nnn_ftplugin will be 1 subsequently, which will cause it to return immediately at the start...

sedimentation-fault avatar Aug 21 '23 16:08 sedimentation-fault