修正したつもり
先に書いたhoge-wordは試したら色々エラーが出たので修正。したつもり。というか単語区切りがどこにするか結構意味不明だったので相当適当。
;v0.02 (defun hoge-word() "キャレットの付近の単語を返す" (interactive) (let ((start nil) (end nil)) (if (looking-at "\\_<") (setq start (point)) (setq start (and (skip-syntax-spec-backward "w_") (point)))) (if (not (eolp)) (setq end (and (skip-syntax-spec-forward "w_")(point))) (setq end (point))) (buffer-substring start end)))
これもgoto-letが返す値が気に食わなかったので修正
;v0.02 ;commentとか正規表現に(が出てくると上手くいかないので避ける方法が要るかも。 (defun goto-let() "キャレットがletの括弧内ならばletのある所に移動" (let ((cp (point))) (while (not (looking-for "let ")) (dotimes (i 2 t) (while (looking-at "[^)]") (if (looking-at "(") ; if (looking-at "\"")で"を避けた方が良いかも。 (goto-matched-parenthesis)) (forward-char)) (goto-matched-parenthesis)) (forward-char) (when (eobp) (goto-char cp) (message "letの括弧がないかも") (return-from goto-let nil))) t))
これ、大きいファイルでやったら悲惨なほど時間がかかりそうなのでもう少し賢いのが要りそう。面倒なので後回し。