Emacs

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

2
开发时如何更新次要模式定义?
我开始编码次要模式以提供一些键绑定。我最初的尝试有一个错字: (define-minor-mode borked-mode "A mode defined with a broken key binding" nil nil '(([b] . 'previous-line))) 我原本打算使用该b密钥,但立即意识到我应该使用"b"而不是[b]。所以我重新定义了次要模式: (define-minor-mode borked-mode "A mode defined with a broken key binding" nil nil '(("b" . 'previous-line))) 但是,这没有用。这使我开始通过各种各种绑定键的方式(即(kbd ...),[...]等)来追逐野鹅。最终,我意识到仅仅重新评估(define-minor-mode ...)表单并没有改变任何东西,我陷入了原始的,损坏的键映射中。然后,我尝试通过直接更改键盘映射(define-key borked-mode-map ...),但仍然无法加载正确的键盘映射。最后,我重新启动了Emacs,并正确加载了次要模式。 我的问题是:如何在开发次要模式定义时对其进行更新?有什么方法可以刷新损坏的定义,还是必须重新启动emacs才能清除损坏的位?
13 minor-mode 

9
如何编辑elisp而不使括号丢失
我正在从linum.el修改一些elisp代码: (custom-set-variables '(linum-format 'dynamic)) (defadvice linum-update-window (around linum-dynamic activate) (let* ((w (length (number-to-string (+ (count-lines (point-min) (point-max)) 1)))) (linum-format (concat " %" (number-to-string w) "d "))) ad-do-it)) 通过修改(count-lines (point-min) (point-max))为,我能够修复缩进不一的错误(+ (count-lines (point-min) (point-max)) 1)。那很简单。 但是现在我想修改它,以便通过(concat " %" (number-to-string w) "2d ")在行数计数<10 的情况下添加if条件来最小宽度为2 。 这应该很容易!添加一个条件并复制/粘贴concat。小菜一碟吧?我的意思是,我知道我应该做的,但我很少过问elisp的,当我需要修改,有很多括号的任何东西我总是吓倒。 据我所知,“正确”的样式是基于缩进来构造代码,并在行的末尾而不是单独地将尾括号括起来。来自其他“ C”风格的语言,我很难以这种方式读写代码。所以我的问题是:我在做什么错?我应该如何编辑elisp并浏览代码,而不必坐在那里计算每个括号? 当我在elisp中处理过深的东西时,我必须关上门,拉开百叶窗,然后开始放置括号中的K&R样式,这样我不仅可以阅读而且可以修改令人毛骨悚然的东西而不会感到惊讶。 显然我做错了。我如何能这样无惧地触摸elisp? 请注意,我的问题是如何导航和编辑elisp而不是样式问题。我已经使用以下内容作为样式指南:https : …

1
一个yasnippet片段,用于多种模式
我有以下片段: # -*- mode: snippet -*- # contributor: Song Qiang <tsiangsung@gmail.com> # key: m # group: Math # name: Inline math \( ... \) # -- \\($1\\)$0 我想这是同时适用于latex-mode和org-mode。如何做到这一点?我可以建立符号链接,但是我正在尝试寻找一种更聪明的方法。
13 yasnippet 

1
某些字体的行距过大
长期以来,我一直在使用DejaVu Sans Mono作为编程字体。我还没有找到更好的字体。 但是不久前,我发现了Mozilla的Fira,它对代码看起来非常不错。因此,我决定尝试使用Emacs。 不幸的是,当我在Emacs中使用它时,行间距变大,我可以看到的行数减少了大约10条。 我已经尝试过(setq line-spacing 0)和进行不同组合,例如(set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100)),但是无论我做什么,都会保留过多的行距。(line-spacing不幸的是,不可能在Emacs中使用负值,这似乎是显而易见的解决方案。) 不过,这似乎不是字体中的错误,因为当我在Kate中以相同大小使用Fira Mono时,行间距是我认为正常的值,并且显然与DejaVu Sans的Emacs行间距相同。 这是Emacs中的错误吗?有没有什么办法解决这一问题? 感谢您的任何建议。 左: Emacs Fira Mono 右: Emacs DejaVu Sans Mono 左: Emacs Fira Mono 右: Kate Fira Mono

4
“符号值”有什么作用?
该文档使我不明智: 此函数返回存储在符号的值单元格中的值。在此存储变量的当前(动态)值。如果变量没有本地绑定,则这只是其全局值。如果变量为空,则发出空变量错误信号。 符号值的意义是什么?我需要在何时何地使用它?
13 elisp  symbols 

