2017-05-29 6 views
0

Emacs 25.2では、突然変数edebug-traceがなくなりました。 setqで設定しても効果はありません(トレースバッファは表示されません)。何が起こった可能性があり、どうすれば修正できますか?edebug-traceが存在しなくなった

ところで
+0

'edebug'ライブラリが実際にロードされていると思いますか?私は25.2でその問題を再現することはできません。その変数は存在し、広告として機能します。 – phils

+0

@phils 'edebug-defun'が存在します。これは、図書館がロードされていることを示す明確な兆候ですか? – AlwaysLearning

+0

いいえ、 'edebug-defun'はオートロードされているので、Emacsはライブラリがロードされていないとそれを知っています。その関数、OTOHを呼び出す*の場合、ライブラリがロードされます。 '(featurep 'edebug)'が 'edebug'がロードされていれば' t'を返します。 – phils

答えて

1

、私はORG-モードのリンクをクリックしたときに呼び出された機能を知るための別の方法があり

あなたは、私がいない提案(そのようにすべてのorgの機能をトレースするtrace.elを使用することができますあなたがリンクをクリックする準備ができるまでこれを評価する)。

(mapatoms 
(lambda (sym) 
    (and (fboundp sym) 
     (string-prefix-p "org-" (symbol-name sym)) 
     (trace-function-foreground sym)))) 

その後、あなたがトレースを削除することができます

のMxuntrace-allRET

編集:我々はまた、elp-instrument-packageたalaコマンドにその変換できます

(defun my-trace-package (prefix) 
    "Trace all functions which start with PREFIX. 
For example, to trace all ELP functions, do the following: 

\\[my-trace-package] RET elp- RET" 
    (interactive ;; derived from `elp-instrument-package'. 
    (list (completing-read "Prefix of package to trace: " 
          obarray 'my-traceable-p))) 
    (if (zerop (length prefix)) 
     (error "Tracing all Emacs functions would render Emacs unusable")) 
    (mapc (lambda (name) 
      (trace-function-foreground (intern name))) 
     (all-completions prefix obarray 'my-traceable-p)) 
    (message "Use %s to cease tracing." 
      (substitute-command-keys "\\[untrace-all]"))) 

(defun my-traceable-p (fun) 
    "Predicate for `my-trace-package'." 
    (or (functionp fun) (macrop fun))) 
+0

'my-traceable-p'では、' symbolp'テストが冗長に見えます。 OTOHでは、その後のテストは十分正確ではありません。私は '(または(functionp fun)(macrop fun))'をテストする方が良い選択だと思う。 – Stefan

+0

それに応じて更新します。私は 'symbolp'テストについても同じことを感じましたが、これは' elp-profilable-p'コード(および 'elp-instrument-package'によるその述語の使用)に基づいていました。私が見ていないもの。 – phils

関連する問題