emacsで使い捨てディレクトリをさくっと作る

emacs 24.5.1 open-junk-fileを使うと 使い捨てファイルをさくっと作ることができる。 使い捨てディレクトリも同じようにさくっと作りたい。 ということでopen-junk-fileを真似してopen-junk-dirというコマンドを作った。 https://github.com/handlename/dot-emacs/blob/master/inits/30_open-junk-file.el#L7-15 問題の関数のところだけを抜粋すると、 (defvar junk-file-dir "~/junk") (defvar junk-file-format-base (concat junk-file-dir "/%Y/%m/%Y%m%d_%H%M%S")) (defvar my:open-junk-dir-format (concat junk-file-format-base "_")) ;;; open-junk-dir (defvar my:open-junk-dir-format (concat junk-file-format-base "_")) (defun my:open-junk-dir () (interactive) (let* ((dir-base (format-time-string my:open-junk-dir-format (current-time))) (dir (read-string "Dirname: " dir-base))) (make-directory dir t) (find-file dir))) いままで~/tmpなどに都度ディレクトリを作っていたが、 これでディレクトリ名に悩む必要がなくなった。 ついでに Emacs で作成した使い捨てファイルを簡単に開く - Qiita を参考にhelmで使い捨てファイルを検索できるようにした。 https://github.com/handlename/dot-emacs/blob/master/inits/30_open-junk-file.el#L17-35 さらについでにagコマンドでjunk-file-dirを検索する関数も定義した。 https://github.com/handlename/dot-emacs/blob/master/inits/30_open-junk-file.el#L37-42 使い捨てファイルがだいぶ使いやすくなった。 »

highlight-symbolとhydraを組み合わせると捗る

GNU Emacs 24.4.50.1 highlight-symbol 1.2 hydra 0.10.0 Awesome Emacsという 便利packageリンク集があるのを知って眺めていたら、 表題のhighlight-symbolとhydraを組み合わせてみたら捗るんじゃないかと 思って組み合わせてみたらやっぱり捗りそうな感じだったのでメモしておく。 highlight-symbolとは 名前の通りコード内の同一シンボル(と思われるもの)をハイライトしてくれるツール。 hydraとは 関連するコマンドを複数定義して、 それらのコマンドを連続して簡単に呼び出せるようにするツール。 捗る設定 init.elに以下のように書いて、評価して、 (global-set-key (kbd "C-x H") (defhydra hydra-highlight-symbol (:post (progn (highlight-symbol-remove-all))) "highlight-symbol" ("." highlight-symbol-at-point "highlight") ("n" highlight-symbol-next "next") ("p" highlight-symbol-prev "prev") ("N" highlight-symbol-next-in-defun "next in defun") ("P" highlight-symbol-prev-in-defun "prev in defun"))) C-x Hとタイプすれば各コマンド(この場合.、n、p、N、P)が使えるモードになる。 (「モード」という呼び方が正しいのかどうかは知らない) C-x Hとタイプした後は各コマンドを単体で連続して使える。 つまりn、n、nとタイプすれば次々とシンボルをたどることができる。 定義されているキーバインド以外を入力するとこのモードから抜ける。 :postを設定して、抜けるときにハイライトを解除するようにしている。 よくわからないと思うのでスクリーンキャストをどうぞ: 録画の都合上emacs起動時からになっているので半分くらい起動を待つ時間になっております:p 録画用に軽い設定を用意すればいいのかもしれない。 asciinema初めて使ってみたけど便利。 ・・・抜けるときにハイライトが解除されてないことに気づいちゃった人もいると思いますが、 なんでかターミナルで動かすとhighlight-symbol-remove-allが効かないんです。 普段はEmacs.appを使っていてそちらでは問題ないので深追いはしない。 hydraのREADMEに載っているzoomやGoto-errorは普通に便利そうなので後で試す。 追記 2015-02-20 10:00 Emacs.appの方でもhighlight-symbol-remove-allが効かなくなっていた・・・ 別のパッケージと干渉している可能性もある? あとで調べる。 »

