Emacs

使用,扩展或开发Emacs的人员的问答

1
如何解决Emacs问题?
在Emacs表现不理想的情况下,我该怎么做才能解决问题?我可以采取哪些步骤自己找到并解决问题? 或者,如果失败,我如何收集有用的信息,以便此处的人(或在邮件列表或其他论坛上)可以帮助我解决问题? 我的Emacs包含许多程序包,从Internet上复制并粘贴(或杀死并重载)的摘要的集合,以及我自己的自定义elisp,其中一些我不记得写或不再理解。有没有办法弄清楚所有这些并发症?

2
如何评估字符串中包含的Elisp代码?
这个问题几乎说明了一切:我有一个字符串,其中包含有效Elisp表达式的源代码,并且我想对其进行评估。 (例如,在Python中,表达式的eval("1 - 2 + 3")计算结果为2。)
21 read  eval 

1
好奇心:progn代表什么?
根据Emacs文档: progn is a special form in `C source code'. (progn BODY...) Eval BODY forms sequentially and return value of last one. progn代表什么(或它的起源)? 用法:是否等效于Clojure的->宏?
21 functions 


1
Emacs中的哪段代码可以使“ line-number-mode”在长行缓冲区中以行号显示“ ??”?
我line-number-mode过去在我的modeline中使用了当前行的指示器,但是对于大文件或长行文件,它开始显示两个问号而不是行号。我进行了一点挖掘,发现虽然在line-number-mode中定义simple.el了可自定义变量(并且可能涉及到的所有逻辑),但都在中定义了xdisp.c。将line-number-display-width变量更改为任意高的数字可能会解决此问题,但是我对代码片段和使它打印两个问号的逻辑更感兴趣。如果你们中的任何一个能为我找到它,甚至解释它背后的逻辑,那将是非常有用的。

2
有没有一种模式可以自动更新文件中的版权年份?
通常在每年的这个时候左右,人们开始意识到其版权年份在其文件中已过时。如果您想在每个源文件中添加版权,这将特别令人讨厌。我想知道emacs是否可以在这里提供帮助。 有没有一种模式可以自动更新文件中的版权年份?理想情况下,我将使用我的姓名和从属关系设置模式,以便仅更新这些人的版权。它还只会在进行更改时自动更新版权(尽管最好有一种简便的方法对项目进行批量更改也很不错)。
21 time-date 

1
如何为使用eww打开的某些网页自定义背景色?
我刚刚安装了emacs 24.4,并且已经开始使用eww。但是令人讨厌的是,当我访问google.com时,我看到的背景是灰色的,这使得文本很难真正理解主题。 它是这样的: 有什么办法可以改变背景颜色?我最初以为我可以自定义eww脸,但是对此没有选择。我也很好奇为什么首先要使用这种背景色。
21 themes  eww 

2
格式化(美化)Elisp代码的命令
假设我有一个如下所示的函数(在打印elisp输出时通常是这种情况)。 (defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a)))) 我想要一个可以将其转换为人类可以编写的命令的命令,例如以下命令。 (defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a)))) 我了解,格式化elisp代码的方式不只一种,而且不同的人做的方式也不同。此外,我了解它有些主观。但是,要想出一套规则,使代码至少是体面的,应该相当容易。 实际上,我前一段时间确实很难做到这一点,但是我认为最好是在重新发明轮子之前先问一下。 请注意,我知道pp函数,但还不能完全实现: (defun …
21 elisp  formatting 

5
如何强制重新评估defvar?
假设我有一个Emacs lisp缓冲区,其中包含: (defvar foo 1) 如果我调用eval-last-sexp或eval-buffer,foo则绑定到1。如果我将其编辑为: (defvar foo 2) eval-last-sexp并且eval-buffer不要重新执行这一行,所以foo还是1。 当存在多个这样的语句并且我必须跟踪哪些行没有被重新评估时,这尤其具有挑战性。 我只看过重新启动Emacs的情况,然后(require 'foo),但是我必须小心避免加载任何旧的.elc文件。 我如何才能绝对肯定地确保当前文件中定义的变量和函数处于与在新的Emacs实例中重新加载代码相同的状态?

6
使用文件相对eslint可执行文件进行Flycheck
我从事的许多项目都将eslint作为开发人员的依赖项进行安装,并带有一组自定义的eslint插件。目前,flycheck使用的是全球安装的eslint版本,而不是随每个项目安装的eslint版本。 我想将flycheck指向node_modules / eslint / bin / eslint.js。完整路径应取决于当前缓冲区文件的路径,因此我可以使用可能不同的eslint可执行文件同时处理每个缓冲区的多个项目。 这可能吗?关于我将如何执行此操作的任何建议?
21 flycheck 


1
如何使用org-refile将标题作为顶级标题移至文件?
我希望有一个“ inbox.org”文件,我可以在其中收集笔记(尝试实现GTD:P),然后将其移动到正确的位置。我知道这org-refile是执行此操作(移动内容)的方法,但是似乎只能在标题下重新提交内容,而不能直接重新添加到文件中。我想要做的是从inbox.org中记录下来,并将其作为顶级标题添加到适当的org文件中。 这有可能吗?我阅读了有关的信息org-refile-targets,尽管该信息org-refile-use-outline-path说: org-refile-use-outline-path是在org.el中定义的变量。其值为“文件”。原始值为nil 文档:非nil表示提供重新归档目标作为路径。因此,第3级标题将作为level1 / level2 / level3提供。 当值为'file'时,还要在路径中包含文件名(无目录)。在这种情况下,您也可以在文件名之后停止补全,以获取作为顶级 文件插入的条目。 但是,org-refile提示上的自动补全甚至不提供文件名作为选项。有没有办法做到这一点org-refile-targets或其他任何方式? 我正在Windows 8.1 64bit上运行gnu emacs 24.5.1。 提前致谢 ;)
21 org-mode 

1
Magit等效于“ git remote -v”(列出远程对象)
我想知道是否有一个等效于git remote -v列出远程对象及其在git存储库中定义的URL的magit 。magit remotes弹出窗口提供了添加,删除,重命名和设置url的选项,但是我看不到任何列表机制。 样本git remote -v输出: origin ebpa@example.com:/var/git/myproject.git (fetch) origin ebpa@example.com:/var/git/myproject.git (push) magit-list-remotes 是非交互式的,仅列出远程名称。
20 magit 

1
使用magit选择要暂存到新目录的文件
如果创建新目录,则其文件不会显示为magit-status,只有新目录位于Untracked项列表中。 目前,我必须magit-stage-item新目录,然后从舞台区域中删除不需要的文件。 有什么方法可以选择要从新目录暂存的文件吗?
20 magit  git 

1
如何区分TAB与Ci?
通常,出于历史原因,emacs将TAB密钥代码和C-i密钥视为相同,参见cf。有关功能键的emacs lisp文档或abo-abo关于“ TAB和?有什么区别?”问题的答案 。 注:在这篇文章中,键编码是TAB,<tab>和C-i; 另一方面tab,Ctrl+ 和+ i是键盘上的物理键。 但是,此刻,emacs将TAB和C-i视为相同,即(equal (kbd "TAB") (kbd "C-i"))-> t。 但是,由于我们不再生活在计算的困境中,所以我发现这非常烦人。有一些建议可以解决此问题,例如 “如何在不更改TAB的情况下将命令绑定到Ci?” Trey的解决方案不适用于我,该变量local-function-key-maps未更改。对其进行修改以使用delete而不是delq修改后的变量,但不会带来resolve ... tab和Ctrl+ i仍然相同。 转换为超级地图似乎是1980年代的解决方法...我可能也想使用Hyper+ i。 input-decode-mapCtrli我正在寻找使用+ 将+ 映射到一些后ASCII控制代码。除了不能与kbd宏一起正常工作外,这意味着必须修改将绑定Ctrl+ 的源代码的所有位i。考虑到所有源代码均已正确修改,这可以说是最好的解决方案。 采用(kbd "<tab>")了tab和(kbd "C-i")(这相当于(kbd "TAB")即在\t字面)为Ctrl+ i 做的工作,但你不得不修改所有这些使用了错误类型的源文件tab[阅读:键码TAB]这是烦人。 例如在github问题和emacs.sx中都提出了这个建议。 这些解决方案都不是真正的解决方案,我宁愿考虑它们(现有bug)的变通办法或黑客手段。 有没有办法强制 emacs映射tab到(kbd "<tab>")和,(kbd "TAB")而Ctrl+ i被映射为(kbd "C-i")缺少对emacs源代码的修改呢? 这种做法应该是在用户完全不可见,这意味着tab像键码<tab>,并TAB应该映射到一个而结合Ctrl+ i类似的键码C-i应该映射到另一个结合。 不太严重的一点是:这里的任何emacs开发人员可以评论是否会在某个时候在emacs源代码中对其进行更改/修复?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.