Emacs

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

1
为什么加粗时字体高度会改变?
真烦人... 当一行上的任何文本的表面更改为粗体时,行的高度将增加(我假设)单个像素。最好用图像显示: 为什么是这样?我该如何预防? 根据要求,平台上的信息: 在AMD64上的Debian GNU / Linux SID(不稳定) Emacs在XFCE 4.12上使用libgtk-3.so.0(gtk 3.14.5) 我在8pt,9pt,10pt和11pt尝试了以下字体: DejaVu Sans Mono 德贾武·桑斯(DejaVu Sans) DejaVu Serif Droid Sans Mono 解放单声道 仅对于DejaVu Sans Mono和DejaVu Sans,并且仅在9pt和10pt,才会出现此问题。(上图显示DejaVu Sans Mono-9。)
9 faces 

2
如何避免在目录中的“ ^”后键入“ space”来向上移动目录?
^是用于移至dired(“上一级目录”)中的父目录的键绑定。 然而,在Gnu Emacs上Windows 7 Professional 64-bit有我的德国的键盘布局,这是不够的输入“^”,但我不得不事后键入空间,使键绑定工作。 如何重新定义键绑定,以避免不得不按下空格并仅使用“ ^”向上移动? C-h k ^<space> 退货 ^运行命令dired-up-directory,该目录是`dired + .el'中的交互式已编译Lisp函数。 它绑定到^,。 (目录目录和可选的OTHER-WINDOW) 在当前目录的父目录上运行Dired。在此缓冲区或另一个缓冲区中找到父目录。如有必要,创建一个缓冲区。

1
如何区分不同头盔提示的历史记录
当Inza 作为独立的 Fate医生时,Inza穿着头盔和Kent的原始服装,而... – 开启Googlehelm separate history 当我M-p在Helm提示中按以helm-git-grep获得我先前在helm-find-files以下位置输入的文件路径时: 我真正想看到的是以前在中搜索的模式helm-git-grep。 如何使头盔有不同类型的头盔的独立小缓冲区的历史(helm-M-x,helm-mini,helm-git-grep和helm-find-files)?
9 helm 

4
如何将您的键绑定到尚未加载的键映射?
我use-package用来管理已安装的软件包,并将bind-key操作分配给我喜欢的自定义键。 我覆盖了大多数默认的Emacs键盘绑定(例如,C-n变为M-k,C-p成为M-i),但是我可以接受其他模式来覆盖我的键盘绑定方案。有时,我希望我的键绑定继续存在。M-k除了默认的Gnus或Helm,我还想表达其他意思。 但是,它们在Emacs启动时彼此冲突,因为如果键映射不存在,我无法将其添加到该键映射中(因为use-package有时会延迟加载程序包)。例如,以下命令会引发错误(例如(void-variable helm-map)),因为Helm和Gnus尚未完全加载。 (bind-key "M-Y" 'helm-end-of-buffer helm-map) (bind-key "M-k" 'helm-next-line helm-find-files-map) (bind-key "M-s" 'other-window gnus-summary-mode-map) 我将所有use-package调用都放在一个文件中,并将bind-key自定义键绑定放在另一个文件中。我不想将绑定放入use-package调用中,因为也许我想将自定义键绑定方案发布为独立程序包。如果我希望安装我的方案的人也改写了Helm和Gnus本地键绑定,该怎么办? 我如何使用来管理本地模式的键绑定bind-key,以便即使最近装入程序包也设置所有键,并且所有键设置都在一个文件中?

1
defgroup为什么有用?
我正在阅读ido源代码,并看到: (defgroup ido nil "Switch between files using substrings." :group 'extensions :group 'convenience :version "22.1" :link '(emacs-commentary-link :tag "Commentary" "ido.el") :link '(emacs-library-link :tag "Lisp File" "ido.el") :link '(custom-manual "(ido) Top") :link '(info-link "(ido) Customization")) defgroup出现在许多大型包装的顶部。我看到它是这样做的: 将SYMBOL声明为包含MEMBERS的自定义组。SYMBOL不需要被引用。 而且关于自定义组的页面并没有真正回答何时或如何使用它们。您何时或如何使用它们?

1
如何在特定的邪恶状态下为模式设置按键绑定?
我有一套键绑定,既用于(Evil)的插入模式,web-mode又php-mode用于插入模式。所以我不能使用set-local-map。因为在正常模式下,相同的键将随后调用其他命令。因此,绑定evil-insert-state-map仅需处于活动状态。 我有以下内容: (eval-after-load 'php-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") (lambda () (interactive) (insert " = "))) (define-key evil-insert-state-map (kbd "C-<prior>") (lambda () (interactive) (insert "->"))))) (eval-after-load 'web-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") 'zencoding-expand-yas) (define-key evil-insert-state-map (kbd "C-<prior>") 'zencoding-expand-line))) 因此,每次web-mode或php-mode正在加载时,这些键绑定都会被激活。 问题是:假设我有两个打开的缓冲区,一个在中php-mode,另一个在中web-mode。当web-mode缓冲区是当前缓冲区并且我切换到另一个缓冲区时php-mode,web-mode绑定在php-mode缓冲区内部仍然处于活动状态。 我试图通过使用(add-hook 'web-mode-hook [...])和(add-hook 'php-mode-hook [...])而不是在中设置绑定来解决此问题eval-after-load。但是这种解决方案在这种情况下不起作用。 有什么建议么?我真的很感激。

1
为什么emacs不支持按键向上/向下事件
AFAIK emacs keyup/keydown仅支持事件keypressed。结果的一个例子是,当我们要标记一个区域时,我们必须先设置一个标记set-mark-command,然后可以通过在该点周围移动来标记该区域。尽管这确实是一个有趣的功能,因为您不必在标记文本时按住Shift键,但是有时希望像其他编辑器一样具有相同的行为。这个问题是为了理解为什么emacs不支持这个功能以及为什么它被认为更好。还有一种意识形态的方法如何解决emacs中的问题?

3
使用org-babel,如何命名函数调用的结果并重用它们
在中org-mode,我试图定义一个函数,一个变量,然后将对第一个变量的函数调用结果分配给另一个变量。但是,看来我不能在后续的函数调用中使用此新变量。 内联函数调用确实可以,但是首先影响变量的值可以加快调试速度,以防万一在第一个函数调用中出现问题,并避免重复可能昂贵的计算。 MWE :((require 'ob-emacs-lisp)根据需要使用) #+name: square #+begin_src emacs-lisp :var x=3 (message (format "%s" (* x x))) #+end_src #+RESULTS: square : 9 #+name: value : 45 #+name: squaredvalue #+call: square(x=value) #+RESULTS: squaredvalue : 2025 Now I try to reuse this value: #+begin_src emacs-lisp :var res=squaredvalue (message res) #+end_src #+RESULTS: : …

1
如何验证git repo中的大软件包是安全的?
我正在专门查看emacs头盔,它具有以下属性: 它有成千上万的提交 它主要由一个用户维护 该维护者没有其他个人资料(社交媒体等),可以通过几次搜索找到 它是积极维护(今天) 由于我要在计算机上安装任意代码以在文本编辑器中使用,因此我想验证此代码是否经过了任何审查过程。我想说的是“好吧,它是开源的”,但是我离自己审核所有代码的能力还很远。我想假设社区中的其他人已经对其进行了审查,但其中一项可能是错误的,其中有两项是最新的提交。我还缺少其他策略吗? 记录起来很简单:如果贡献者使用的是一次性帐户,或者没有审查程序,那么“开源”就没有多大关系。

1
首次加载主模式时如何自动运行劣质进程?
假设我们正在与公司合作使用Python(或Matlab)。没有劣质的公司信息, Completion needs an inferior Python process running 但是,自动运行劣等流程的明显解决方案 (add-hook 'python-mode 'run-python) 每次我打开.py文件时都会运行一个新的python进程(对于Matlab来说,这会变得更加昂贵) 是否存在仅在运行主要模式时才运行的钩子?还是有一种方法可以检测python / matlab下级进程是否已经在运行?还是有另一种方法来解决以主要模式自动运行劣质进程但仅运行一次的问题?

4
在Elisp中深度复制字符串?
我有一个适当的字符串。我想对其进行深拷贝,以添加更多属性,同时将属性保留在原始字符串中。我该怎么做(轻松)? 例 一对一评估: (setq test-str-1 #(";; This `is' a test" 0 3 (fontified nil face font-lock-comment-delimiter-face) 3 9 (fontified nil face font-lock-comment-face) 9 11 (fontified nil face (font-lock-constant-face font-lock-comment-face)) 11 19 (fontified nil face font-lock-comment-face))) (setq test-str-2 (concat test-str-1)) (add-face-text-property 0 (length test-str-2) 'foobar t test-str-2) 结果: test-str-2 ;; => …
9 elisp 

