No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 | 5 || Next»

lhs2tex に適した Emacs の mode はないものか?

mmm-mode で LaTeX mode に Haskell mode を入れればいいのだけど,reparse を勝手にやってはくれないので一々 mmm-parse-buffer とか呼ぶ必要があって面倒.まあ,その部分だけ自分で機能を追加するというのはありかも知れない.改行を入れるたびにバッファをパースしなおすとか.重いかもしれんけど.というか,mmm-mode って最近メンテされてるんか?

そしてメインの作業が進まない.

追記:編集後に0.5 秒間アイドルが続いたらバッファを再パースするように設定してみた.問答無用でバッファ全体を走査するのでとても富豪的なのだけど. そしてマイナーモードに mmm が入っているかどうかの判定も怪しいのだけど.とりあえず満足.

;; for auto-reparsing in mmm-mode
(defun my-mmm-mode-hook ()
  (let ((my-mmm-buffer-modified nil))
	(progn
	  (defun my-mmm-after-change-hook (beg end len)
		(if (let ((l (current-minor-mode-maps))) 
			  (if l (lookup-key (car l) "mmm") nil))
			(setq my-mmm-buffer-modified t)
		  ()))
	  (defun my-mmm-idle-timer-hook ()
		(if my-mmm-buffer-modified
			(progn
			  (mmm-parse-buffer)
			  (setq my-mmm-buffer-modified nil)
			  )
		  ()
		  ))
	  (run-with-idle-timer 0.5 'true 'my-mmm-idle-timer-hook) 
	  (add-hook 'after-change-functions 'my-mmm-after-change-hook)
	  )))
(add-hook 'mmm-mode-hook 'my-mmm-mode-hook)

Matlab mode を導入

The MATLAB / Emacs integration project で配布中.CVSで落としてきてパス通して (require 'matlab-load) するだけ.

これでソースの可読性が上がった.これ入れる前はよく分からないモードになってて,転置の演算子が文字列の開始に認識されてぐちゃぐちゃになっとったからなぁ.

さて,ソースの解読を進めるか.

emacs23 でフォント設定を新しいフレームにも適用しよう

立ち上がった直後のフレームのフォント設定はできてたんだけど,C-x 5 2 とかで新しいフレームを作った時にはフォント設定がデフォルトになるのが微妙だった.で,それなら新しいフレームの作成時に現在のフレームのフォント設定をコピーできりゃいいんじゃないかと思って色々調べてみたら… 結局 modify-all-frames-parameters という現在及び将来のフレームの設定を変更する関数に行き着いた.

で,最初のフレームのフォント設定が終わったところでその関数に設定したフォントの設定を投げてあげると幸せになる.

(modify-all-frames-parameters (list (assq 'font (frame-parameters))))

そして assq とかいうクエリ関数があることを初めて知った.自分で書こうとしたのは馬鹿だった.

emacsについて今日学んだこと

1.tramp でリモートのファイルを開いているときに M-x shell でシェルを立ち上げると,ちゃんとトンネル掘ってリモートのシェルが立ち上がってくれる.もうターミナルソフト要らない.

2.M-x shell で ls とか打つと色付のためのエスケープシーケンスが酷いことになるが,次を.emacsに書いておくと幸せになれる.

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

NTEmacsの23に移行

IMEとかのパッチを当てたバイナリが2ちゃんねるのNTEmacsスレに上がってたそうで,そのバイナリを手に入れて22から23に移行.Vistaと7で使っているけど今のところ問題無し.

emacs の tramp で multi-hop に sshx を

デフォルトだと multi のときに sshx が使えない.このせいで接続がうまくいかなかったので tramp-multi-connection-function-alist に sshx を追加するように .emacs に以下を追記.

(require 'tramp)
(add-to-list
 'tramp-multi-connection-function-alist
 '("sshx" tramp-multi-connect-rlogin "ssh -t -t %h -l %u /bin/sh%n"))

これでようやく

/multi:sshx:user1@host1:sshx:user2@host1:~/path/to/file

が通るようになった&ファイル編集が出きるようになった.

ちなみに,新しいtrampだとmultiがサポートされておらず,tramp-default-proxies-alist に (HOST USER PROXY) というエントリを追加する.こいつは,USER@HOST にあるファイルにアクセスするには PROXY を踏み台にしろということを意味する.なので,上の例だと

(add-to-list 'tramp-default-proxies-alist
             '("host1" "user2" "/sshx:user1@host1:"))

とすりゃいい.多分.

«Prev || 1 | 2 | 3 | 4 | 5 || Next»
Search
Feeds

Page Top