问题标签 [paredit]

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

emacs - 使用 Paredit 包装现有表达式

我在 Paredit 模式下使用 Emacs 来处理 Lisp 代码。

我正在尝试在 println 中包装一个函数调用:

paredit 中最终发生的事情是这样的:

我无法删除 println 的结束括号并将其移至末尾。

我现在这样做的方式是: 1. 删除函数调用并在 println 中拉出它 2. 不带括号编写 println,直观地选择代码并用括号括起来

这两种方法都很乏味。每当我在 Paredit 中从里到外编写代码时,这似乎都是一个常见问题。任何帮助,将不胜感激

0 投票
4 回答
11079 浏览

emacs - 如何在 Paredit 模式下删除多余的括号?

我在 Emacs 中使用 Paredit 来编辑 Lisp 代码。如何删除我不小心插入的一对额外的括号?如果没有额外的命令,Paredit 不允许这样做。

((square 5))进入(square 5)

0 投票
3 回答
792 浏览

emacs - Paredit:删除不需要的键绑定

我正在尝试 ParEdit 模式,这不是我想要的方式:它隐藏了原始绑定C-M-F并将其替换为C-M-f. 即它转发 sexp 而不是选择它:| 乍一看,我找不到定义绑定的地方。

有什么办法可以取消这种行为?或者 ParEdit 中用于选择性别的模拟命令是什么?

编辑:

为了让您更好地了解会发生什么,如果我C-h k在 ParEdit 处于活动状态时这样做,那么C-M-S-f这就是我得到的:

我不希望它翻译任何东西,这绝对是不受欢迎的行为。

0 投票
4 回答
2463 浏览

emacs - 在 Emacs Paredit 中交换括号和方括号

如何在 paredit 模式下定义交换括号和方括号的命令?

0 投票
1 回答
387 浏览

vim - 在 Mac OSX 上安装 Paredit vim 插件

我最近在我的 mac osx 上下载了vim 的paredit插件。我将 paredit.vim 放在我的 ~/.vim 目录中。

文档说:

但是,当我打开 vim 并输入一个“(”没有关闭“)”时被插入。我还需要做其他事情吗?

0 投票
3 回答
1688 浏览

emacs - 为什么我不能更改 paredit 键绑定

我正在尝试仅使用 paredit 中的几个函数,而不加载所有键绑定。查看 paredit.el,我发现唯一的键盘映射是 paredit-mode-map,所以我尝试了这个。

它没有更改键绑定(与 Ch k 一起检查),但变量 paredit-mode-map 已更改。

我也试过

然后打开和关闭paredit,结果相同。

以前,直接更改键盘映射一直对我有用。这里发生了什么?

编辑:

我通过这样做成功地更改了键盘映射:

所以看起来minor-mode-map-alist 是一个用于查找的变量。我确信有更优雅的方法来更改键绑定,但我想更多地了解键绑定在 emacs 中的工作方式。

0 投票
2 回答
384 浏览

emacs - slurping第一个表达式时如何避免多余的空格字符

在使用 Paredit 时,我经常会遇到以下情况(管道字符表示光标):

我想bar用括号括起来,所以我使用paredit-wrap-around( M- () 来得到这个:

当我想将 bar 放在字符串中时,这同样适用,我可以使用M-"来得到这个:

然而,Clojure 也使用方括号[]和花括号{}来表示向量、映射和集合。这些似乎没有 paredit 'wrap around' 命令。所以在这种情况下,例如将 bar 放入向量中,我通常使用[键来创建一个新向量:

后跟一个paredit-forward-slurp-sexp( C-→</kbd>), which results in:

我想删除之前插入的空格字符bar。这可能吗?为什么 paredit 在从空表达式转换为包含一项的表达式时会保留空格字符?添加到 S 表达式的第一项不应该总是被推到左括号上吗?

0 投票
4 回答
1737 浏览

elisp - paredit 模式下 paredit-convolute-sexp 有什么用

它改变

进入

这种转变有什么用?

0 投票
2 回答
157 浏览

emacs - 如何在 paredit 中用已经写好的外部形式包装表单

假设我有这个代码

然后我想到我应该用以下形式包装它:

导致此代码:

这是我通常的包装方式。首先,我在要包装的表格之前写了一个不完整的外部表格,如下所示:

然后我按C-)( paredit-forward-slurp-sexp) 两次啜饮东西:

然后我(nreverse acc)在最后添加。

现在我想知道的是,如果我首先像这样编写完整的外部表单模板会怎样?

或者像这样

是否有一个简短的 paredit 或非 paredit 命令序列,我可以按这些命令从头开始完成工作?

我可以移动点,剪切两个要包装的表格,移动点,粘贴表格。但我想知道是否有更方便的方法。

我对我的包装方式很满意,但感觉我可能会错过一些其他巧妙的编辑技巧,这些技巧可以从不同的起点找到。

0 投票
1 回答
67 浏览

emacs - paredit-close-round 的组合性质何时有用?

paredit-close-round (通常与 close paren 绑定)结合了两件事:

  1. C-M-- C-M-u

  2. 删除一些空格

该函数的文档有这个简单的例子:

我明白为什么C-M-- C-M-u有用;使用 before 很有用C-x C-e,我也明白为什么删除这些空格的命令可能很有用,但我不明白为什么有一个将两者结合的命令。必须有一个我缺少的使用场景,它可以解释为什么空间清理功能特别添加到paredit-close-round而不是添加到其正向对应项paredit-backward-up