问题标签 [major-mode]

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 投票
1 回答
1504 浏览

emacs - 何时在 Emacs 中使用 add-hook、eval-after-load

我读过eval-after-load 与 add-hook。根据页面,代码eval-after-load执行一次。
另一方面,add-hook每次打开该模式的缓冲区时,内部代码都会运行。

行。但是我怎样才能确定哪些代码应该在eval-after-load块或add-hook块内?例如,

或者

我不是在问js2-basic-offset
有一般规律吗?或者..每当我使用时eval-after-load,我都必须问?

0 投票
1 回答
325 浏览

emacs - emacs - 按 RET 时停止向当前行和下一行添加缩进

我打开了一个名为 的文件test.scss,当我在一行上按 RET 时,emacs 将在当前行添加 2 个空格,在下一行添加 4 个额外空格。

我已经用whitespace-mode.

在按 RET 之前

在此处输入图像描述

按 RET 后

在此处输入图像描述

您可以看到该.my-element行自动缩进了 2 个空格,而新行缩进了 4 个空格。

我希望输出看起来像这样

期望的输出

在此处输入图像描述

我该怎么做才能使 emacs 产生我想要的输出?

这是输出describe-mode

虽然在这种情况下我处于 scss 模式,但我看到与我使用的大多数其他模式类似的行为,例如ruby-mode, sgml-mode, js.elmode 等。我想让行为与上面显示的所需输出相匹配。

0 投票
1 回答
118 浏览

emacs - Emerald 的 Emacs 主模式。正确突出显示

长话短说:

我是一名学生,在我的一门课程中,我们必须使用/学习翡翠编程语言。在快速谷歌搜索后,我发现有人已经为它写了一个主要模式。链接到脚本

问题:在第一个注释行“%...”之后,语法高亮停止。因此所有后续行都没有任何语法突出显示。这是非常令人讨厌的。

Emerald 没有多行注释。只有一行注释是语言语法的一部分。单行注释以“%”开始,以行尾结束。

我是整个主要模式的新手,为 emacs 编写 lisp 脚本……等等。

问题:谁能帮我弄清楚语法突出显示出了什么问题?为什么它在第一行注释后停止?以及如何解决?

其他快速问题: 如何使 emacs 突出显示其他语言关键字?例如对象、导出、操作、功能...等?

提前致谢 :)

编辑:这是一个简单的 hello world 测试程序来演示语法高亮:

0 投票
1 回答
159 浏览

emacs - 避免字体锁定干扰评论内部

在我的font-lock-defaults我有:

评论字符是!,这使得评论得到正确的面孔。这很有效,除非评论中有一个竞争的字体锁定实体,比如一个字符串(用双引号分隔):

您如何让 font-lock 了解评论已经被字体锁定,并且不需要尝试对其中的任何字符串进行字体锁定?显而易见的方法是!在语法表中添加注释起始类:

此解决方案是不可能的,因为函数名称和其他包含的符号!是合法的,例如map! filter!foo!bar。添加!会导致包含此类名称的代码被错误地突出显示。

0 投票
1 回答
179 浏览

emacs - 无法禁用 emacs 自动更改行的缩进方式

我想从我的文件electric-indent-mode中关闭 emacs 中的所有主要模式。.emacs

我尝试将这些添加到我的.emacs文件中(分别):

没有人处理过我的简单.cpp测试文件。

为了更清楚一点,这里是发生了什么:

这个:

变成:

std::cout << ...我按下第二个:;

我希望能够通过自己输入字符来控制我的文件的缩进方式,而不是通过 emacs 更改它们。我相信这是禁用electric-indent-mode(因此我尝试禁用),但可能还有另一种方法。

我正在使用 emacs 24.3.1(x86_64-redhat-linux-gnu,GTK+ 版本 3.10.9)

0 投票
1 回答
510 浏览

emacs - Emacs 为 generic-x 模式添加一致的缩进规则

我为 Standard ML 编写了一个非常简单的 Emacs 模式:

但是,它不会一致地缩进。我无法准确描述它是如何缩进的,但它在制表符和空格以及空格长度之间的切换不一致。我能想到的最简单的规则是始终在同一列上开始一个新行,并且制表符总是将您带到下一列是 4 的倍数。制表符应该是空格。如何使用通用模式执行此操作?

作为模式定义的注释,我错误地使用了内置面,因为操作员面没有着色。不过现在看起来确实很丑。

0 投票
2 回答
296 浏览

regex - emacs 主模式定义

我正在尝试编写一个非常基本的 emacs 主要模式来编辑汇编源文件(针对特定的微控制器)。我使用https://www.emacswiki.org/emacs-test/ModeTutorial作为起点。它有效,但我想改变两件事但找不到解决方案。

是的,我渴望随着时间的推移对 eLisp 有更透彻的理解,但我也尝试快速破解我的工作模式定义,因为我现在需要它(没有真正理解错综复杂 - 我知道,RTFM ...... )。

无论如何,我希望得到两个问题的答案:

1)虽然语法突出显示有效,但我不认为它不区分大小写。我尝试添加(setq font-lock-keywords-case-fold-search t)到下面的功能,但它似乎没有达到预期的效果。

2)第二个问题肯定证明了我的无知......基本上,在具有以下结构的表达式中,我想用变量中的值替换“正则表达式”文字(有效)(这里:x , x 是 (正确) 由 regexp-opt 计算的)...但我不知道如何在此处插入 x 的:-(

感谢您的提示。

0 投票
1 回答
253 浏览

emacs - emacs派生模式中“特殊”注释的不同字体锁定方案

我通过从 prog-mode 派生来定义 Emacs 主要模式。字体锁定工作除了一件事:

我想强调一种特殊的注释类型,它包含特殊的链接器指令,使用与常规注释不同的字体。常规注释以“;”开头 而链接器指令的格式为“;<...directive...>”。当然,字符串中的文本不应被误认为是注释。

到目前为止,我所拥有的是:

问题在于,使用语法表条目,此机制将对所有以 ; 开头的内容进行分类。作为评论。因此,链接器指令正则表达式不再有效。

我怎样才能实现所需的行为?看来我需要一种允许检查后面的字符的模式。但是使用语法表进行评论检测看起来不错,因为它可以正确处理字符串。

更一般地说,我对解释 emacs/elisp 的“架构”的文档感兴趣(例如,模式和哪些操作序列适用于字体锁定。缓冲区交互也是如此)。我有很棒的 elisp 参考手册,但我错过了对这些主题的概念介绍。我已经阅读了 emacs elisp 介绍,但不喜欢它,因为我发现它太“教程式”,非常冗长和重复,并且缺少系统的覆盖。例如,没有关于反引号的句子。它似乎也适用于编程经验为零的人 - 但是会从 elisp 开始吗?

0 投票
1 回答
235 浏览

elisp - 如何在特定主模式的保存后挂钩中添加和删除功能?

我为配置文件编写了一个简单的主要模式。我想在保存时检查语法。如何确保my-check-syntax被添加到after-save-hookif 它位于my-config-mode.

0 投票
3 回答
244 浏览

emacs - 从 Lisp 模式派生,忽略它的钩子?

因此,我通过从标准 Lisp 模式派生,为自定义 lisp 创建了一个主要模式。但是,当 emacs 进入它时,它也会自动激活 slime-mode,它会覆盖我的大部分绑定。据我所知,这是因为 SLIME 使用 Lisp 模式注册了一些钩子,而我的模式也触发了它们,但我不确定。有没有办法避免这种情况?