idomenu无法在Javascript模式下工作

时间:2013-12-31 21:29:33

标签: javascript emacs

我的javascript代码看起来像这样:

cs.client.startApplication = function() {

  function attachStepHandler() {
    var stepNodes = goog.dom.getElementsByClass('step');

    function selectActiveElement(element) {
         ...

我想使用idomenu来选择功能,但没有可用的选择。到目前为止,我正在使用idomenu与elisp,clojure和ruby模式没有问题。

idomenu应该使用javascript模式吗?

1 个答案:

答案 0 :(得分:3)

引擎盖idomenu使用相同的函数来构建函数列表,以imenu本身的形式呈现。对我来说,imenu对JavaScript(js-mode)的效果也不好,这就是为什么我这样推出了自己的imenu--generic-function函数:

(defun mo-js-imenu-make-index ()
  (save-excursion
    (imenu--generic-function '((nil "function\\s-+\\([^ ]+\\)(" 1)
                               (nil "\\.\\([^\\. ]+\\)\\s-*=\\s-*function\\s-*(" 1)))))

(defun mo-js-mode-hook ()
  (setq imenu-create-index-function 'mo-js-imenu-make-index)
  (define-key js-mode-map [?\M-i] 'imenu))

(add-hook 'js-mode-hook 'mo-js-mode-hook)

这很好imenu,希望扩展名idomenu能够识别两种类型的函数定义,非面向对象的function someFunc() {…}和面向对象的函数定义{{1} }。

如果您想详细了解其工作原理,请阅读Emacs帮助中的cls.someFunc = function() {…}