xyzzyでもBackward Up Listの動きが気に入らない

EmacsのBackward Up Listの動きが気に入らない - 'T - cadr group
M-C-b, f, @はそこそこ使ってたんだけどM-C-uを何故か知らなかった。俺は今まで何を学んできたというのか。

xyzzyでbackward-up-list-or-stringやるならscan-bufferでsyntax文字検索(\s)かなーと思って書き始めたら色々はまった上、結局正規表現検索を使わない方が速かったという。

(in-package "editor")

(export '(up-list-or-string backward-up-list-or-string))

(defun up-list-or-string (&optional (arg 1))
  (interactive "p")
  (unless (zerop arg)
    (let* ((n (signum arg))
	   (skip (if (> n 0) #'skip-syntax-spec-forward
		   #'skip-syntax-spec-backward)))
      (when #1=(eq :string (parse-point-syntax))
	(loop
	  do (progn
	       (funcall skip "^\"")
	       (forward-char n))
	  while #1#)
	(decf arg n))
      (up-list arg t))))

(defun backward-up-list-or-string (&optional (arg 1))
  (interactive "p")
  (up-list-or-string (- arg)))

(define-key esc-map #\C-u 'backward-up-list-or-string)

大分快適になった。これと ~/lisp/sexp.l にあるコマンドはちゃんと覚えておこう。