関する問題を調査した際の記録。一例なので汎用的に使える手法ではないけど、こういう感じのことをしているよというのを書き留めておきます。結果的に無駄だった工程も書いています。本道で調査が進むことの方が珍しく、だいたい回り道します。検索にマッチした範囲です。次のマッチ対象にも同様の変更を行います。確認しながら置換したい場合などによく使われる操作です。不正な操作をした場合など様々な場面で警告としてベルを鳴らします。ノーマルモードでそれ以上移動できない方向に移動しようとした場合など、割と些細なことでも鳴ったりします。人によっては煩わしくて鳴らないように設定している人もいると思います。プラグインの利用者であればそれも良いかと思います。無効にしてしまえば今回の問題は解決します。ベルを無効にすることはコンパイラの警告を全て無視しているようなものです。プラグインの開発をしているので、些細な問題にも気付けるようにベルは有効にしています。調査ベルの厄介なところは、「何か問題が起きた」ということしかわからないところです。メッセージすらない...ハードモードです。オプションを使うことで種類ごとに抑制できます。思って設定してみることに。設定してみると、見事エラーは抑制されました。何もわからないということがわかった...1。結果的にこの調査は完全に無意味でした。何か機能が割り当てられていないか確認。インストールしていたのでこの辺りかもしれないと睨みました。設定を調べてみると、何も割り当てられておらず。呼ばれるまでキーマッピングの設定をしないようです。あてが外れましたが、徐々に絞れてきています。発動によるものである可能性が高いです。unite#handlers#_on_text_changed()内容は記事執筆時点で再現のために出したものなので調査時とは少し違うかもしれません。イベントを削除して、問題が再現するか確認します。パターン的に発動しないことが明確なので最初から除外可能です。消して、問題が再現するか試していきます。全部消してもエラーは出続けました。疑ってみましたが、そもそもこの予想が外れていそうです。実際に起きているイベントを確認してみることに。verbosefile=起きたイベントがファイルに記録されます。ログレベル2をもっと上げれば、実行された全てのスクリプトの行が記録されるので、それを使うこともありますが...今回はベル。ベルは記録されていないので、全てのログを出してもどこで問題が起きたかはわかりません。そこで今回はイベントだけ出します。リピートしたとしてもそこは変わらないわけですね。イベントを消して、再現するかどうか確認します。すると、以下の箇所で問題が発生していることがわかりました。neocomplete#handler#_do_auto_complete('InsertEnter')ここまでわかればあとは該当コードを追っていけば良さそうです。該当コードを追ってみるこの先はおまけ。該当コードは以下のようなもの。内では、補完処理を行っています。ここで実際に起きている処理を思い出して見ます。繰り返すと、一瞬挿入モードに入ってすぐに抜けるのでした。呼び出される頃にはすでに挿入モードを抜けています。今回の問題は、ノーマルモードで補完処理を行おうとして起きていたものでした。ちなみに、この問題はすでに修正してもらえました。問題が起きた際の調査の一例でした。トリガーがわからないとその分難しくなります。他に汎用的な手法として、プラグインを少しずつ無効にしていってどのプラグインが原因か調べる方法もあります。プラグイン数が多いと大変ですが、確実性は高いです。問題を起こしているプラグインさえ特定できれば、最悪原因がわからなくても最小構成での再現を作ることでバグレポートを出すこともできます。バグ調査は地道な作業ですが、快適な編集環境のためにできることからやっていきましょう。正確にはその他のエラー以外のエラーではないことがわかった。例で設定しているのは8。追加した最近ネタ切れ気味なのでたまには更新情報なんぞを。(1)はてなブログをはじめよう!thincaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。