最近よくMeadowが固まる
ずーっと安定していて、
少なくともその安定性については全く不満がなかったMeadowが、
最近よく固まるようになってしまった・・・。
そしてなぜか、固まるときはいつも決まってJavaScriptで書いているときだ。
JavaScriptモードがいけないんだろうか・・・?
JavaScriptで書くのは面白いと思うのだけど、
こうも固まってばかりだといい加減に嫌になってくる。
グリモンにしろAjaxにしろJavaScriptが必須だというのに。。
困ったぁぁああぁああ!
症状
- JavaScriptモードでファイルを編集中にいきなり固まる
- 固まったらMeadowのCPU使用率が99%まで跳ね上がる
- 事前にタスクマネージャを起動しておき、固まった瞬間にMeadowを強制終了させないと、もううんともすんとも言わなくなる
- そうなったらPCを強制シャットダウンさせるしかない
- 再起動後、同じファイルをMeadowで開くとまたすぐに固まる
誰か似たような現象で困ってる方いないでしょうか?(´・ω・`)
自分で見つけた唯一の解決策(というか妥協案?)は、
再起動後、他のエディタで問題のファイルを開いて、
少し手を加えてからMeadowで開き直すというものです。
これをやってるとしばらくは大丈夫なようです。
でもそれでもまたいつ固まるか分からないからビクビク・・・。
ホントに困ったんがーっ!
追記
またまた固まってしまったので、
試しにJavaScriptモードの読み込みをやめてみた。
そしたら固まることなくファイルが開けた・・・。
原因はJavaScriptモード!お前だ!
でも問題の起きてないファイルは.jsでも普通に開けるんだよなー。
なんでなんだっぺー。
追記の追記
javascript.elは過去のも含めてここに置いてあるので、
そこから現在の最新版である2.0beta8ではなく、
1つバージョンを落としたbeta7を入れてみた。
そしたら固まっていた症状が取れた。
ってことは、7から8になって追加されたコードが原因なのかな?
以下は7と8をdiffで比べた結果。
シンタックスハイライトでdiffが使えてちょっと驚き。
ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ
7,8c7,8 < ;; Version: 2.0 Beta 8 < ;; Date: 2006-12-26 --- > ;; Version: 2.0 Beta 7 > ;; Date: 2006-09-11 68c68 < (defcustom javascript-indent-level 4 --- > (defcustom javascript-indent-level 3 203,214d202 < (defun js-continued-var-decl-list-p () < "Return non-nil if point is inside a continued variable declaration < list." < (interactive) < (let ((start (save-excursion (js-re-search-backward "\\<var\\>" nil t)))) < (and start < (save-excursion (re-search-backward "\n" start t)) < (not (save-excursion < (js-re-search-backward < ";\\|[^, \t][ \t]*\\(/[/*]\\|$\\)" start t)))))) < < 217,228d204 < (defun js-inside-param-list-p () < "Return non-nil if point is inside a function parameter list." < (condition-case err < (save-excursion < (up-list -1) < (and (looking-at "(") < (progn (backward-word 1) < (or (looking-at "function") < (progn (backward-word 1) (looking-at "function")))))) < (error nil))) < < 265c241 < (list "[=(][ \t]*\\(/.*?[^\\]/\\w*\\)" 1 font-lock-string-face)) --- > (list "[[:punct:]][[:blank:]]*\\(/.*?/\\w*\\)" 1 font-lock-string-face)) 275,283d250 < < ;; Limitations with variable declarations: There seems to be no < ;; sensible way to highlight variables occuring after an initialized < ;; variable in a variable list. For instance, in < ;; < ;; var x, y = f(a, b), z < ;; < ;; z will not be highlighted. < 285,323c252,260 < (append < js-font-lock-keywords-2 < (list < < ;; variable declarations < (list < (concat "\\<\\(const\\|var\\)\\>\\|" js-basic-type-re) < (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)" < nil < nil < '(1 font-lock-variable-name-face))) < < ;; continued variable declaration list < (list < (concat "^[ \t]*\\w+[ \t]*\\([,;=]\\|/[/*]\\|$\\)") < (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)" < '(if (save-excursion (backward-char) (js-continued-var-decl-list-p)) < (backward-word 1) < (end-of-line)) < '(end-of-line) < '(1 font-lock-variable-name-face))) < < ;; formal parameters < (list < (concat "\\<function\\>\\([ \t]+\\w+\\)?[ \t]*([ \t]*\\w") < (list "\\(\\w+\\)\\([ \t]*).*\\)?" < '(backward-char) < '(end-of-line) < '(1 font-lock-variable-name-face))) < < ;; continued formal parameter list < (list < (concat "^[ \t]*\\w+[ \t]*[,)]") < (list "\\w+" < '(if (save-excursion (backward-char) (js-inside-param-list-p)) < (backward-word 1) < (end-of-line)) < '(end-of-line) < '(0 font-lock-variable-name-face))))) --- > (append js-font-lock-keywords-2 > (list > (list > (concat "\\<\\(const\\|var\\)\\>\\|" js-basic-type-re "\\|" > js-function-heading-1-re "\\|" js-function-heading-2-re) > (list "\\(\\w+\\)[ \t]*\\(,\\|=[ \t]*\\(\".*?\"\\|'.*?'\\|{.*?}\\|.*?,\\)\\|.*\\)" > nil > nil > '(1 font-lock-variable-name-face))))) 429,431d365 < ((js-continued-var-decl-list-p) < (js-re-search-backward "\\<var\\>" nil t) < (+ (current-indentation) javascript-indent-level))
追記の追記の追記
7はシンタックスハイライトに不備があることが分かった。
正規表現を使うときに /\"/ って書くと、
"以降が全部文字列の配色になる、とか。
8はこのあたりの処理も完成されてる。
でも固まるのはこわいよ!
追記の追記の追記の追記
コメントでアドバイスを頂いたので、
http://www.meadowy.org/meadow/に不具合として報告しておいた。