emacs から git diff を開く

emacs 24.2.1 git 1.8.2 tmux 1.7 iTerm 1.0.0.20130319 emacs から tig blame を開く - handlename's blog の派生。 diff も見れたら便利なんじゃないかということで追加してみた。 ついでにリファクタリング。 tmux にコマンド送るのは他にも色々応用できそう。 »

emacs から tig blame を開く

emacs 24.2.1 tmux 1.7 iTerm 1.0.0.20130319 tig blame が便利らしいということで、emacs からさくっと開けるようにしてみた。 git-project-p はこちらから拝借。関数名は変えてある。 http://shibayu36.hatenablog.com/entry/2013/01/18/211428 べんり〜 »

helm の C-h を delete-backward-char にする

helm で文字入力中に C-h で delete-backward-char したい。 現時点ではデフォルトの C-h C-d helm-debug-output (helm.el) C-h C-b helm-send-bug-report-from-helm (helm-files.el) を定義しないフラグは用意されていないようなので、無理やり上書きする。 (eval-after-load 'helm '(progn (define-key helm-map (kbd "C-h") 'delete-backward-char))) (eval-after-load 'helm-files '(progn (define-key helm-find-files-map (kbd "C-h") 'delete-backward-char))) C-h を delete-backward-char にしてる人って結構いるはずなのに、 なんで別のコマンドを割り当ててあるんだろう? »

Author image handlename on #emacs,

emacsでwhitespace-cleanupした時のスタイル

emacs24.2.1 余計な行末のスペースを一括削除するときは、 whitespace-cleanup を使うと便利。 whitespace-style にもとづいて空白文字の整形をしてくれる。 先日拡張 elisp の管理をすべて el-get に移行したら どの部分が原因かはわからないけど whitespace-style の値が変わってしまっていた。 こういうのが、 sub hoge { <SPACEx4>say 'hello'; } whitespace-cleanup するとこういう風になってしまう。 sub hoge { <TAB>say 'hello'; } (SPACEとTABをそのまま入れても見た目良くわからないので<SPACE>と<TAB>に置き換えてます) whitespace-style を手動でセットし直すようにした。 といっても indentation を indentation::space に変えただけ。 (setq whitespace-style '(face tabs spaces trailing lines space-before-tab newline indentation::space empty space-after-tab space-mark tab-mark newline-mark)) whitespace-style については M-x describe-bindings whitespace-style または EmacsWiki の Witespace のページを参照。 »

Author image handlename on #emacs,

package + auto-install から el-get に移行する

auto-install だったり github から個別に clone していたものを el-get に一本化。 https://github.com/handlename/dot-emacs パッケージをリストアップ require や auto-load している部分を grep して抽出。 こんな感じのインストール処理を用意。 (defvar bootstrap:packages '(auto-async-byte-compile ac-company ace-jump-mode anything auto-complete ... )) (dolist (package bootstrap:packages) (el-get-install package)) レシピの追加 用意されていないレシピを自分で用意する。 既存のレシピを見ながら黙々と追加。 File error: Cannot open load file, PACKAGE NAME 手書きのレシピで依存関係を書き忘れていた場合、 (el-get 'sync) を手動で実行すればどのレシピから呼ばれているのかがわかる。 もっといい方法がありそう…。 エラーメッセージを見て、 該当レシピに depends を追加。 el-get-user-package-directory は使わない el-get-user-package-directory にディレクトリのパスを設定して init-helm.el みたいなファイルを置いておくと、 パッケージごとに設定を読みこんでくれる。 が、 複数のパッケージをまたがって設定を書くこともあるので、 今までどおり init-loader に設定ファイルのロードを任せることにした。 その辺の依存関係はうまく切り分けて書けよということなのかもしれないけども。 その他細かい修正 全パッケージを最新(たぶん)のものにしたので、 yasnippet の変数関数名が変わっていたり、 org-babel の設定方法が変わっていたりで »

Author image handlename on #emacs,

xslate-modeとtt-mode

練習でText::XslateとTemplate::Toolkitのテンプレート用マイナーモードを書いてみた。 https://github.com/handlename/xslate-mode https://github.com/handlename/tt-mode とりあえずタグの挿入とハイライトだけ。 名前が違うだけで同じ事しか書いていないので、設定だけでいろいろなテンプレートに対応できるような、meta-template-mode的なものにしたほうがいいのかもしれない。 Emacs Lispテクニックバイブル 作者: るびきち出版社/メーカー: 技術評論社発売日: 2011/11/26メディア: 単行本(ソフトカバー)購入: 5人 クリック: 213回この商品を含むブログを見る »

build.sbtの依存関係を書き換えたらM-x ensimeしなおさないといけない

emacsでensimeを使っている場合。 build.sbtに libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.21" みたいな依存関係を書き換えたら、emacs上で M-x ensimeとして.ensimeを読み直さないといけない。 .ensimeにも依存関係について記述してあって、これを読み直さないとemacs上でコンパイルするときにパッケージが見つからないって怒られる。 »

coffee-modeで関数名をハイライト

emacs の coffee-mode のシンタックスハイライトがなんだか寂しかったので、関数名(とその後ろのアロー)をハイライトするようにしてみた。 404 · GitHub むりくりな感じはするけどやりたいことはできたのでよしとする。 »

ファイルがなければ作ってemacsで開くコマンド

※MacのCocoa Emacsを使っている場合のはなし alias e="open -a emacs" いままでは .zshrc に↑のようなエイリアスを作ってファイルを開くショートカットにしていた。 $ e hoge とすればカレントディレクトリの hoge というファイルを emacs で開けるという寸法。 ただ、ファイル hoge が無い場合は開けない。 $ e hoge The file /path/to/hoge does not exist. これはちょっとイヤなので、存在しないファイルは touch してから開くようにした。~/bin に e という名前でシェルスクリプトを作成。 #!/bin/sh if [ ! -e $1 ] ; then touch $1; fi open -a emacs $1; そのまんま、ファイルがなければ touch してから開いている。だけ。 (ファイルが存在しないときだけ処理を行う場合ってもっとスマートな書き方がありそうだけど、まあいいか) → 「!」付ければいいだけか!というわけで修正しました(2011-06-05 19:44)。 ※注意 .emacs で (server-start) としていないと新しいウィンドウが開いちゃいます。たぶん。 »

string-widthをインタラクティブに呼び出せるようにする

emacsでリージョン内の文字数をしらべる場合は、リージョン選択時に M-x count-lines-regionとすればいい。count-lines-regionはデフォルトでは M-=に割り当てられている。 文字数ではなく文字幅を知りたい場合はstring-widthを呼び出せばいいのだが、これはコマンドとしては呼び出せない。 ので、リージョン内の文字幅をしらべる関数を定義してみた。 調べたい文字列をリージョンで選択して、 M-x string-width-in-regionとすればミニバッファに結果が表示される。 »