EmacsWiki のコードが冗長なので短くしてみた。

(setq erc-prompt (lambda ()
                   (let* ((buffer (buffer-name))
                          (channel (when (string-match "\\(#[^@]+\\)" buffer)
                                       (match-string 1 buffer))))
                     (erc-propertize
                      (concat
                       (or channel
                           (if (and (boundp 'erc-default-recipients) (erc-default-target))
                               (erc-default-target)
                             "ERC"))
                       ">")
                      'read-only t 'rear-nonsticky t 'front-nonsticky t))))

elisp的にはこういうのどうかくのが良いのかわからんけどとりあえず短くはなった。

by typester / at 2009-01-26T14:52:00 / emacs / Comment

id:IMAKADO さんにバッファ作らずに使わずに正規表現マッチする方法教えてもらったのでちょっと短くできた。

(setq erc-prompt (lambda ()
                   (let* ((buffer (buffer-name))
                          (channel (when (string-match "\\(#[^@]+\\)" buffer)
                                       (match-string 1 buffer))))
                     (if channel
                         (erc-propertize (concat channel ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
                       (if (and (boundp 'erc-default-recipients) (erc-default-target))
                           (erc-propertize (concat (erc-default-target) ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
                         (erc-propertize (concat "ERC>") 'read-only t 'rear-nonsticky t 'front-nonsticky t))))))
by typester / at 2009-01-26T14:41:00 / emacs / Comment

ERCのプロンプトにチャンネル名表示

というネタは EmacsWiki: Erc Configuration の Channel-specific prompts に書いてあるんだけど、そこにも書いてあるとおり、初回表示時にはチャンネル名にならないのでこんな感じにハック。

(setq erc-prompt (lambda ()
                   (let* ((buffer (buffer-name))
                          (channel (with-temp-buffer
                                     (insert buffer)
                                     (beginning-of-buffer)
                                     (when (re-search-forward "\\(#[^@]+\\)" nil t)
                                       (match-string 1)))))
                     (if channel
                         (erc-propertize (concat channel ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
                       (if (and (boundp 'erc-default-recipients) (erc-default-target))
                           (erc-propertize (concat (erc-default-target) ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
                         (erc-propertize (concat "ERC>") 'read-only t 'rear-nonsticky t 'front-nonsticky t))))))

バッファ名からチャンネル名部分とるようにした感じ。

1:1 トークとかどうなるかわからないのでとりあえず EmacsWiki のルーチンも書いておいた。

by typester / at 2009-01-26T11:41:00 / emacs / Comment

dopplr.el

最近 ERC つかって IRC も emacs でやるようにしたのだけど、昔 irssi 用に作った dopplr.pl とおなじことが emacs でもしたくなったのでちょっと書いてみたりした。

dopplr.el

使い方は dopplr.pl と同じで最初に

(setq dopplr-api-token "your api token") ; M-x customize-group RET dopplr でもできる

しておいて、あとは

M-x dopplr-local-clock RET miyagawa

するという感じになっています。

dopplr.el などとたいそうな名前ですがまだこれしか作ってません。

はじめて設定以外で elisp 書いたけどむずかしい。すごいぐちゃぐちゃになってしまった。絶対もっとうまく書けるはず。

by typester / at 2009-01-23T14:38:00 / emacs · elisp / Comment

CarbonEmacs + CodingFontTobi

フォント設定もさらしておく。

`~/.emacs.d/conf/carbon-emacs-05font.el

;; i <3 bitmap font
(setq mac-allow-anti-aliasing nil)

(create-fontset-from-fontset-spec
 (concat
  "-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-tobi"
  ",ascii:-apple-codingfonttobi-medium-r-normal--16-120-72-72-m-120-*-*"
  ",japanese-jisx0208:-apple-osaka-*"
  ",katakana-jisx0201:-apple-osaka-*"))

(create-fontset-from-fontset-spec
 (concat
  "-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-proggy"
  ",ascii:-apple-proggycleanttsz-medium-r-normal--16-120-72-72-m-120-*-*"
  ",japanese-jisx0208:-apple-osaka-*"
  ",katakana-jisx0201:-apple-osaka-*"))

(set-default-font "fontset-tobi")

CodingFontTobi と Proggy のフォントセットを定義して気分で使い分けてる。

デフォルトの Monaco+ヒラギノ も捨てがたく、たまに使いたくなったりするのでアンチエイリアスは

;; アンチエイリアストグル
(defun my-mac-toggle-antialias ()
  (interactive)
  (if mac-allow-anti-aliasing
      (setq mac-allow-anti-aliasing nil)
    (setq mac-allow-anti-aliasing t)))

こんなんでトグルできるようにしてる。この関数よびだしたあと画面が更新されると反映される。

こういう環境依存のコードは今までは自前で環境見てロードしていたのだけど、id:IMAKADO さんが公開してくれた init-loader 使うと carbon-emacs-* とか言うファイルは CarbonEmacs の時だけ読む、とかできて便利。

by typester / at 2009-01-20T16:06:00 / emacs / Comment

CarbonEmacsを使ってみる

先週 id:IMAKADO さんにあって、emacs 使いこなしててかっこよかったので影響されて僕も GUI な emacs が使いたくなったのでこの間書いた Cocoa Emacs を使い出そうとしたんだけど、なんかどうがんばってもバッファを縦分割したときのボーダーを表示させることが出来ないという理由であきらめた。(フリンジは消したかった)

なので CarbonEmacs を入れた。こっちはなんかボーダー出た。

Cocoa Emacs なら multitty で端末内でファイル開いちゃえばいいんだけど、CarbonEmacs にはそれがないので普通に emacsclient で開き、閉じたら端末にフォーカスが戻るという設定を書いた。

具体的には emacsclient で開いたときは勝手に CarbonEmacs がアクティブになるので、CarbonEmacs 側で閉じたときに端末に戻るように、

;; emacsclientで開いた端末をアクティブにする。とりあえずiTerm決めうち
(add-hook 'server-done-hook
          (lambda ()
            (do-applescript "tell application \"iTerm\"
                                activate
                             end")))

とするだけでOKだった。

by typester / at 2009-01-20T11:28:00 / emacs / Comment

emacs23をつかってみた

昨日のエントリで CarbonEmacs を使えばいいのかもと思ってちょっとためしてみようと思ったのだけど、どうせなら MultiTTY 使いたいなーなどという気持ちが出てきてしまった。

それで emacs23 ベースな CarbonEmacs 的なのがないかと探してみたら、いまの CVS の emacs は普通に Emacs.app を作ることができるみたい。

cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs

とかで co してきて

./configure --with-ns
make
make install

で nextstep ディレクトリに Emacs.app ができている。

CLI で起動したい場合は

Emacs.app/Contents/MacOS/Emacs -nw

でおk。emacsclient は

Emacs.app/Content/MacOS/bin/emacsclient

にある。etags とかもここにある。

とりあえず multitty をためしてみるために Emacs.app と CLI (-nw) と両方立ち上げて

emacsclient -t /path/to/file

としてみたところ、ちゃんとどちらの emacs でも同じファイルを開き、編集内容も共有できた。

これで徐々に GUI な emacs に移行できるかなー。

by typester / at 2008-11-06T13:58:00 / osx · emacs / Comment

vc-annotate

Emacs の vc-annotate - naoyaのはてなダイアリー

そういえば設定したなとおもっておもむろに M-x vc-annotate してみたら git でもできた!

untitled

設定はこんなんで

http://svn.coderepos.org/share/dotfiles/emacs/typester/.emacs.d/conf/50_git.el

elファイルはgit自体についてくる。

by typester / at 2008-04-04T17:18:00 / emacs · git / Comment

.emacsを公開した!

kentaroさんが最近やたらemacsづいてるので影響を受けて先週末に.emacsを整理したのでついでにcodereposにあげてみました。

http://coderepos.org/share/browser/dotfiles/emacs/typester

整理したら300行ちょっとしかなくなってしょんぼり。まぁまだ今までやってた設定全部は移せてないのだけども。

あとmmm-modeに再挑戦したがやっぱりむりだった>< javascript.elでコメントアウトしたりしてるのがその名残。

nxml-mode + css-mode はうまくいくんだが javascript-mode とだとうまくうごかんなぁ。

by typester / at 2008-03-18T02:34:00 / emacs / Comment

TDD支援elisp

TDDの勘所とTDD支援超簡易Emacs Lisp - aikeの日記

が面白いなーと思ったので自分用に改造してみた。

モードラインの色を変えるようにしただけだけど。

2008-02-21_1542

;; C-c m でTDDのモード切替え

(defvar tdd-bgcolor-alist
      '(("Think"      ."snow")
        ("Red"        ."#ff4444")
        ("Green"      ."#44dd44")
        ("Refactoring"."#ffaa44")))

(defvar tdd-bgcolor-mode 3)
(defvar tdd-bgcolor-mode-name "")
(let (
      (cell (or (memq 'mode-line-position mode-line-format)
                (memq 'mode-line-buffer-identification mode-line-format)))
      (newcdr 'tdd-bgcolor-mode-name))
  (unless (member newcdr mode-line-format)
    (setcdr cell (cons newcdr (cdr cell)))))

(defun tdd-bgcolor-rotate ()
  (interactive)
  (let (pair)
    (if (>= tdd-bgcolor-mode 3)
        (setq tdd-bgcolor-mode 0)
      (setq tdd-bgcolor-mode
                (+ tdd-bgcolor-mode 1)))
    (setq pair
      (nth tdd-bgcolor-mode tdd-bgcolor-alist))
    (setq tdd-bgcolor-mode-name (format "[%s]" (car pair)))
    (message tdd-bgcolor-mode-name)
    (set-face-foreground 'mode-line (cdr pair))))

(global-set-key "\C-cm" 'tdd-bgcolor-rotate)
by typester / at 2008-02-21T15:44:00 / emacs / Comment

1 2 3 4 5 6

(Page 3 of 6)