Emacs在缓冲区中打印javascript对象属性或对象轮廓

Emacs在缓冲区中打印javascript对象属性或对象轮廓,javascript,emacs,editor,buffer,Javascript,Emacs,Editor,Buffer,我有一个javascript对象,如下所示: var myObj = { prop1 : 'abc', prop2: function(){ return true; }, prop3: function(){}, ... // and so on }; 在emacs中是否有办法查看myObj拥有的所有属性的列表?我可以点击这个属性,它会把我带到javascript文件中的事件。出现在M-x行上的某个内容,显示新

我有一个javascript对象,如下所示:

var myObj = {
    prop1 : 'abc',
    prop2: function(){
              return true;
           },
    prop3: function(){},
    ... // and so on
};
在emacs中是否有办法查看myObj拥有的所有属性的列表?我可以点击这个属性,它会把我带到javascript文件中的事件。出现在
M-x行上的某个内容
,显示新缓冲区中的“可单击”事件


我可以做
M-x list js props myObj
,它会打开前面提到的缓冲区。

我不知道有什么东西能完全满足您的要求,但您可以尝试以下几点:

  • 应该向您显示函数\(尽管它不显示其他属性)

    M-x speedbar
    开始,然后单击“+”图标展开节点。单击函数名会将您带到缓冲区中匹配的事件

    如果您使用的是Emacs的GUI版本,那么Speedbar工作得最好,因为它会启动一个新的框架。如果您在控制台中工作,请查看

  • 您可以使用像(或)这样的独立JavaScript分析器快速获取建议,例如

    var myObj = {
        foo = // Hrm, what do I want?
    };
    
    otherObj. // See completions of otherObj here, find the one you want,
              // and complete.
    
    完成另一个对象后,可以使用
    tern find definition
    (默认情况下绑定到
    M-。
    )转到属性的定义,并使用
    tern pop find definition
    (默认情况下绑定到
    M-,
    )返回

    注意:几周前,我通过MELPA安装Tern时运气不太好。相反,我跟着

  • 最后,我可能会提供一些帮助,尽管我找不到任何明显的东西。不过,使用elisp修改您的需求可能是最容易的


  • 在Ubuntu上的Emacs 24.3.50.1上,速度栏开箱即用地显示了我的JavaScript函数。

    您打算如何使用它?我能想到一些可能有用的东西,但没有一件能完全满足您的要求。一个用例可以是我正在编写一个方法,比如说“prop19”,它可以做一些事情,我记得这样一个功能在3周前已经在同一个对象“myObj”中编写。我想不起那个方法的名字了。因此,我可以使用它,然后查看列表,然后说,“啊!prop5”已经有了功能。让我看看这个功能”。有些编辑器,比如Eclipse,有“ctrl-click”组合,可以让您导航到方法/类中。我认为Emacs没有这个功能。事实上,Emacs确实有标准的键绑定(
    M-。
    查找对象的定义,
    M-,
    返回到您所在的位置),但这些绑定通常依赖于外部的、特定于语言的工具来知道去哪里<代码>标签文件是一个常见选项;对于JavaScript,我建议使用Tern,如下所述。@fenderplayer Try
    M-x imenu RET TAB
    。函数名不会按对象分组,但这将为您提供“文件中的主要定义(按名称)”。更多关于Imenu的信息。