Author image handlename on #emacs,

flycheck用のgo-vetコマンドを再定義する

go 1.3.1 darwin/amd64 emacs GNU Emacs 24.4.50.1 わけあってgoamzのコードをemacs上で読んでいたら、 こことかで flycheck経由のgo-vetが次のようなワーニングを出していた。 composite literal uses unkeyed fields AttributeDefinitionsはsliceだから、なんでunkeyed fieldsと書かれているのかがわからない。 スルーしてもいいのだけど、気になるのでググったら 「-composites=falseするといいよ!」ってあった。 https://code.google.com/p/go/issues/detail?id=6820 というわけでflycheckのcheckerを再定義した。 (flycheck-define-checker go-vet "A go syntax checker." :command ("go" "tool" "vet" "-composites=false" source-inplace) :error-patterns ((error line-start (file-name) ":" line ":" (minimal-match (message)) line-end)) :modes (go-mode)) これで上記のワーニングは出なくなった。 »

atom から emacs に戻ったはなし

emacs 24.4.50.1 atom 0.124.0 .emacs.d が事故で消えてからはや半年、 そのあいだ atom を使っていたのだけど物足りない感じがしてきたので 一から emacs の設定をしたはなし。 リポジトリはこちら。 いちいちリポジトリ毎作りなおすのが面倒だったので、 タグ を切って ファイルを全消しするスタイルにした。 handlename/dot-emacs 移行したもの quelpa なんか新しいらしい。 "ケルパ" って読むのかな? el-get から移行。 el-get はキャッシュファイル(?)が壊れるとリカバリーが面倒だったので。 (そんなに頻繁になることではないから、実質大した不満はなかったのだけど) 自分でレシピを追加できるのがいい。 でもまだ MELPA にあるものしか使ってない。 気に入らなくなった時に package.el にすぐ戻れそうなところもいい。 projectile, helm-projectile 自前のプロジェクト移動機能 (.emacs.d が消えた時に消失) から移行。 "helmインターフェイスでプロジェクト選択 - そのままファイル絞り込み" ができて便利。 プロジェクトの追加が自動なので、 ちょっと開いただけのディレクトリがどんどん追加されていくのでちょっと不便。 ghq に対応させたい。 多機能っぽいので使いながら他の機能も調べてみる。 flycheck flymakeから移行。 というか一時期から flymake すら使っていなかった。 やっぱりあったほうが便利。 elisp で warning (You should have a section marked ";;; Code:" みたいなやつ) が出まくるのがうざい・・・。 シンタックスチェック用のコマンドを差し替えれば回避できそうなので »

emacs でシェルの環境変数を全部読み込む

emacs 24.4.50.1 zsh 5.0.2 perl 5.18.1 emacs で普段使っているシェルの環境変数を引き継ぎたい。 exec-path-from-shell を使うのがいいらしいが、 使いたい環境変数が増えるたびに el ファイルに追加していくのはめんどくさい。 ちょっと古いやり方かもしれないが、 実況中のシェルの環境変数を全部 el ファイルに書きだすようなスクリプトを書いた。 .emacs.d を git で管理していて github などにあげている場合は、 shellenv.el を .gitignore に追加しておかないとたぶん危ない。 https://github.com/handlename/dot-emacs/blob/master/scripts/init_shellenv.pl 実行すると、 $ perl scripts/init_shellenv.pl こういうファイルが作られる。 $ cat shellenv.el (setenv "TERM" "screen") (setenv "PLENV_ROOT" "/Users/handle/.plenv") (setenv "PLENV_VERSION" "5.18.1") (setenv "HOME" "/Users/handle") (setenv "GOPATH" "/Users/handle") ... で、 init.el とかに (load-file (concat user-emacs-directory "/shellenv.el")) と書いておけば全部 set される。 元ネタはこれ。 シェルと Emacsの PATHを共有する - Life is very »

mykie.elが便利

