lexima.vim と Ruby の組み合わせでハマった
以前、lexima.vim からオムニ補完を呼び出す設定を行ないました。
で、これを元に文字列内では補完しないように
call lexima#add_rule({ \ "char" : '.', "input" : '.', "filetype" : "ruby", "syntax" : "String" \})
みたいな設定を追加しました。
しかし、この設定だと "|"
の時に .
を入力するとオムニ補完が呼び出されてしまいました。
原因
いろいろと調べてみたんですがどうやら filetype=ruby
では "|"
の時の syntax は String
ではなくて rubyStringDelimiter
という syntax になるため、上記の設定では回避できなかったみたいです。
回避
いろいろと試してみたんですが、結局以下のように雑な対応をするのが無難みたい。
call lexima#add_rule({"at" : '\S\%#', "char" : '.', "input" : '.<C-x><C-o>', "filetype" : "ruby"}) call lexima#add_rule({ \ "at" : '\%#"', "char" : '.', "input" : '.', "filetype" : "ruby", "priority" : 10 \}) call lexima#add_rule({ \ "at" : "\\%#'", "char" : '.', "input" : '.', "filetype" : "ruby", "priority" : 10 \}) call lexima#add_rule({ \ "char" : '.', "input" : '.', "filetype" : "ruby", "syntax" : "String", "priority" : 10 \})
もにょるー。