osyo-manga / vim-precious

Vim context filetype
117 stars 7 forks source link

Undefined variable: k #15

Closed Tiryoh closed 6 years ago

Tiryoh commented 6 years ago

はじめまして。vim-precious愛用しています。

きちんと中身を読めてないのですが、以下のエラーが出ます。 先月は問題なかったので、おそらくautoload/precious.vimに何かしらの不具合がある気がします。

Error detected while processing function <SNR>72_is_enable_switch_CursorMoved[1]..precious#switch_def:
line    7:
E121: Undefined variable: k
Press ENTER or type command to continue
Error detected while processing function <SNR>72_is_enable_switch_CursorMoved[1]..precious#switch_def:
line    7:
E116: Invalid arguments for function filter(copy(a:defs), {k, v -> k != '*' && k =~ '[*?\[]'       && match(a:name, glob2regpat(k)) != -1})
Press ENTER or type command to continue
Error detected while processing function <SNR>72_is_enable_switch_CursorMoved[1]..precious#switch_def:
line    7:
E15: Invalid expression: filter(copy(a:defs), {k, v -> k != '*' && k =~ '[*?\[]'       && match(a:name, glob2regpat(k)) != -1})
Press ENTER or type command to continue

使用環境

osyo-manga commented 6 years ago

ありがとうございます。 該当するエラーですが、 Vim 8,0 で追加された Vim script の構文を使用しているためですね。 Vim 8.0 にアップデートすることで解消されると思います。

Tiryoh commented 6 years ago

理由がわかって納得しました。ありがとうございます。 Vim 8.0にアップデートできない環境でもVimを使用しています。 もし、可能であれば8.0より前のバージョンでもvim-preciousを使いたいのですが、例えば以下のようにして古いバージョンにも対応していただくことは可能でしょうか? それとも、新しいバージョンのVimを使うべきというスタンスなのでしょうか?

  if ft_def is NOTDEF
    if exists("*glob2regpat")
      if (v:version >= 800)
        let matches = filter(copy(a:defs),
              \ {k, v -> k != '*' && k =~ '[*?\[]'
              \       && match(a:name, glob2regpat(k)) != -1})
      else
        let matches = filter(copy(a:defs), "v:key != '*' && v:key =~ '[*?\\[]'"
              \ . " && match(a:name, glob2regpat(v:key)) != -1")
      endif
      if !empty(matches)
        let ft_def = sort(
              \ map(items(matches), "[strlen(v:val[0]), v:val[1]]"),
              \ {a, b -> a[0] == b[0] ? 0 : a[0] > b[0] ? -1 : 1})[0][1]
      endif
    endif
osyo-manga commented 6 years ago

それとも、新しいバージョンのVimを使うべきというスタンスなのでしょうか?

そうですねー。すでに Vim 8.0 がリリースされてから1年以上経過しているので、基本的には 8.0 に準じる考えです。 ただ、pull request を投げてもらえれば取り込みはするので、必要であれば pull request を投げてもらえればと(件の問題であればバージョンで切り分けないで lambda 式を使わないコードだけでもよさそう

Tiryoh commented 6 years ago

そうですよね…早くVim8.0に移行したいです…

ただ、pull request を投げてもらえれば取り込みはするので、必要であれば pull request を投げてもらえればと

ありがとうございます。これから送ります。 中身を読んでみたところ、インデントがスペース4つ、2つ、タブの3種類が混ざっているようなのですが、どれに合わせるのがいいでしょうか?

osyo-manga commented 6 years ago

ありがとうございます。これから送ります。

ありがとうございます。

中身を読んでみたところ、インデントがスペース4つ、2つ、タブの3種類が混ざっているようなのですが、どれに合わせるのがいいでしょうか?

あーそしたら『タブ文字』でお願いします。

Tiryoh commented 6 years ago

16 で解決しました。ありがとうございました。クローズします。