Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-10-17

EmacsのBackward Up Listの動きが気に入らない(2)

| 23:48 | EmacsのBackward Up Listの動きが気に入らない(2) - わだばLisperになる を含むブックマーク はてなブックマーク - EmacsのBackward Up Listの動きが気に入らない(2) - わだばLisperになる

昨日のコードだと

(("foo\"''\"\"\"\"((((((\"\"))))))\"\"\"\"\"\"\"\"\"\"\"BARBAZ"))

のような場合に上手く動かないのでちょっと修正。何も考えず直前のダブルクォートを見ていただけだったので、ダブルクォートがエスケープされている場合に意図しない動きになっていました…。

(defun up-list-or-string (&optional arg)
  (interactive "^p")
  (or arg (setq arg 1))
  (let ((inc (if (> arg 0) 1 -1))
        (in-string-p (in-string-p)))
    (cond (in-string-p
           (let* ((in-string-p (char-to-string in-string-p))
                  (p (search-backward in-string-p)))
             (while (string= "\\" (buffer-substring (1- p) p))
               (setq p (search-backward in-string-p))))
           (setq arg (- arg inc))
           nil)
          ('T (while (/= arg 0)
                (goto-char (or (scan-lists (point) inc 1) (buffer-end arg)))
                (setq arg (- arg inc)))))))

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20101017