golf-buffer-scheme

ゴルフしたコードが余りに読み辛いのでscheme-modeを導入した上で作成。

(defun golf-buffer-scheme () (interactive)
  (let ((spc "[ \r\n\t]") (-- "\\|"))
    (replace-buffer
     (compile-regexp
      (concatenate
       'string
       spc "*"
       "\\(" ; <1>
       "\"\\(?:[^\"]\\|\\\\.\\)*\"" ; string
       --
       "/\\(?:[^/]*\\|\\\\.\\)*/" ; regexp
       --
       "[]()'`,[]" ; paren / quote
       --
       spc ; extra spaces
       "\\)" ; </1>
       spc "*"
       ))
     "\\1" :regexp t)))
(add-hook
 '*scheme-mode-hook*
 #'(lambda ()
     (define-key *scheme-mode-map* #\C-M-g 'golf-buffer-scheme)
     ))

正規表現あってのxyzzy-lispなのにリテラルが無いのはヒドイ。
*1 *2

*1:08-06-30 訂正(文字クラス内はエスケープ付加?)

*2:08-07-03 更新:シンボル間の空白も削除