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 »

zshrcにwidget定義して2ストロークでghq list -> pecoで絞り込み する

pecoとghqを組み合わせると便利やで〜 というはなしを聞いてはいたものの、まだ手を出していなかったので。 zshでzawを使っていて、gitのbranch切り替えとかは bindkey '^xb' zaw-git-branches みたいな感じでやっていたので、それに合わせてghqで管理しているディレクトリに飛べるようにした。 function _peco_ghq_list () { cd $(ghq list -p | peco) } zle -N _peco_list_ghq bindkey '^xg' _peco_ghq_list Ctrl-x g でcloneしたディレクトリ一覧が出て、選択すると移動できる。 便利。 参考 https://github.com/peco/peco https://github.com/zsh-users/zaw http://webtech-walker.com/archive/2014/06/peco-ghq-gh-open.html »

ログイン時にencfsをマウントする

encfs 1.7.4 zsh 5.0.2 .zshrc に次のように書いておく。 if [ ! -d "$HOME/crypt" -o -z "$(ls -A $HOME/crypt)" ]; then encfs ~/.crypt ~/crypt fi ログイン時には必ずターミナルを立ち上げるので、これで充分。 »

時間がかかったら通知する設定を2段階にした

以前書いた、 時間がかかるコマンドを実行した後に通知する をちょっと改良。 notify_threshold 以上の時間がかかったら notify_notify を実行 notify_threshold2 以上の時間がかかったら notify_notify2 を実行 となるようにした。 次のように書いて、 時間がかかったら Growl で通知 もっと時間がかかったら iPhone にプッシュ通知 するようにしている。 function notify_notify { growl "done" "$notify_prev_command" echo "-- notified --" } function notify_notify2 { `curl https://im.handlena.me/api/post/**** -s -d message="done: $notify_prev_command" > /dev/null` notify_notify } growl は perl の Cocoa::Growl モジュールを使った自作のコマンド。 これで空き時間にパズドラやっててもすぐにコマンド終了に気づける! »

Author image handlename on #zsh,

時間がかかるコマンドを実行した後に通知する

テストとか、ファイルのアップロードとか、 時間のかかるコマンドが終わったら通知してほしい。 rsync heavy.tar.gz remote:/path/to/dist && <終わったら実行する処理> みたいにしてもいいけど、やっぱり自動で通知してほしい。 zshにはhookというものがあるので、これを使えば何とかなりそう。 で、なんとかしてみたのが以下。 使うときは、 .zshrc に次のように書く。 source /path/to/notify.sh # 秒数。これ以上時間がかかったら通知する notify_threshold=30 # コマンド実行後に呼ばれる関数 function notify_notify { `curl https://im.kayac.com/api/post/*** -s -d message="done: $notify_prev_command" > /dev/null` ecoh "-- notified --" } TODO!! 通知関数(notify_notify)に実行したコマンドを渡したい。どうやって取るの…? 取り方教えていただきました。追記参照。 less や tail など、開きっぱなしにするコマンドを終了した時にも通知されてしまう。 通知しないコマンドリストを用意して、それに含まれるなら通知しないようにする? 追記 2013-02-02 19:26 @sugyan さんに TTYIDLE という変数を教えてもらった。 @handlename $TTYIDLEというのを使って似たようなことできそう? d.hatena.ne.jp/f99aq/20080101… lessやtail -fを除外するのはフィルタリングするしかないのかなぁ… — すぎゃーんさん (@sugyan) 2013年2月2日 man zshall によると、 TTYIDLE <S> The idle time of the tty associated with the shell in seconds or -1 if there is no such tty. »

Author image handlename on #zsh,

最近のzshまわり

色々変更加えたので今どんな感じなのかメモっておく。 zaw https://github.com/zsh-users/zaw zsh で使える anything ライクなインターフェイス。 自分で絞り込み対象を追加できるみたいだけど、 いまのところデフォルトのもので事足りてる。 source ~/dev/clone/zaw/zaw.zsh zstyle ‘:filter-select‘ case-insensitive yes bindkey ‘^xb‘ zaw-git-branches bindkey ‘^xd‘ zaw-cdr bindkey ‘^xh‘ zaw-history z も使ってみたけど zaw-cdr の方が便利な気がした。 zaw-history は、設定してはいるけど SAVEHIST を 500000 とかにしているので重すぎて使ってない。 syntax-highlighting https://github.com/zsh-users/zsh-syntax-highlighting 存在しないコマンドが赤くなるのが便利。 prompt 以下のものを表示するようにしている。 ホスト名 カレントディレクトリ vcs情報 現在時刻 autoload -Uz vcs_info zstyle ‘:vcs_info:‘ formats ‘%s:%b‘ zstyle ‘:vcs_info:‘ actionformats ‘%s:%b[%a]‘ function update_vcs_info_msg() { psvar=() LANG=en_US.UTF-8 vcs_info [[ -n "$vcs_info_msg_0" ]] && psvar[1]="$vcsinfo_msg_0" } add-zsh-hook precmd _update_vcs_info_msg if [ "${TERM}" != "dumb" ]; then autoload colors colors PROMPT="%B%F{black}– %D{%Y/%m/%d %H:%M:%S} – %B%F{cyan}%m:%F{yellow}%/ %1(v|%{${fg[green]}%}%1v%f |) %F{cyan}%F{red}%(!,#,$)%{${resetcolor}%}%b " PROMPT2="%{${fg[orange]}%}% %%%{${reset_color}%} " SPROMPT="%{${fg[yellow]}%}%r%{${reset_color}%} is correct? »

Author image handlename on #zsh,