vim-perl の indent の気持ち悪いの治してみた話
vim の perl 周りの設定は https://github.com/petdance/vim-perl を使ってるのだけれども
hoge({ fuga => 1 });
こういうふうにインデントされて気持ち悪いなぁと思っていたので indent/perl.vim を見ると以下のように書かれていたので、どうやら同じ行で({[とかが見つかる分だけ sw を足してるから
let braceclass = '[][(){}]' let bracepos = match(line, braceclass, matchend(line, '^\s*[])}]')) while bracepos != -1 let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name") " If the brace is highlighted in one of those groups, indent it. " 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'. if synid == "" \ || synid == "perlMatchStartEnd" \ || synid == "perlHereDoc" \ || synid =~ "^perlFiledescStatement" \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold' let brace = strpart(line, bracepos, 1) if brace == '(' || brace == '{' || brace == '[' let ind = ind + &sw else let ind = ind - &sw endif endif let bracepos = match(line, braceclass, bracepos + 1) endwhile
その回数を以下のように設定出来るようにしてそいつを 1 にすれば
let g:perl_braceclass_max_indent_level = 1
hoge({ fuga => 1 });
みたいな感じになって個人的には良い感じになったけど、インデント周りをよくわかってないので思わぬ副作用があるかもしれないのでしばらく使ってみることとした
https://github.com/soh335/vim-perl/tree/feature/customize-braceclass-max-indent