问题标签 [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.
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
,我都必须问?
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.el
mode 等。我想让行为与上面显示的所需输出相匹配。
emacs - Emerald 的 Emacs 主模式。正确突出显示
长话短说:
我是一名学生,在我的一门课程中,我们必须使用/学习翡翠编程语言。在快速谷歌搜索后,我发现有人已经为它写了一个主要模式。链接到脚本
问题:在第一个注释行“%...”之后,语法高亮停止。因此所有后续行都没有任何语法突出显示。这是非常令人讨厌的。
Emerald 没有多行注释。只有一行注释是语言语法的一部分。单行注释以“%”开始,以行尾结束。
我是整个主要模式的新手,为 emacs 编写 lisp 脚本……等等。
问题:谁能帮我弄清楚语法突出显示出了什么问题?为什么它在第一行注释后停止?以及如何解决?
其他快速问题: 如何使 emacs 突出显示其他语言关键字?例如对象、导出、操作、功能...等?
提前致谢 :)
编辑:这是一个简单的 hello world 测试程序来演示语法高亮:
emacs - 避免字体锁定干扰评论内部
在我的font-lock-defaults
我有:
评论字符是!
,这使得评论得到正确的面孔。这很有效,除非评论中有一个竞争的字体锁定实体,比如一个字符串(用双引号分隔):
您如何让 font-lock 了解评论已经被字体锁定,并且不需要尝试对其中的任何字符串进行字体锁定?显而易见的方法是!
在语法表中添加注释起始类:
此解决方案是不可能的,因为函数名称和其他包含的符号!
是合法的,例如map!
filter!
和foo!bar
。添加!
会导致包含此类名称的代码被错误地突出显示。
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)
emacs - Emacs 为 generic-x 模式添加一致的缩进规则
我为 Standard ML 编写了一个非常简单的 Emacs 模式:
但是,它不会一致地缩进。我无法准确描述它是如何缩进的,但它在制表符和空格以及空格长度之间的切换不一致。我能想到的最简单的规则是始终在同一列上开始一个新行,并且制表符总是将您带到下一列是 4 的倍数。制表符应该是空格。如何使用通用模式执行此操作?
作为模式定义的注释,我错误地使用了内置面,因为操作员面没有着色。不过现在看起来确实很丑。
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 的值:-(
感谢您的提示。
emacs - emacs派生模式中“特殊”注释的不同字体锁定方案
我通过从 prog-mode 派生来定义 Emacs 主要模式。字体锁定工作除了一件事:
我想强调一种特殊的注释类型,它包含特殊的链接器指令,使用与常规注释不同的字体。常规注释以“;”开头 而链接器指令的格式为“;<...directive...>”。当然,字符串中的文本不应被误认为是注释。
到目前为止,我所拥有的是:
问题在于,使用语法表条目,此机制将对所有以 ; 开头的内容进行分类。作为评论。因此,链接器指令正则表达式不再有效。
我怎样才能实现所需的行为?看来我需要一种允许检查后面的字符的模式。但是使用语法表进行评论检测看起来不错,因为它可以正确处理字符串。
更一般地说,我对解释 emacs/elisp 的“架构”的文档感兴趣(例如,模式和哪些操作序列适用于字体锁定。缓冲区交互也是如此)。我有很棒的 elisp 参考手册,但我错过了对这些主题的概念介绍。我已经阅读了 emacs elisp 介绍,但不喜欢它,因为我发现它太“教程式”,非常冗长和重复,并且缺少系统的覆盖。例如,没有关于反引号的句子。它似乎也适用于编程经验为零的人 - 但是会从 elisp 开始吗?
elisp - 如何在特定主模式的保存后挂钩中添加和删除功能?
我为配置文件编写了一个简单的主要模式。我想在保存时检查语法。如何确保my-check-syntax
被添加到after-save-hook
if 它位于my-config-mode
.
emacs - 从 Lisp 模式派生,忽略它的钩子?
因此,我通过从标准 Lisp 模式派生,为自定义 lisp 创建了一个主要模式。但是,当 emacs 进入它时,它也会自动激活 slime-mode,它会覆盖我的大部分绑定。据我所知,这是因为 SLIME 使用 Lisp 模式注册了一些钩子,而我的模式也触发了它们,但我不确定。有没有办法避免这种情况?