最近使ってるC-a
xyzzyについてはほぼ忘れかけていたが、別に何もしてなかったというわけでもないので、いろいろ改変してるかもしれないところとかを適当に。
■前にやっていたC-a改造版
割りと需要があったので段落の移動にもC-aで対応してみたもの。段落移動するために「コメントアウトへ移動」と、「インデントへ移動」が犠牲になっているが、実際そういうのは別のキーでも対応しているのでまあいいかなと。今のも一応コメントアウトに対応してた部分も残しているけど、行頭からインデントへ移動するのはなくなっている。
(in-package "editor") ;my-C-a version 0.04 (defun virtual-C-a() "表示行頭へ移動" (interactive) (let ((cp (point)) ; Current-Point (vbol (and (goto-virtual-bol) (point))) ; Virtual-BOL (ip (and (back-to-indentation) (point))) ; Indent-Point (bol (and (goto-bol) (point)))) ; Beging-Of-Line (cond ((= cp bol) (backward-paragraph)) ((= cp ip) (goto-char bol)) ((= cp vbol) (if (> ip vbol)(goto-char bol)(goto-char ip))) ((> cp vbol ip) (goto-char vbol)) ((> cp ip vbol) (goto-char ip)) ))) ;my-C-e version 0.03 (defun virtual-C-e() "表示行末に移動" (interactive "p") (let ((cp (point)) ; Current Point (veol (and (goto-virtual-eol) (point))); Virtual-EOL (eol (and (goto-eol) (point)))) ; EOL (cond ((= cp eol) (if (goto-beginning-of-comment) (forward-paragraph))) ((= cp veol)(goto-char eol)) ((< cp veol eol)(goto-char veol)) (t (goto-eol)) ))) (defun goto-beginning-of-comment() "commentの開始位置に移動" (interactive) (unless comment-start (message "No comment syntax defined") (return-from goto-beginning-of-comment t)) (let (match-pos (cp (point))) (goto-bol) (if comment-start-skip-function (setq match-pos (funcall comment-start-skip-function)) (let ((eol (save-excursion (goto-eol) (point)))) (while (and (scan-buffer comment-start-skip :regexp t :tail t :limit eol) (or (eq (parse-point-syntax (point)) :string) (progn (setq match-pos (point)) (save-restriction (narrow-to-region (match-beginning 0) (point)) (skip-syntax-spec-backward " ") (skip-syntax-spec-backward "^ ")) nil)))) (unless match-pos (goto-char cp)) )) )) ;keymap (global-set-key #\C-a 'virtual-C-a) (global-set-key #\C-e 'virtual-C-e)