mykie.el が便利だったのでいくつか設定してみた。 (require 'mykie) (setq mykie:use-major-mode-key-override t) (mykie:initialize) (mykie:global-set-key "C-w" :default '(kill-region (line-beginning-position) (line-end-position)) :region 'kill-region) (mykie:global-set-key "M-w" :default '(kill-ring-save (line-beginning-position) (line-end-position)) :region 'kill-ring-save) (mykie:define-key-with-self-key "a" :region 'align :region&C-u 'align-regexp) (mykie:define-key-with-self-key "i" :region 'indent-region) (mykie:define-key-with-self-key "s" :region 'sort-lines) (mykie:define-key-with-self-key "u" :region '(call-process-region (region-beginning) (region-end) "uniq" t t)) C-w と M-w の挙動はSublimeTextから輸入。 捗りそう。 蛇足 mykie:define-key-with-self-key がmultiple-cursors-modeと干渉する。 (setq mykie:minor-mode-ignore-list '(multiple-cursors-mode)) ではだめっぽい。ふむ。 追記 2014-01-08 mykie.el作者の id:dbq さんにコメント頂きました。 以下のコードをinit.elに追記するとmultiple-cursorsとも問題なく併用出来ました。 https://gist.github.com/yuutayamada/8304923 追記ここまで »

Author image handlename on #emacs,

emacsからST2に乗り換えたメモ

4年ほど使ったemacsからST2に乗り換えてみたメモ。 ST2の使用期間は1週間くらい。 emacsの設定は ここ。 ST2の設定につてはまだ固まってないので割愛。 きっかけ Marvericksをクリーンインストールして、 .emacsのバックアップをそのまま置いたら動かなかったので。 el-getでパッケージを入れなおしても バイトコンパイルで失敗したりしてうまく行かなかったので この際乗り換えてみるかーということでやってみた。 emacsの機能/拡張と同等のプラグインが見つかったもの el-get → Package Control https://github.com/dimitri/el-get https://sublime.wbond.net/ 検索サイトが見やすい。 画面分割 → origami 基本機能 https://sublime.wbond.net/packages/Origami 本体の分割機能だけでは心許ないので。 align → Alignment 基本機能 https://sublime.wbond.net/packages/Alignment 細かい設定ができないので若干不満。 ほかにも似たようなプラグインはあるようなので試してみる。 flymake → SublimeLinter 基本機能 https://sublime.wbond.net/packages/SublimeLinter なんかうまく動いてない気がする。 たぶんlinterのパスとかその辺りの設定。 helm → 基本機能 https://github.com/emacs-helm/helm 基本機能 プロジェクト内のファイルやファイル内の関数をインクリメンタルに探せる。 git-gutter → GitGutter https://github.com/syohex/emacs-git-gutter https://sublime.wbond.net/packages/GitGutter もともとST2由来ですし。 ace-jump-mode → EasyMotion https://github.com/winterTTr/ace-jump-mode https://sublime.wbond.net/packages/EasyMotion 画面分割したときに別のペインにもジャンプしたいんだけど設定すれば出来るんだろか? dash-at-point → DashDoc https://github.com/stanaka/dash-at-point https://sublime.wbond.net/packages/DashDoc ドキュメント引こう。 ensime → Ensime https://github.com/aemoncannon/ensime https://sublime.wbond.net/packages/Ensime ensime-serverをそのまま使ってるらしい。 ほかのエディタでも使えるようになってるensimeがGood。 »

buffer-moves導入してみた

emacs 24.2.1 bufferの移動には buffer-moveがいい感じ - Life is very short 便利そうだったので導入してみた。 el-get のレシピに最初から入っているので、 M-x el-get-install<RET>buffer-moves でインストールできる。 カーソルキーが空いていたので、キーバインドはそこに割り当てた。 (global-set-key (kbd "M-<right>") 'buf-move-right) (global-set-key (kbd "M-<left>") 'buf-move-left) (global-set-key (kbd "M-<down>") 'buf-move-down) (global-set-key (kbd "M-<up>") 'buf-move-up) 捗る。 »

Author image handlename on #emacs,