问题标签 [emacs-semantic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
402 浏览

emacs-semantic - Emacs semantic lines

I tried a solution shown here which did not work for me. Even just disabling decoration mode did not work. So now I am wondering exactly what these lines above my text are, and how I can disable them. Maybe it's not even semantic? I'm not really sure...

Here's my dotfile:

enter image description here

0 投票
1 回答
646 浏览

c++ - 由于 C++ 模式下的缩进,Emacs imenu 和 speedbar+semantic 失败

我的问题是 imenu 或 speedbar/semantic 由于缩进而失败。对于这个简单的文件,就可以了:

但是如果我想将函数 bar 放在命名空间中并缩进它的代码:

  • 使用 speedbar((require 'semantic/sb)在 init.el 中),我在 speedbar 框架中没有文件标签,并且在 minibuffer 中出现“文件模式规范错误:(void-function c-subword-mode)”

  • 使用 MX imenu,我在 minibuffer 中得到“没有适合在此缓冲区中找到的索引的项目”

失败的示例代码:

导致它失败的不是命名空间,而是标识。以下也失败了:

知道为什么以及如何让它工作吗?

谢谢!!

编辑:好的,解决方案确实是 speedbar+sementics。它确实有效(我的 init.el 出了点问题......)

0 投票
0 回答
69 浏览

emacs - 当typedef和struct在不同文件中时,在emacs语义中解析struct typedef

假设我有这样的 typedef 结构定义:

一切皆好。语义很好地解析它,如果我这样做..

我得到结构特定的完成弹出菜单。没问题。

但是,如果 typedef 在一个文件中并且结构声明在另一个文件中,那么我就有问题了。没有完成弹出菜单。

ip_route.h

ip_route_internal.h

然后完成不起作用。

0 投票
0 回答
121 浏览

emacs - c-mode 单引号字体化

我刚刚注意到单引号被字体锁定并带有警告面,从而摆脱了整个缓冲区的字体化。有谁知道为什么会这样?例如,

版本信息:emacs 26.0.50,语义版本 2.2。从 开始,然后在缓冲区中emacs -Q启用语义模式。M-x semantic-mode

0 投票
1 回答
260 浏览

c++ - Emacs Semantic 无法在 Windows 上正确解析文件

最近我正在将我的编程环境从 CentOS 切换到 Windows。我是 Emacs 的粉丝,所以我也想用 Emacs 在 Windows 上编程。一切都进行得很顺利,但是当我使用 emacs 语义来解析系统包含时,问题就来了。

似乎emacs语义会选择解析哪个文件,哪个不解析。我指定了用于解析 emacs 的 MS Visual Studio 包含目录,但它不会。我也尝试过 MinGW 头文件,但 emacs 只解析其中的几个文件。我的 init.el 文件是这样的

我不知道我是否应该在 Windows 上的 emacs 中使用 / 或 \,但似乎两者都可以。如果我使用semantic-c-describe-environment输出是

可以看到我也试过用EDE来指定系统包含路径,但是也没用。但是,语义的其他功能效果很好。如果我编写#include "lib1.h"#include "headers/lib1.h"使用 EDE #include <myproj/headers/lib1.h>,它们都运行良好。但是,当涉及到 VS 包含文件或 MinGW 包含文件时,事情就会出错。我想如果语义首先检查文件,发现有问题,那么它只是跳过文件?那么我该如何解决这个问题呢?

现在问题有了新的进展。我已经尝试使用 SDL2 库在我的旧项目中使用语义。在我为 EDE 编写项目配置并打开其中一个源文件后,发生了一些事情。语义解析一些系统包含的文件,如 stdio.h。然后我可以通过语义跳转到它。

然后我使用 iostream 尝试了另一个文件。然而语义仍然没有解析它。但是我可以使用C-c , u命令跳转到文件并手动调用语义来解析它。然后我使用 iostream 回到我的原始文件,使用语义的公司后端现在可以很好地工作。

所以现在我可以确保问题在于语义不解析文件本身。也许是因为它只解析文件名末尾带有 .h 或 .c 的文件?但是在 linux 上它适用于像 iostream 这样的文件,为什么在 windows 上它不会呢?如何解决?

0 投票
0 回答
148 浏览

emacs - 允许语义仅解析当前缓冲区

在使用语义模式的emacs中编辑C文件时,有没有办法防止语义递归解析包含的文件,只允许它解析当前缓冲区?我喜欢一些只需要解析当前缓冲区(突出显示...)的语义功能,而我使用 rtags 进行导航。我不想关闭语义,但由于解析非常慢并且阻塞了 emacs,我想避免它。

0 投票
0 回答
113 浏览

emacs - 在派生模式中禁用语义

如何停止semantic-mode在派生模式下破坏缓冲区局部变量?在我的情况下,我想要 C/C++ 中的语义,但我不希望它以从这些派生的模式进行设置。目前,我对以下内容使用语义

并尝试禁用它

但是,如果我进入派生模式,例如bison-mode,语义仍然运行它的设置,因为它被挂接到 c/c++ 中,破坏了我在我的 中设置的任何变量bison-mode-hook,在这种情况下imenu-create-index-function。如何停止semantic设置派生模式?

0 投票
1 回答
493 浏览

python-3.x - 如何使用 helm-semantic-or-imenu 进行带有类型注释的 python 代码的代码导航

我想使用 helm-semantic-or-imenu 命令来导航带注释的 Python 代码类型的组件,但是无论用于识别组件的代码分析器似乎都无法识别带注释的 Python 代码类型。带有返回类型注释的函数根本无法被识别,带有注释参数的函数在签名中显示类型而不是参数名称看截图

我遇到的主要问题是我没有正确理解参与这项工作的组件(当它工作时)。显然,以某种方式更新代码分析器可能会有所帮助,但我在哪个项目中找到了呢?舵?语义?菜单?或者正如有人在其他地方提到的关于代码分析 python.el 的那样?我真的可以使用一些帮助开始解决这个问题。如果在 python.el 中找到代码分析器,我可以尝试修改并使 emacs 优先使用本地版本而不是安装的版本吗?

编辑:在发表最初的帖子后,我终于在试图弄清楚组件的来源方面取得了突破。我在所有文件系统系统中搜索了 python*.el 并发现了这些:

./usr/share/emacs/26.2/lisp/cedet/semantic/wisent/python.elc ./usr/share/emacs/26.2/lisp/cedet/semantic/wisent/python-wy.elc

我找到了 emacs 26.2 的源代码,发现确实似乎 python-el 负责解析 python 文件的语义。它还在内部使用 python-wy 来识别大部分语言组件。但不幸的是,那是我碰壁的地方。我希望能够对通过 re 或其他东西识别函数定义的函数进行修补,但语义实际上以正确的方式解决了问题。因此,python-wy 似乎是从正式的语法定义文件(在 emacs git admin/grammars/python.wy 中)自动生成的,不幸的是,弄清楚如何修改远远超出了我的能力。