Emacs

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

1
如何使用rx创建动态正则表达式?
我想用来rx创建带有运行时值的正则表达式。 目前,我正在这样做: (setq strings '("foo" "bar" "baz")) (eval `(rx symbol-start (or ,@strings) symbol-end)) 但是,我宁愿避免使用eval。我已经找到rx-to-string,但尚不清楚我应该写什么形式: ;; error: Unknown rx form `symbol-start (rx-to-string '(symbol-start (or ,@strings) symbol-end)) 如何rx在运行时构建表达式?

1
如何使用SLIME作为Common Lisp程序和Emacs Lisp之间的代理?
我正在考虑做以下事情:我有一个用Common Lisp编写的程序,我希望能够与Emacs进行通信。该程序处理自然语言解析,因此我需要在Emacs中访问的内容是缓冲区的内容以及创建消息以发送到Common Lisp程序所需的一些最少的初步解析。然后,Common Lisp程序将处理消息并回复Emacs Lisp程序,以便显示结果。 我知道SLIME将是实现此目的的好工具,主要是因为它已经完成了大部分工作,但是查看文档后,我发现它是“用户文档”类型,而不是“开发人员文档”。本质上,我想知道在Emacs Lisp方面可以用来进行通信的最低要求(在这种情况下,我当然不需要自省或REPL,我所需要的就是向和发送消息。从我在SWANK中运行的程序中)。

2
Emacs是否有自动对齐程序包或模式?
有时候,我在编辑文件(例如,Puppet清单)时要动态对齐缓冲区内容。例如,我知道只要选择以下代码,就可以使用align-regexp或align对齐代码: # M-x align-regexp "=>" will line everything up nicely file { "/etc/foo": ensure => present, mode => "0666", source => "puppet:///modules/example/foo", } 但是我真正想要的是让这种情况即时发生-无需选择区域或整个缓冲区。是否有可以执行此操作的程序包或模式,或者是否必须将这些内容内置到我感兴趣的模式中? 编辑:我问了有关Puppet和CFEngine的问题,因为这是我最近几天编写的代码,并且我非常喜欢对齐的文本。但是,我也很好奇(并没有很好地表达这一点)想知道即时对齐是否是Emacs模式(主要是用于编程语言的模式)中常见的功能,或者大多数人在保存时或在某些情况下会对齐吗?其他一点。
15 align 

2
终端中的Emacs无法识别Shift + Up
我经常使用Shift+ Up/Down在Emacs中选择一个区域。它在GUI模式下可以正常工作,但是当emacs通过-nw选项调用时,我只能使用Shift+ 选择行Down。该Shift+ Up不工作,我得到的小缓冲区此错误信息: <select> is undefined 我该如何解决这个问题?


2
Emacs边缘的可行代码折叠
我想配置我的Emacs边缘以显示代码折叠部分。 例如,在Mac上,BBEdit在编辑JSON文件时将显示以下内容: 标记本身是可操作的:单击标记将展开或折叠相应的代码部分。当文档没有支持代码折叠的模式时,不会显示边缘。 是否可以通过这种方式扩展Emacs边缘功能?

2
如何交互测试和使用Perl正则表达式?
说我有一个文本缓冲区。我想针对我的缓冲区测试一个正则表达式(最好是Perl类型),并让Emacs突出显示它的匹配项。 例如,以下正则表达式(摘自Wikipedia): (?<=\.) {2,}(?=[A-Z]) 在以下文本上匹配如下: 该正则表达式尤其匹配在句点之后(.)和大写字母之前出现的至少两个空格。 Emacs是否为Perl正则表达式提供交互式正则表达式匹配器? 如果对后者的回答为“否”: 有没有理由在Emacs中从来没有考虑过对Perl正则表达式的本机支持?(考虑到它是Unix / Linux中众所周知的标准) 如何构建这样的Perl正则表达式匹配器?(也许是在后台调用Perl,还是将Perl正则表达式预先转换为受支持的变体?)



2
如何相对于.dir-locals.el文件位置设置目录局部变量?
我经常遇到被告知将相对路径作为目录局部变量的情况。例如cmake-ide的cmake-ide-project-dir和cmake-ide-build-dir。当然,这不是很方便。 所以代替 .dir-locals.el: ((nil . ((cmake-ide-project-dir . "/home/user/code/project")))) 我想要类似的东西 ((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file)))) 如何定义这样的变量directory-of-current-dir-locals-file?举例来说cmake-ide-build-dir,我该如何设置(concat directory-of-current-dir-locals-file "build")?

