サーバー上のファイルをSublimeLinter 他
週末にsublimeと戯れたので、その結果をメモ。
サーバー上のファイルをsublimelinter
PerlのSublimeLinterについては前に記事を書きました(ちなみにinclude_dirsについて追記しました)が、サーバー上のファイルをマウントして作業とかしてると、実際に実行するperlはサーバー上のperlなので、ローカルにもサーバー上で使うモジュールと同じものがないとuseエラーが起きてしまいます。 ローカルにもサーバー上と同じ環境を作れれば問題ないのですが、まあそれも面倒ですよね。ということで、サーバー上の環境でlintをかけるようにしてみました。
やったことは単純。SublimeLinterはperl -cかけた結果をパーズしてるだけなので、そこで使うperlをサーバー上のものにすればOKです。 てことで、以下の様なラッパーを書いて、それをSublimeLinter-contrib-perlのlinterで使わせることにしました。
sshperl
#!/bin/bash MOUNT_LOCAL1=/Users/nullnull/mnt/server1 current_path=$(pwd) if echo $current_path | grep $MOUNT_LOCAL1; then # echo "mount" >&2 ssh hoge@server1 -t "perl" else # echo "not mount" >&2 perl fi
Packages/SublimeLinter-contrib-perl/linter.py
# executable = 'perl' executable = 'sshperl'
はじめてのPlugin開発
SublimeTextのプラグイン作成方法 | 情報基盤システム学研究室 こちらを参考にちょっと作ってみました。こちらのサイトでも書かれてますが、チュートリアル見れば即作れます。こんなに簡単ならもっとはやくやればよかった。笑
とりあえず Tools > New Plugin でひな形が作れるのでぜひ試してみてください。
自分が作ったプラグインは以下。会社でfpとspの2つのテンプレートを開発していて、fpとspをサクっと切り替えたかったので作ってみました。 完全に個人用なので別に公開はしませんw
switch_fp_sp.py
import sublime, sublime_plugin class SwitchFpSpCommand(sublime_plugin.WindowCommand): def run(self, type): view = self.window.active_view() file_name = view.file_name() if (type == "sp") : open_file_name = file_name.replace("/fp/", "/sp/") else : open_file_name = file_name.replace("/sp/", "/fp/") self.window.open_file(open_file_name)
Default.sublime-commands
[ { "caption": "SwitchSpFp: toSP", "command": "switch_fp_sp", "args" : { "type": "sp" } }, { "caption": "SwitchSpFp: toFP", "command": "switch_fp_sp", "args" : { "type": "fp" } } ]
作成時間5分くらいw
あとはConvertToUTF8のバグにプルリク送ったりしてました。 さぶらいむレベルが4くらいにはなったかな…