📘

vim-railsのEjavascript補完がRails7では機能しない件

2023/02/27に公開

Rails7からJavaScriptディレクトリの場所がapp/javascriptに変更されたためrails-vimのEjavascriptコマンドでJavaScriptファイルの補完ができず困ったので頑張ってパッチ当ててみました。

vimスクリプトをいじるのは今回が初めてなので最適解ではないかもしれませんが、自分の実用範囲では機能しているのでうまくいったと思います。

git diff
diff --git a/autoload/rails.vim b/autoload/rails.vim
index 165b3e1..2045e4f 100644
--- a/autoload/rails.vim
+++ b/autoload/rails.vim
@@ -3302,7 +3302,7 @@ endfunction
 
 function! s:javascriptEdit(cmd,...) abort
   return s:AssetEdit(a:cmd, a:0 ? a:1 : '', 'javascripts',
-        \ rails#app().has_gem('coffee-rails') ? '.coffee' : '.js', [])
+        \ rails#app().has_gem('coffee-rails') ? '.coffee' : '.js', ['app/javascript/%s.js'])
 endfunction
 
 function! s:stylesheetEdit(cmd,...) abort
@@ -3321,6 +3321,7 @@ function! s:javascriptList(A, L, P, ...) abort
   let strip = '\%('.escape(join(suffixes, '\|'), '.*[]~').'\)$'
   call map(list,'substitute(v:val,strip,"","")')
   call extend(list, rails#app().relglob("public/".dir."/","**/*",suffixes[0]))
+  call extend(list, rails#app().relglob("app/javascript/","**/*",suffixes[0]))
   for suffix in rails#app().has('webpack') ? rails#pack_suffixes(suffixes[0][1:-1]) : []
     call extend(list, rails#app().relglob("app/javascript/packs/","**/*",suffix))
   endfor

Discussion