- smartinput.vimを用い、
<CR>
を入力した際、状況に応じてend
を自動で入力させる
<CR>
が入力された際、以下の内容を実装した関数をcallする。
<CR>
を入力した際にカーソルが存在する行のインデントの深さを取得。これをl:smartend_indent_level
とする。カーソルが存在する行から一行ずつインデントの深さをチェックして行き、l:smartend_indent_level
と同じインデントの深さで、インデントの直後にend
が存在する行に到達した場合、何もせずに処理を終了。l:smartend_indent_level
より浅いインデントを持つ行、ただし深さ0の場合は除く、に到達した場合はその行にl:smartend_indent_level
と同じ深さのインデント及びend
を挿入し処理を終了。
- 任意の行のインデントの深さ、つまり行頭から半角スペースがいくつ連続しているか、を取得する方法
- tab文字によるインデントは想定しない
- 任意の行の任意の位置に任意の文字列を挿入する方法
深さ0、の判定。
現状の使用だと以下の様なコードでend
が入力されない
class Moge
def missing_end
#ここはスルーしてほしい
puts :hi
#ここはスルーしてほしくない
def いい感じ
puts :sugoi
end
end
これも。
def missing_end
#ここはスルーしてほしい
puts :hi
#ここはスルーしてほしくない
def いい感じ
puts :sugoi
end