[Conkeror] [PATCH 2/3] Ignore certain functions (eg, define_global_mode) when getting caller.

David Glasser glasser at davidglasser.net
Fri Mar 28 15:25:18 PDT 2008


So, for example, the help page for tab-bar-mode says it is defined
in tab-bar.js, not mode.js.
---
 modules/mode.js  |    1 +
 modules/utils.js |    8 ++++++++
 2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/modules/mode.js b/modules/mode.js
index bce17e5..20552d7 100644
--- a/modules/mode.js
+++ b/modules/mode.js
@@ -31,3 +31,4 @@ function define_global_mode(name, enable, disable)
         I.minibuffer.message(hyphen_name + (conkeror[state] ? " enabled" : " disabled"));
     });
 }
+ignore_function_for_get_caller_source_code_reference("define_global_mode");
diff --git a/modules/utils.js b/modules/utils.js
index f3677fb..c3e1dbf 100644
--- a/modules/utils.js
+++ b/modules/utils.js
@@ -419,6 +419,8 @@ source_code_reference.prototype = {
     }
 };
 
+var get_caller_source_code_reference_ignored_functions = {};
+
 function get_caller_source_code_reference(extra_frames_back) {
     var frames_to_skip = 2;
     if (extra_frames_back != null)
@@ -429,10 +431,16 @@ function get_caller_source_code_reference(extra_frames_back) {
             --frames_to_skip;
             continue;
         }
+        if (get_caller_source_code_reference_ignored_functions[f.name])
+            continue;
         return new source_code_reference(f.filename, f.sourceLine);
     }
 }
 
+function ignore_function_for_get_caller_source_code_reference(func_name) {
+    get_caller_source_code_reference_ignored_functions[func_name] = 1;
+}
+
 require_later("external-editor.js");
 
 function dom_generator(document, ns) {
-- 
1.5.2.5



More information about the Conkeror mailing list