问题标签 [elisp]

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 投票
6 回答
1792 浏览

html - 是否有用于生成 HTML 的 Emacs Lisp 库?

我正在寻找一种解决方案,允许我编写本机 Emacs Lisp 代码并在编译时将其转换为 HTML,例如Franz 的 htmlgen

当然我可以编写自己的宏,但是如果有任何项目围绕这个问题我很感兴趣。

0 投票
3 回答
1156 浏览

emacs - 在正在运行的 Emacs Lisp 程序上设置断点

我从 ubuntu 发行版中提取的 Emacs lisp 包有问题。该软件包是 JDEE,每当我打开文件时,它都会Args out of range: "63", 0, 4在迷你缓冲区和缓冲区中抱怨。*Messages*此错误似乎已于去年 9 月报告,但尚未采取任何措施。我不是 emacs 新手,我自己编写了一些 Elisp 代码,但我从未尝试过调试这样的东西。当此错误发生时,我想在调试器中停止文件加载,至少可以了解问题的来源。debug-on-error我已阅读 Elisp 手册的第 18.1.1 节“在出错时输入调试器”,但在使用、debug-ignored-errors和的各种值组合后尝试加载文件debug-on-signal似乎没有效果。有人对我的下一步有什么建议吗?

0 投票
6 回答
5958 浏览

emacs - Emacs 模式:“命令尝试在 minibuffer 中使用 minibuffer”

设想:

  • 我开始输入 Mx 来输入命令
  • 我切换到另一个 emacs 窗口/缓冲区,因为我意识到我在错误的窗口中执行命令
  • 我开始再次输入 Mx 以在正确的窗口中执行命令

结果:我得到可怕的“命令试图在 minibuffer 中使用 minibuffer”

这在我使用 emacs 时每天会发生多次,而不仅仅是在这种情况下。这种行为是高度用户敌对的(参考The Humane InterfaceJef Raskin 的 Modes and Pseudo-modes)

有没有办法自定义 emacs 行为,而不是给出这个错误,它只是取消第一个 minibuffer 并用新的 minibuffer 替换它?

0 投票
4 回答
2898 浏览

emacs - Emacs:防止 gud 和 pdb 控制窗口

我正在使用 pdb 调试 Python 程序,但对它的行为不满意。

我将屏幕分成多个 emacs 窗口,当我执行 pdb 时,它(随机?)用 *gud* 调试器的输出替换其中一个窗口。

此外,当遇到断点时,即使调试缓冲区已经在一个窗口中可见,它通常也会将此缓冲区放入另一个窗口,并用源文件的内容替换我的另一个窗口。(顺便说一句,我喜欢它跳转到源文件中的正确行)

如何禁用 gud/pdb 为我管理我的窗口?在 emacs 中是否有可能阻止对窗口和屏幕布局的所有编程操作?

编辑:我在另一篇文章中找到了部分解决此问题的答案:切换专用窗口

0 投票
15 回答
14847 浏览

emacs - 如何在启动时在 Windows 上最大化 Emacs?

这让我发疯:我只是想让 Emacs 最大化到我在启动时拥有的任何屏幕分辨率。理想情况下,我喜欢适用于任何屏幕分辨率的跨平台(Windows 和 Linux)解决方案,但我什至无法让它在具有硬编码尺寸的 Window XP 上运行。

这是我尝试过的:

  1. 使用适当的高度/宽度设置初始帧列表
  2. 设置默认帧列表
  3. (Windows 特定的东西)向 emacs 窗口发送消息,告诉它通过最大化(w32-send-sys-command 61488)
  4. 尝试了我在某处找到的这个功能:

    /li>
  5. 在我的 init 文件的开头和结尾都尝试了上述方法,以尝试消除其他 init 事物的干扰。

不幸的是,以上都不起作用!!对于上述某些情况,我可以看到我的 emacs 窗口在一瞬间正确调整大小,然后恢复为较小的默认大小。如果我在初始化后运行上述方法,emacs 窗口会正确调整大小。这里到底发生了什么?

[ps对此还有其他SO问题,但没有一个答案有效]


更新:

答案让我认为我的 init 文件中的其他内容导致了问题。确实如此!经过一番尝试和错误,我找到了罪魁祸首。如果我注释掉以下行,一切正常:

工具栏到底与最大化窗口有什么关系?

所以现在的问题是:如何禁用工具栏(毕竟,emacs 的工具栏很丑,占用宝贵的屏幕空间)并最大化我的 init 文件中的窗口?工具栏干扰窗口大小可能是一个错误?