3
通过缩进导航
我想基于缩进在文件的各行之间导航。该文件由缩进构成:比前一行缩进更多的行是前一行的子级,与前一行缩进相同的行是其同级。我主要在寻找三个命令: 移至下一个同级,即下一个具有相同缩进的行,跳过缩进较多的行,但不跳过缩进较少的行。 移至上一个同级,即在另一个方向上移至同一事物。 移至父级,即缩进较少的前一行。 该点的列位置不应更改。 这些是压痕结构化的数据,以类似物forward-sexp,backward-sexp和backward-up-list用于SEXP结构化数据。缩进对应于Haskell和Python等语言的程序结构;这些功能在这种情况下特别有用,但我并没有寻找任何特定于模式的内容(我的主要用例是另一种文件格式内的按意图构造的数据)。 着色缩进级别可以帮助使用Up/ 手动导航,Down但是我想要自动的东西。 这个超级用户问题与之类似,但要求较弱,并且目前没有满足我要求的答案。

2
Magit在Windows中极慢。我该如何优化?
我被迫将Windows 10用于一个项目。是的,我宁愿使用GNU / Linux。为了保持理智,我尝试将Windows视为Emacs的引导程序:) 不幸的是,Magit(我最喜欢的Emacs部分之一,它也弥补了Windows上缺少良好的命令行)的速度令人难以忍受。我有一个SSD,16 GB的RAM和一个四核i7,但是在小型存储库上执行需要八秒钟magit-status。然后,当我要进行另一个更改时,每个文件大约需要5秒钟。 这是我尝试过的: $ git config --global core.preloadindex true $ git config --global core.fscache true $ git config --global gc.auto 256 将整个项目添加到Windows Defender(我唯一的AV)排除列表中 设置为magit-git-executable我下载的常规msysgit(https://git-for-windows.github.io/)。我检查了一下,git status这花费了不到1秒的时间。我知道这样magit-status做的确更多,但这太多了。 任何人都可以提出一些方法来加快速度吗?我无法想象像这样在Windows上使用Magit的人。 有人建议这个问题是重复的,但他们问: 我在努力理解为什么Emacs在Ubuntu上的启动时间比Windows短得多。有人知道答案吗? 我至少知道为什么Emacs,Git和Magit在Windows上速度较慢的一些原因。我在问我如何优化Magit以减少工作量或缓存结果等,即使这是以功能为代价的。

3
从组织模式使用乳胶将Unicode字符导出为pdf
您好,Emacs的好人! 我在将Unicode数学符号从缓冲区(组织模式)导出到pdf文件时遇到麻烦。 1.问题描述: 将符号作为unicode字符插入缓冲区(通过TEX输入法或 company-math) 这是源代码演示: #+TITLE: Unicode characters export test #+AUThor: #+date: Unicode characters: ℝ ℤ ℕ ⇒ ∈ ∀ Same symbols in latex format: $$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$ 产生的.tex文件包含unicode符号: % Created 2016-03-04 Pá 21:01 \documentclass[11pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{fixltx2e} \usepackage{graphicx} \usepackage{longtable} \usepackage{float} \usepackage{wrapfig} \usepackage{rotating} \usepackage[normalem]{ulem} \usepackage{amsmath} \usepackage{textcomp} …

2
Python组织模式的源代码块输出始终为“:无”
这是我的源代码块: #+BEGIN_SRC python print "hello" #+END_SRC 输出始终为: #+RESULTS: : None 这是我的org-babel配置: (org-babel-do-load-languages 'org-babel-load-languages '((python . t) (C . t) (calc . t) (latex . t) (java . t) (ruby . t) (scheme . t) (sh . t) (sqlite . t) (js . t))) Python在我的PATH上,可以通过终端执行。 Emacs-lisp SRC块工作正常。 为什么我得到None代替hello?

2
什么时候应该在配置文件中使用with-eval-after-load?
我查看了配置文件,并希望进行一些清理。 我的理解with-eval-after-load是,在装入相关程序包后将立即对其主体进行评估。在清理配置文件并进一步分割它们时,我想用括住每个软件包配置with-eval-after-load。一切都按预期进行,直到我封闭了helm和的配置helm-projectile。 这就是我的想法(lisp / init-helm.el): (with-eval-after-load 'helm (setq helm-mode-line-string "") (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages) (define-key global-map (kbd "C-c m") 'helm-imenu) (define-key global-map (kbd "C-x b") 'helm-buffers-list)) (with-eval-after-load 'helm-command (global-set-key (kbd "M-x") 'helm-M-x)) (with-eval-after-load 'helm-projectile (helm-projectile-on)) 重新启动Emacs后,出现以下窗口大小问题: 这是我调整窗口大小的方法: (set-frame-parameter nil 'fullscreen 'fullboth) 我猜我在滥用with-eval-after-load,一个人如何清理他的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.