3
如何延迟使用use-package加载elpy?
现在,我一直在更新所有的使用包调用,这:idle不再是推迟工作的好方法。目前,对我的加载时间影响最大​​的是elpy加载一堆其他模块。目前,我的调用非常基本: (use-package elpy :commands elpy-enable :init (elpy-enable) :config (progn (setq elpy-rpc-backend "jedi" elpy-rpc-project-specific 't) (when (fboundp 'flycheck-mode) (setq elpy-modules (delete 'elpy-module-flymake elpy-modules))))) 但是,如果我从不编辑任何python模块,这将非常浪费。麻烦的是elpy是模式的集合,因此我不能随便使用模式绑定表单elpy-enable。那么我应该使用哪种方法。这只是在python模式钩子上触发的一种情况吗?

1
如何定义一个好的高光脸
我想使用global-hl-line-mode,但是我的某些主题缺少醒目的面孔。有没有一种通用的定义方法(不是反色的)?我想保持语法突出显示,这在我的尝试中是无效的。
9 colors 

1
如何覆盖浅色和深色背景的预定义面孔?
我想set-face-attribute根据当前主题的背景是浅色还是深色来为前景选择两种颜色之一。 预期的行为是,如果我从浅色背景主题切换到深色背景主题,前景会自动更改,反之亦然。 这是一个用例: 我自定义stripe-hl-line如下: (set-face-attribute 'stripe-hl-line nil :overline "gray" :underline "gray" :foreground "dodger blue") 但是我想根据主题是浅色还是深色来更改前景。这样,我不必担心在每个主题中自定义该面孔。
9 faces 


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.