澄清: (tool-bar-mode -1) 关闭工具栏,但这条线会干扰 Emacs 窗口的最大化。因此,如果我尝试将功能最大化窗口并关闭工具栏,则最大化部分将失败;如果工具栏部分被注释掉,那么最大化部分就可以了。我使用什么解决方案(在我列出的 4 个中)甚至都无关紧要。


解决方案:(或者至少现在对我有用)

这可能是 Emacs 中的一个错误。解决方法是通过注册表禁用工具栏,而不是在 .emacs 中。将以下内容另存为 .reg 文件,并在 Windows 资源管理器中执行该文件:

(此解决方案是 OtherMichael 建议的工作版本)。

0 投票
2 回答
1340 浏览

emacs - Emacs 处理大型 XML 文件

我经常需要阅读结构相当简单的大型 XML 文件(> 100 MB)。我想使用 emacs,但它不太支持大文件。我在想也许我可以使用可以为我进行 SAX 或 StAX 解析并为我提供所有必要操作(例如搜索)的 java 应用程序。在 emacs 和外部 java 应用程序之间进行通信的“正确方式”是什么?

0 投票
4 回答
1112 浏览

emacs - Emacs Lisp 函数中的拆分窗口

我希望能够在我正在编辑的当前文件上运行 shell 命令,并将输出显示在Shell 命令输出窗口中。我已经能够定义如下所示的函数。

唯一的问题是输出窗口没有以任何方式被带到前台。我想要发生的是拆分窗口并在那里显示输出窗口。另外,我在这里定义要放入我的 .emacs 文件中的函数是否在正确的轨道上,还是有更好的方法?

任何帮助,将不胜感激。谢谢。

0 投票
4 回答
1012 浏览

version-control - Emacs:有没有办法从 diff 生成骨架 ChangeLog?

在版本控制中使用源代码时,我想部分地自动创建 GNU 样式的 ChangeLog 条目。一次使用add-changelog-entry-other-window一个文件,您必须访问该文件才能使用它。

相反,我希望看到一些命令可以输出diff -u -p(或与 VC 模式集成以便它可以处理svn diff等)并一次创建所有骨架条目。

例如,如果svn status显示

该命令将创建

更好的是,如果它可以在一定程度上解析某些语言的更改文件,那么它可以提供:

在 Emacs 手册中找到了此功能,但我不知道如何在此处应用它。

有什么建议么?谢谢。

编辑:一个答案建议vc-update-change-log。不幸的是,它只支持 CVS,它通过查询已经提交的 VC 日志来创建 ChangeLog 条目。因此,即使它支持 svn 和其他,也不可能在同一个提交中提交更改和 ChangeLog。

EDIT2:显然 add-changelog-entry-other-window (Cx 4 a)不仅适用于访问过的文件,而且适用于涉及该文件的差异大块。(来源)这几乎是我正在寻找的。这与 elisp 循环一起遍历所有大块应该可以解决它。

0 投票
4 回答
4589 浏览

emacs - 在 Windows 上的 Emacs 中将 Caps Lock 映射到 Control

在阅读这些 问题EmacsWiki 文章中关于将 Caps Lock 映射到 Windows 中的 emacs 中的控制时,最好的答案似乎涉及注册表。我的问题是当用户因为没有管理员权限而无法修改机器的注册表时可以做什么。有没有办法从emacs中进行映射?这篇文章非常接近,甚至说:“正如人们所提到的,您当然可以将 Caps-Lock 映射到其他键,例如 Control 键。” 但我不知道如何表示控制键(使用各种看起来非常全面但可能不是以 Windows 为中心的参考),尝试类似

这似乎不起作用。

0 投票
5 回答
1813 浏览

emacs - 如何在 Windows 上的 Emacs 中保留剪贴板内容?

这是我遇到过几次的场景:

我从其他程序中复制了一些文本。转到 Emacs 并在我粘贴/拉入文本之前进行了一些编辑。Cy 拉出并瞧……不是我打算粘贴的文本。然后我意识到,当我四处移动时,我使用了诸如 kill- 之类的命令line 和 back-kill-word,那些被杀死的行和单词现在占据了 kill-ring。但是输入 My 并没有带回原来复制的文本,所以我需要回到我原来的程序再次复制文本。更糟糕的是,如果原始程序被关闭,那么我完全丢失了复制的文本。

杀戮线等是这样的基本命令(几乎就像按下删除键),虽然我不介意使用这些命令使杀戮环有点混乱,但我希望我的原始文本留在某处kill-ring 以便我最终可以通过键入 My 几次来找到它。在覆盖剪贴板内容之前,如何使 Emacs 自动将当前剪贴板内容保存到 kill-ring 中?