Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vim上でのphp−cs−fixer実行時にdiffの結果を表示させる方法

$
0
0

やりたいこと

vim上でphp-cs-fixerを実行した時、一度dry−runをかけて変更箇所(どこがどう変更されるのか)を確認してから実際にfixさせたい!

前提

vim上でphp-cs-fixerを実行できる状態まで持っていきます。手順は以下を参考にしてください。

デフォルトのOption Available

stephpy/vim-php-cs-fixerで指定できるオプションを確認してみると、diffの項目がありません。

" If php-cs-fixer is in $PATH, you don't need to define line below" let g:php_cs_fixer_path = "~/php-cs-fixer.phar" " define the path to the php-cs-fixer.pharletg:php_cs_fixer_level ="symfony"" which level ?letg:php_cs_fixer_config ="default"" configuration"let g:php_cs_fixer_config_file = '.php_cs'       " configuration fileletg:php_cs_fixer_php_path ="php"" Path to PHP" If you want to define specific fixers:"let g:php_cs_fixer_fixers_list = "linefeed,short_tag,indentation"letg:php_cs_fixer_enable_default_mapping =1" Enable the mapping by default (<leader>pcd)letg:php_cs_fixer_dry_run =0" Call command with dry-run optionletg:php_cs_fixer_verbose =0" Return the output of command if 1, else an inline information.

なので今回はプラグイン本体に修正を加え、diffの結果を表示できるようにします。

プラグインの変更

デフォルトでは次のようになっています。

~/.vim/bundle/vim-php-cs-fixer/plugin/php-cs-fixer.vim
44ifa:dry_run ==145         echohl Title | echo "[DRY RUN MODE]"| echohl None
 46let command = command.' --dry-run'47endif

これを以下のように修正します。今回は一度dry−runを実行し、変更箇所を確認してから、実際にfixをかけるようにしたかったので、dry−run実行時にdiffを一緒に指定しました。

~/.vim/bundle/vim-php-cs-fixer/plugin/php-cs-fixer.vim
44ifa:dry_run ==145         echohl Title | echo "[DRY RUN MODE]"| echohl None
 46let command = command.' --dry-run --diff'47endif

このように変更を加えた後、オプションのdry_runとverboseの項目を1にしてやればOK。これでvim上からphp−cs−fixerを実行した時に、一度dry−runを走らせ変更箇所を確認したのちに、実際にfixをかけられるようになります。

" If php-cs-fixer is in $PATH, you don't need to define line below" let g:php_cs_fixer_path = "~/php-cs-fixer.phar" " define the path to the php-cs-fixer.pharletg:php_cs_fixer_level ="symfony"" which level ?letg:php_cs_fixer_config ="default"" configuration"let g:php_cs_fixer_config_file = '.php_cs'       " configuration fileletg:php_cs_fixer_php_path ="php"" Path to PHP" If you want to define specific fixers:"let g:php_cs_fixer_fixers_list = "linefeed,short_tag,indentation"letg:php_cs_fixer_enable_default_mapping =1" Enable the mapping by default (<leader>pcd)letg:php_cs_fixer_dry_run =1" Call command with dry-run optionletg:php_cs_fixer_verbose =1" Return the output of command if 1, else an inline information.

なおこの方法では、diffの結果の表示色は全てオレンジとなってしまいます。ターミナル上でdiffの結果を表示させた時は変更前が赤、変更後は緑、みたいな感じで表示されているので、それに合わせに行きたいところですが、目的は達成されたので一旦ここまでとします。


Viewing all articles
Browse latest Browse all 5608

Trending Articles