最近よく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/に不具合として報告しておいた。