history-incremental-pattern-search-forward が実装されていたら使う
これでいけた。
if zle -al |grep history-incremental-pattern-search; then bindkey '^R' history-incremental-pattern-search-backward bindkey '^S' history-incremental-pattern-search-forward fi
growl.el
/lang/elisp/emacs-growl/trunk/growl.el –
CodeRepos::Share – Trac
pit.el のついでに growl.el も放流します。
Growl Network Notification Protocol にメッセージを送れるのが特徴です。
Emacs の make-network-process を使用しています。 なお NTEmacs では make-network-process で UDP へ投げられないようなので、その場合は NetCat があればそれを使います。
growlnotify などの外部クライアントを経由して、 Growl へメッセージを送ることもできます。*1
こちらもごジユウに変更くださいませ。
最後に encode-coding-string を教えてくださった Topia 師に感謝します。いつもありがとう :->
*1:実はこちらのが規定の動作になっています
pit.el その後
/lang/elisp/pit/trunk/pit.el –
CodeRepos::Share – Trac
いくつか不具合報告や要望を戴いておりますが、ちかごろ私生活が忙しくなりまして、とても手を付けられそうにないため、 CodeRepos に放流しました。
CodeRepos ですし、コミット前の連絡や相談はまったく必要ありません。ジユウ*1にどうぞ :)
*1:GPLv3 的な意味で
Windows で Cygwin の Git を使うときに
NTEmacs は(当然ながら) Cygwin の file permission を無視してファイルを保存します。
そのため、Cygwin の Git で管理しているファイル群を NTEmacs で変更すると、file mode の変更が頻繁に検出されてしまいます。
そこで、git diff の結果を使用して、必要があれば file mode を元に戻す hook を書いた……のですが、書き終ったあとに
$ git config core.filemode false
だけで良い事がわかりました :(
何となく惜しいので、書いたコードも晒しておきます。後で何かの役に立ちますように……。
(and (eq system-type 'windows-nt) (executable-find "chmod") (add-hook 'after-save-hook (lambda () (let* ((git-dir (egg-git-dir)) (base-dir (and git-dir (string-match "\\(.+\\).git" git-dir) (match-string 1 git-dir))) (file-name (and base-dir (string-match (format "%s\\(.+\\)" base-dir) (buffer-file-name)) (match-string 1 (buffer-file-name)))) (old-mode (and file-name (with-temp-buffer (call-process "git" nil t t "diff" file-name) (goto-char (point-min)) (when (re-search-forward "^old mode.+\\([0-9]..\\)$" nil t) (match-string 1)))))) (when old-mode (call-process "chmod" nil t t old-mode (buffer-file-name)))))))
extended-riece-keyword-message-filter
Riece 上で、指定した nick から発言があった場合に強調表示する advice.
特定の人のポストをnotifyに出したい
http://wassr.jp/user/kuraku/statuses/hefXosqfhq
riece-keyword-message-filter に渡ってる message ってベクタで、中に発言者情報も含まれているから、それ見てなんかする advice 書けばよいかも
http://wassr.jp/user/elim/statuses/2EPjDvguI0
Wassr でこんな遣り取りがありましたので、ひとまず書いてみました。
(defvar riece-notify-nicks (list "elim")) (defadvice riece-keyword-message-filter (around extended-riece-keyword-message-filter (message)) (let ((speaker (aref (riece-message-speaker message) 0)) (message-text (riece-message-text message))) (mapcar (lambda (nick) (when (string-match nick speaker) (put-text-property 0 (length speaker) 'riece-overlay-face riece-keyword-face speaker) (put-text-property 0 (length message-text) 'riece-overlay-face riece-keyword-face message-text))) riece-notify-nicks)) ad-do-it) (ad-enable-advice 'riece-keyword-message-filter 'around 'extended-riece-keyword-message-filter)
riece-notify-nicks で指定した nick から発言があると、nick と発言に riece-keyword-face を適用します。
さて九楽さんの意図に沿えているかしら。
pit.el
- ~/.emacs は全て GitHub の公開リポジトリに入れてある
- outputz.el の設定ファイルを書いた
- outputz-key*1を直に書いてあるから git add したくない
- そうだ Pit 使おう
- Pit 使うための elisp 見付からない
- 書くか
というわけで pit.el 書きました。 => Gist
load-path の通っている所へ置いて require してください。
(require 'pit)
使用例一覧
(pit/get 'github.com)
- 設定されていれば alist が、されていなければ nil が返ります。
(pit/get 'github.com '(require ((user . "Your github user name") (token . "Your github token"))))
- 設定されていない値が一つでもあれば minibuffer で入力を促します。
- 既に設定されている値は minibuffer の initial-contents として挿入されます。
- 入力された値で Pit のファイルを更新します。
- 更新後の alist を返します。
(pit/set 'github.com)
- 既に設定されている値が一つでもあれば minibuffer で入力を促します。
- 既に設定されている値は minibuffer の initial-contents として挿入されます。
- 入力された値で Pit のファイルを更新します。
- 更新後の alist を返します。
(pit/set 'github.com '(config ((user . "Your github user name") (token . "Your github token"))))
- 渡された alist を用いて minibuffer で入力を促します。
- 既に設定されている値は一切使われません。
- 入力された値で Pit のファイルを更新します。
- 更新後の alist を返します。
(pit/set 'github.com '(data ((user . "Your github user name") (token . "Your github token"))))
- 渡された alist の値で Pit のファイルを更新します。
- 更新後の alist を返します。
いずれも alist が返ってきますので、assoc と cdr で value が取り出せます。
たとえば outputz-key でしたら...
(setq outputz-key (cdr (assoc 'key (pit/get 'outputz.com '(require ((key . "Your Outputz key")))))))
かなり冗長ですね。あまり嬉しくない気がしてきました :(