Sat, 11 Nov 2006

emacs設定

最近の追加したemacs設定。

  • Esc-c: カーソル位置の単語をコピー
  • Ctl-c,g : カーソル位置の単語を指定してgrep-findを実施
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  copy word on cursol-point
;;
(ffap-bindings)
(global-set-key "\M-c" 'ffap-copy-string-as-kill)
(defun grep-find-current-word ()
  (interactive)
  (let ((command "find . -type f -print0 | xargs -0 -e grep -n -e "))
    (ffap-copy-string-as-kill)
    (grep-find (format "%s %s"
                       command (car kill-ring)))))
(define-key global-map "\C-cg" 'grep-find-current-word)
  • Esc-Space: 補完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;    hippie-expand
(define-key esc-map " " 'hippie-expand) ;; M-SPC
  • Ctl-c,j: 指定行へのジャンプ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;    goto-line
(define-key global-map "\C-cj" 'goto-line)

2006/11/16追記

複数階層からなるtagsファイルを作成:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; create tag file recursive
(defun create-tags-file-recursive ()
 (interactive)
 (let ((tag-file "tags"))
   (shell-command
    (format "find `pwd` -name \"*.[ch]\" -print | etags - -o %s" tag-file))
   (visit-tags-table tag-file)))

Sun, 16 Jul 2006

emacsでカーソル行の単語をコピーとかgrepとか

etagsのfind-tag(M-.)コマンドやら、sdicのsdic-describe-word-at-pointと かでは、コマンド入力時にカーソルがある付近の単語をデフォルトの文字列と して認識してくれるのに、よく使うgrep-findではわざわざ検索文字列を入れ ないと検索してくれなくて不便だなーと思ったのでちょっと調べてみた。

本当は、grep-find-commandが登録されてるかどうかで挙動を変えたかったん だけど、挙動がMeadowとlinux版emacsで微妙に異なったりしたので、とりあえ ず下のような所で妥協してみた。kill-ringに入れるので、その後pasteもでき ます。

ついでに単にkill-ringに入れるだけってのも、キーバインドに登録してみた。

(ffap-bindings)
(global-set-key "\M-c" 'ffap-copy-string-as-kill)

(defun grep-find-current-word ()
  (interactive)
  (let ((command "find . -type f -print0 | xargs -0 -e grep -n -e "))
    (ffap-copy-string-as-kill)
    (grep-find (format "%s %s"
                       command (car kill-ring)))))
(define-key global-map "\C-cG" 'grep-find-current-word)

もっと格好良いやり方があれば教えてください。


Sat, 12 Nov 2005

Pyblosxom用エントリファイルのTrackBack送信

さらにさらにローカルからTrackbackが打てるようなスクリプトも作ってみた。

参考資料

Pyblosxom用のエントリファイルの構成は、以下のようになっているので それを利用してtitleとexcerpt(本文の一部)を抜き出す。


Continue Reading...: "Pyblosxom用エントリファイルのTrackBack送信"



Pyblosxom用エントリファイル投稿後の更新ping

これまでのエントリで

  1. Pyblosxom用エントリファイル作成
  2. Pyblosxom用エントリファイルのFTP送信

と来たので、こうなると当然更新pingもローカルマシン上で実行 できたらいいよね、ということで weblogUpdate.py を作ってみました。

feedburnerを使っているためまずはそちらに更新pingを送り、 feedburner側のフィードが書き換わったであろう頃にその他の サーバに更新pingを送る、というようにしています。

どうせなら、emacs上から実行できた方が流れとしてはスムーズなので 下記のように.emacsに設定。FTP送信用に設定したpyentry-ftp関数内 から呼び出すようにしてももちろんいいんだけど、ftpでアップロード した後に文章の見栄えを調整するためにちょこちょこいじるので、 あえて別にしています。

(defun pyentry-ping ()
  (interactive)
  (shell-command "~/src/python/weblogUpdate.py"))

;アクセスしやすいようキーコマンドを下記のように割り当て
(global-set-key "\C-cF" 'pyentry-ftp)
(global-set-key "\C-cP" 'pyentry-ping)

Mon, 24 Oct 2005

作業メモの取り方と、Meadowでの日本語検索(utf-8)

メモの取り方は世の中には色々あって、実際に

  • Wiki系
    • WalWiki
    • emacs-wiki
  • ChangeLogメモ
  • reStructuredText記法を使ったメモ

やらの方法を試してみたんだけど、しばらく使うとどれも飽きてしまって、これだ!こ れで俺はメモを取り続けるぞ!というものにまだめぐり合えていない。そこで、現在は Windows/Cygwin/apacheの環境で、pyblosxomを使った作業メモを実践している。この方 法の利点と欠点は、

  • 利点: エントリを記述したり修正したりするときには自分が普段使ってるMeadowを使って編集できる
  • 欠点: pyblosxomは一つのエントリごとに一つのファイルを作成する方式なのでやたらとファイルが増えてしまう

やたらとファイル数が増えてしまうというのは結構不満なんだけど、他によさそうな方 法を今のところ思いつかないのでとりあえずこの方法で4ヶ月程実践している。


Continue Reading...: "作業メモの取り方と、Meadowでの日本語検索(utf-8)"