问题标签 [compile-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 投票
3 回答
979 浏览

windows - Emacs 中的路径名转换,用于从远程(ssh 编译)错误文件名中查找本地源文件路径

我可以在 Emacs 中利用某种通用路径名重写/规范化工具来允许将编译模式下的源文件转换为基于远程路径的本地路径吗?我希望使用符号链接,但这在 Windows 中对我不起作用。

我正在运行 GNU Emacs 23.1.1,并尝试过 cygwin-mount 和 w32-symlinks.el (with (customize-option 'w32-symlinks-handle-shortcuts));我无法获得打开文件/目录/完成或编译模式下一个错误来遵循 Windows 快捷方式或 cygwin 符号链接。

我正在远程编译(通过 ssh)并且警告/错误给出了文件名,其中/nfs/topaz远程主机上的绝对路径名(例如)的前缀需要替换为不同的路径(z:/实际上),我希望这样做带有符号链接。

/确实转到(在 emacs 中标签扩展为)和c:/cygwin(我的)。~z:/$HOME

我希望的是:修复符号链接解析(选项卡完成或打开 Windows 快捷方式让我得到 .lnk 文件,而不是它指向的文件),或者能够为路径名前缀提供重写列表。连接不是一个选项,因为我想要的替换路径在不同的驱动器上(它也是一个 Samba 挂载)。

0 投票
1 回答
1162 浏览

emacs - elisp 编译,添加一个正则表达式进行错误检测

我从emacs开始,不太了解elisp。几乎没有,真的。

我想用 ack 代替 grep。

这些是我在emacs中使用ack的说明: http ://www.rooijan.za.net/?q=ack_el

现在我不喜欢这个 el 文件中使用的输出格式,我希望输出是ack --group.

所以我改变了:

至:

到目前为止,一切都很好。但这使我失去了在输出缓冲区的行上单击-press_enter 的能力。在最初的行为中,编译模式用于能够跳转到选定的行。

我想我应该在 ack-mode 中添加一个正则表达式。ack-mode 定义如下:

我也想添加正则表达式[0-9]+:以检测为错误,因为它是输出窃听器的每一行都包含的内容(行号)。

我试图修改define-compilation-mode上面的内容以添加正则表达式,但我失败了。

我怎样才能让输出缓冲区ack让我点击它的行?

--- 编辑,我也试过:---

我在某个地方偷了它,并试图适应我的需要。没运气。

--- 编辑,伊万提议后的结果---

随着 ack.el 的更新,包括:

然后检查compilation-error-regext-alist变量,我得到值:

我发现变量的格式很奇怪,不是吗?我不知道 elisp(还),所以也许这样是正确的。

*ack* 缓冲区中仍然没有链接或颜色。

0 投票
1 回答
325 浏览

emacs - 为 emacs 编译模式捕获 pva 多行编译器输出

我希望通过 emacs 编译 hSpice pva。但是,编译模式不能正确解析输出。

这是 pva 编译器生成的错误消息(pvaE 部分):

这是未能捕获上述输出的编译模式设置:

帮助修复此正则表达式将不胜感激!

0 投票
2 回答
4792 浏览

emacs - emacs编译缓冲区自动关闭?

我想在没有错误和警告时自动关闭编译缓冲区,但我想在有警告时显示它。任何人都可以帮助我吗?来自emacswiki的这段代码只满足第一个要求。如何改变它?

0 投票
1 回答
145 浏览

emacs - 临时覆盖编译模式正则表达式 alist:动态绑定怪异?

我正在研究一种程序模式,它对汇编程序、程序员和其他外部程序有各种不同的调用。我狡猾的计划是用compile函数处理所有这些,传递一个compile-command取决于正在运行的程序的显式。

这种似乎可行,现在我想为不同的外部程序添加特定的错误正则表达式。一种选择是更改compilation-error-regexp-alist-alist,键入我的主要模式,然后将我的主要模式添加到compilation-error-regexp-alist.

不过,我更愿意做的是如下所示:

奇怪的是,这个绑定似乎不会影响编译缓冲区被解析/标记的方式。如果我手动推<my-regexp-and-numbers>到缓冲区的前面compilation-error-regexp-alist然后调用(compilation-mode t)缓冲区,一切都会按预期进行字体化(所以我没有弄错正则表达式)。但是,将调用粘在上面(compilation-mode t)的表单内部let不会影响任何事情。

我意识到这作为一个易于重现的测试用例非常失败。如果没有人有任何想法,我会尝试破解一个例子,但我希望有人会去“啊,是的!那是因为那时没有得到评估,而是在”或类似的.. .

0 投票
1 回答
198 浏览

bash - emacs 编译:在后台调用脚本

我有一个脚本(我们称之为ding),它在后台播放声音(基本上只是调用paplay <file> &)。我希望在完成编译后从 emacs 调用它,如下所示:

M-x compile,make && ding

不幸的是,因为paplay在后台调用,所以什么都没有发生(没有声音播放)。如果我删除&from ding,声音播放得很好。

为什么会发生这种情况,有没有办法让脚本在编译模式下在后台执行(不使其成为前台作业)?

0 投票
4 回答
2168 浏览

emacs - 不要在 Emacs 中显示 *compilation* 缓冲区,直到进程以错误或警告退出

我正在寻找一种方法让 Emacs编译缓冲区由 Mx compile、Mx recompile 或某些 compile on save 脚本仅在编译退出并出现错误或警告时出现。

请注意,如果没有 [1] 中所述的错误或警告,我并不是在寻找关闭编译缓冲区的方法。不,我希望缓冲区在编译完全完成之前永远不会出现,并且只有在出现错误或警告时才会出现。

原因很简单:闪烁的编译缓冲区令人不安,并重新排列了代码在屏幕上的位置。如果您打开了保存时编译,这将变得更加烦人。

编译缓冲区包含从 make 到 pdflatex的许多不同类型的编译过程,因此如果确定是否应显示缓冲区的函数可以全面工作,那就太好了。

[1] emacs编译缓冲区自动关闭?

0 投票
1 回答
210 浏览

emacs - 如何从 compiler-error-regexp-alist 文件函数中获取当前匹配的行?

我正在运行一个命令,compile因此我可以从错误消息链接到关联的源,但是我需要转换匹配行的内容块以获取要链接到的文件。(该行显示了一个 clojure 命名空间,例如foo-bar.quux,需要将其转换为foo_bar/quux.clj。)

的文件部分compilation-error-regexp-alist说,

每个 elt 都有格式 (REGEXP FILE [LINE COLUMN TYPE HYPERLINK HIGHLIGHT...])。... FILE 也可以具有 (FILE FORMAT...) 格式,其中 FORMAT(例如 \"%sc\")将依次应用于识别的文件名,直到找到该名称的文件。或者 FILE 也可以是返回 (FILENAME) 或 (RELATIVE-FILENAME . DIRNAME) 的函数。在前一种情况下,FILENAME 可以是相对的或绝对的。

当我向函数添加条目compilation-error-regexp-alist-alistcompilation-error-regexp-alist在其FILE位置上添加条目时,我的函数被调用时不带参数。如何在该函数中获取匹配的行?

0 投票
1 回答
476 浏览

emacs - 如何用编译开始替换 compile-internal?

我使用这个valgrind.el在 emacs 中运行 valgrind。但是最新版本的 emacs 已经弃用了 compile-internal。我对 elisp 的了解还不够,无法弄清楚如何将编译内部调用转换为编译开始调用。这是有问题的原始函数调用的样子:

我在网上发现了这一点,表明编译开始的可能用法:

任何帮助,将不胜感激!

0 投票
2 回答
593 浏览

c# - 仅在发布时编译时抛出 OutOfMemoryException

我有一个分配大量小对象和数组的 C# 控制台应用程序。这些对象的生命周期很短,很快就会被垃圾收集器清理掉。对于“为什么需要分配这么多寿命短的对象,你应该避免这种情况”的问题:该程序用于繁重的 AI 任务,目前没有明显的方法来解决这个问题。

这是问题所在:

如果我在调试模式 x86 下运行程序,它运行良好并在几分钟后完成所有处理。平均而言,它使用 300-400 MB。

如果我采用完全相同的程序,但在发布 x86 模式下编译并运行它,程序使用的内存很快达到 2GB(在几秒钟内),因此它会抛出一个OutOfMemoryException(这是预期的行为,因为它是一个 32 位应用程序)。在release x64模式下编译根本不能解决问题,它很快就使用了计算机的所有内存(8GB),然后在内存分配失败时崩溃。

我使用 SharpDevelop 4.3.3 来构建应用程序。调试和发布模式之间的唯一区别是:

  • 优化代码(仅限发布)
  • 检查算术上溢/下溢(仅限调试)
  • 调试信息:完整的调试信息(debug)/没有调试信息(release)

在所有情况下,都没有附加调试器。程序非常短,并且没有编译器指令可以使它在调试或发布时以不同的方式运行。没有明显的理由来解释这种行为。在发布模式下编译时,看起来垃圾收集器从未被触发(或至少没有足够的时间)并且内存没有被释放。

似乎已经提出了类似的问题,但它似乎与我的问题不同。