4
命名字符串替换?
我经常必须对同一字符串进行多次替换: (format "%s %s %s" "a" "a" "a") ;; gives: "a a a" (这只是一个虚拟的示例,在这种情况下,最好将“ a”与空格粘合在一起,但是通常我会处理更复杂的情况) 有没有办法进行命名替换?例如在python中,将这样写: "{0} {0} {0}".format("a") # or: "{name} {name} {name}".format(name="a")
13 elisp  string 

1
后初始化钩vs评估后加载/与评估后加载
我发现相当有用的“ 如何在Emacs 24中使用软件包”是什么,但是,我想从经验丰富的用户或核心开发人员那里得到明确的答案,以决定在24.4的典型情况下,实际上哪个是首选的。 Afaik (add-hook 'after-init-hook ...)是所谓的蛮力方法,用于为软件包设置自定义。但是,eval-after-load它在语法上更加含糖,with-eval-after-load似乎更适合于动态,细粒度的配置,这些配置可以很好地与扩展的逐渐,单独和延迟加载配合使用。 我的理解正确吗?我还要记住什么?

3
将emacs与Thunderbird结合使用以撰写和回复邮件
关于使用emacs作为成熟的主要电子邮件程序的文章很多。我正在寻找一个具有简单设置的内容,以便可以将Thunderbird保留为我的主要电子邮件管理程序,但可以在emacs中编写和发送电子邮件。由于python可以从命令行发送邮件,因此我认为这对于emacs来说并不太困难。 下一步:如果可能,我仍希望能够与imap服务器同步以提取最近的100封电子邮件,以便我可以在emacs中撰写响应。这不需要文件夹管理,但需要一定程度的同步,尽管在会话结束后我不需要将消息本地保留给emacs。仍然需要offlineimap吗? 对合适的配置有什么建议吗?
13 email 


4
减少我的组织文件顶部的LATEX_HEADER混乱
我经常在组织模式下书写笔记,然后将其导出到乳胶中。但是,由于某些文档很复杂,因此需要在顶部包含许多乳胶包,如下所示: #+LATEX_HEADER: \usepackage[margin=1.15in]{geometry} #+LATEX_HEADER: \usepackage{parskip} #+LATEX_HEADER_EXTRA: \usepackage{graphicx} #+LATEX_HEADER_EXTRA: \usepackage{mdframed} #+LATEX_HEADER_EXTRA: \usepackage{needspace} #+LATEX_HEADER_EXTRA: \usepackage{hyperref} #+LATEX_HEADER_EXTRA: \usepackage{titling} #+LATEX_HEADER_EXTRA: \usepackage{enumitem} #+LATEX_HEADER_EXTRA: \usepackage{etoolbox} #+LATEX_HEADER_EXTRA: \usepackage{color} #+LATEX_HEADER_EXTRA: \usepackage{underscore}... 是否可以将所有乳胶头命令(\ usepackage,宏定义等)存储在单独的tex文件中,这样我可以在org文件的顶部仅包含一行?这将减少很多混乱,并使我更容易添加软件包。
13 org-mode  latex 

2
您的“ python-shell-解释器”似乎不支持readline
我在Ubuntu 16.10上使用我的25.1和Python 3.5遇到了这个问题,但是我看不到任何地方都可以解决。想知道最新状态是什么。复制: > emacs -Q --eval '(setq python-shell-interpreter "python3")' 然后 M-x run-python 给 Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list. Native completions have been disabled locally. 我看到了一个想法,M-x find-function python-shell-completion-native-try它将把功能从深层拉起,(/usr/local/share/emacs/25.1/lisp/progmodes/python.el.gz而最后一行应该是nil "_"))),不是nil "")))。这里的另一场谈话谈论改变inputrc 我切换到另一个用户,并且能够在没有任何警告的情况下使用“ run-python”。原来是我的readline设置。Bash 4.3添加了一个新的readline功能:.inputrc中的“ …
13 python  repl 

2
隐藏SRC块定界符的方法
有没有办法让源代码中只保留源代码,即使#+ BEGIN_SRC和#+ END_SRC不可见?它很漂亮,但是当人们不得不处理许多短代码片段时,它使事情变得更清楚。举个例子: (defun org-xor (a b) "Exclusive or." (if a (not b) b)) 代替 : #+BEGIN_SRC emacs-lisp (defun org-xor (a b) "Exclusive or." (if a (not b) b)) #+END_SRC
13 org-mode 



3
如何设置默认字体大小?
我发现自己一直在缩小我正在使用的每个缓冲区的(Cx C--),以查看正在处理的更多代码行。 有没有办法在我的.emacs中设置缩放级别,而不是交互式设置?还是应该考虑设置字体大小?我一直在使用缩放,因为它是最简单/最快的解决方案,但我宁愿找到一个更永久的解决方案。使用一个相对于另一个有缺点还是优点?我不清楚这些差异。
13 fonts 

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.