howm のメニューが壊れるバグ. バイトコンパイル時にマクロをマクロと見抜けないのが原因だった模様.
← 修正済 (2004-08-15 23:03:47)
howm のテスト版にアップすると、下記のエラーが出ます。make test でも howm-directory さえ設定すれば発生します。
Debugger entered--Lisp error: (invalid-function (macro lambda (&rest body) (\` (progn (setq buffer-read-only nil) (erase-buffer) (\,@ body) (set-buffer-modified-p nil) (setq buffer-read-only t))))) howm-rewrite-read-only-buffer(nil (t howm-after-save) nil) howm-menu-refresh("d:/home/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-menu-open-sub("d:/home/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-menu-open("d:/home/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-keyword-search-open-menu("%menu%" #<window-configuration>) howm-keyword-search("%menu%") ad-Orig-howm-menu(nil nil) howm-menu() * call-interactively(howm-menu)
メニューも
= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"= <<< %menu= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r"[更新] [menu 更新] [menu 編集]
といった風に大変なことになってます。
howm の設定は
(setq howm-directory "~/data/howm/")
だけです。
howm: test040618 Emacs: 21.3.1 system: windows-nt window system: w32 Meadow: Meadow-2.10-dev (ASAGAO)
1.1.2.1 なら動作したので、とりあえず追跡しつつ古いのを使ってます。
やってみました。設定は
(global-set-key "\C-c,," 'howm-menu) (setq howm-directory "~/data/howm/")
(mapc (lambda (f) (autoload f "howm-mode" "Hitori Otegaru Wiki Modoki" t)) '(howm-menu howm-list-all howm-list-recent howm-list-grep howm-mode ))
だけです。howm にメモは 0 の状態で試しました。howm はtest040701 のものです。エラーは
Debugger entered--Lisp error: (invalid-function (macro lambda (&rest body) (\` (progn (setq buffer-read-only nil) (erase-buffer) (\,@ body) (set-buffer-modified-p nil) (setq buffer-read-only t))))) howm-rewrite-read-only-buffer(nil (t howm-after-save) nil) howm-menu-refresh("d:/akihisa/data/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-menu-open-sub("d:/akihisa/data/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-menu-open("d:/akihisa/data/howm/0000-00-00-000000.howm" 1 "*howmM:%menu%*") howm-keyword-search-open-menu("%menu%" #<window-configuration>) howm-keyword-search("%menu%") howm-menu() * call-interactively(howm-menu)
と出て、メニューはエラーが出るものの正常に出ました。ただし、2回連続でメニューを出そうとすると、
= <<< %menu% %"c"[新規] %"D"[複製] 検索(%"s"[固定] %"g"[正規] %"m"[roma]) %"a"[一覧] %"l"[最近] %"A"[前後] %"y"[予定] %"t"[Todo] [全消] %"K"[題↑] [名↑] %"d"[日↓] %"i"[鍵↓] %"r 750 -- [menu 更新][menu 編集]
のようになってしまいます。どうも750のところに以降の文章が隠れてしまっているようです。ナローイングとかになってるのかな。。。
howm-test040701 Meadow-2.10-dev (ASAGAO) svn:revision=3325 GNU Emacs 21.3.1 (i386-mingw-windows98.3000) of 2004-06-30 on iam
(setq howm-menu-top nil) ; メニューをメモ扱いしない (setq howm-menu-file "~/menu.howm") (setq howm-directory "~/iam/howm/") (setq howm-file-name-format "%Y/%m/%Y_%m_%d.howm") ; 1日1ファイル
Meadow-2.00pre2 (KIKYOU) GNU Emacs 21.1.1 (i386-mingw-windows98.3000) of 2004-06-25 on iam howm-test20040703
(setq load-path (cons "z:/gomi/howm-test040703" load-path)) (setq howm-directory "z:/gomi/karappo") (set-language-environment "Japanese") (set-default-coding-systems 'euc-jp) (set-buffer-file-coding-system 'euc-jp) (set-terminal-coding-system 'euc-jp) (set-keyboard-coding-system 'euc-jp) (setq howm-menu-lang 'ja) (require 'howm-mode) (setq howm-ja-dir "z:/gomi/howm-test040703/ja") (howm-menu)
でも同じ症状が発症します. make & make install はしていません.インストールは*.el等のコピーのみです.
(byte-recompile-directory "~/elisp/" 0)
を.emacs.elの最初でしているのですが,この際,
In howm-xemacsp: howm-common.el:213:26:Warning: reference to free variable `xemacsp' howm-common.el:221:1:Error: Symbol's function definition is void: howm-xemacsp
と出て,howm-commonだけ,*.elcが作成されません. この状態(howm-common.elcだけが存在しない.他の*.elcは存在する)だと,同じ症状が発症します.
byte-compileをEmacsの起動時にしないで,全てのhowm-*.el が *.elのみの状態にしておくと症状は発生しません.
emacs起動後
(byte-compile-file "~/elisp/..../howm-common.el")
して,howm-common.elcを作っても やはり症状は発生します.
.emacs.elを
;; emacs.el (setq load-path (cons "~/elisp/howm" load-path)) (byte-recompile-directory "~/elisp/howm" 0)
のみにしてEmacsを起動
Compiling file himitsu/howm/howm-common.el at Thu Aug 12 23:01:34 2004 In howm-first-n: howm-common.el:195:29:Warning: Function `subseq' from cl package called at runtime howm-common.el:223:1:Error: Symbol's function definition is void: howm-xemacsp
とエラー発生. howm-common以外は,*.elcが作成される.この状態で,C-c,,すると,Menuの描写が乱れる
byte-compileなしだと,howm正常動作.
.emacs.elを
(setq load-path (cons "~/elisp/howm" load-path)) (require 'howm) (byte-recompile-directory "~/elisp/howm" 0)
のみにした場合はbyte-compile成功.howmも正常動作.
.emacs.elを
;; emacs.el (setq load-path (cons "~/elisp/howm" load-path)) (byte-recompile-directory "~/elisp/howm" 0)
で,byte-compileした状態だと,以前として,C-c,,を2回すればMenu表示が乱れます.エラーメッセージも最初の報告者と同様なものが表示されています.
.emacs.elを
(setq load-path (cons "~/elisp/howm" load-path)) (require 'howm) (byte-recompile-directory "~/elisp/howm" 0)
のみにして,byte-compileした場合は,howmは正常動作します. 一回だけ,後者のようにbyte-compileすれば動作には問題がないので,特に困ってるというわけではありませんが...
Keyword(s):
References:[修正済]