Emacs CSS模式不会在多行中缩进值

时间:2017-04-24 09:47:40

标签: css emacs indentation smie

当我的CSS文件中的一行看起来太长时(通常是一个属性后跟一堆值),我想将它们拆分为几个这样的新行(对不起我的低声誉):

https://i.stack.imgur.com/bxXvv.png

但我必须在线之前手动输入空格才能实现。实际上,当我用url线上的光标点击TAB时,我得到的是:

https://i.stack.imgur.com/r4nxa.png

最糟糕的是,在手动插入空格后,当我在同一行上再次点击TAB时,由于indent-region,它会回到丑陋的格式。

这不是一个重要的问题,但它真的很痛苦,我真的希望我们能在这里找到一个像样的解决方案。提前谢谢!

M-x版本:

GNU Emacs 25.1.1 (x86_64-apple-darwin16.1.0, NS appkit-1504.60 Version 10.12.1 (Build 16B2555)) of 2016-11-27

编辑: 还尝试了用于css文件和xah-css-mode的web模式。他们都没有成功。

2 个答案:

答案 0 :(得分:2)

in使用css-mode进行缩进。看起来该场景中的smie被标记为“: - property”。一种选择是更改:以包含在该令牌后缩进的另一个规则。

评估以下重新定义似乎给出了您想要的缩进

css-smie-rules

有一个命令(defun css-smie-rules (kind token) (pcase (cons kind token) (`(:elem . basic) css-indent-offset) (`(:elem . arg) 0) (`(:list-intro . ,(or `";" `"")) t) ;"" stands for BOB (bug#15467). (`(:before . "{") (when (or (smie-rule-hanging-p) (smie-rule-bolp)) (smie-backward-sexp ";") (smie-indent-virtual))) (`(:before . ,(or "{" "(")) (if (smie-rule-hanging-p) (smie-rule-parent 0))) ;; *** Additional rule *** (`(:after . ":-property") css-indent-offset))) 可用于确定在给定点使用的缩进规则。

答案 1 :(得分:0)

@jenesaisquoi提到postfix-expression并提供了一个非常有用的示例。这是我对自己问题的最终解决方案。

将这些添加到Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Worksheets("LookupLists").Range.Value = ActiveCell.Address End Sub 文件中:

smie

语法非常自我解释。

也许有一些方法可以修改一个函数而不重写它,但我还不熟悉所有的建议,所以如果我找到一个更优雅的方式我会来回来编辑。

转到jenesaiquoi的答案,找到我们现在可以拥有的最佳解决方案。

我在Github中为init.el打开了一个问题,(require 'smie) (defun css-smie-rules (kind token) (pcase (cons kind token) (`(:elem . basic) css-indent-offset) (`(:elem . arg) 0) (`(:list-intro . ,(or `";" `"")) t) ;"" stands for BOB (bug#15467). (`(:before . "{") (when (or (smie-rule-hanging-p) (smie-rule-bolp)) (smie-backward-sexp ";") (smie-indent-virtual))) (`(:before . ,(or "{" "(")) (if (smie-rule-hanging-p) (smie-rule-parent 0))) ;; *** Additional rules below *** (`(:after . ":") css-indent-offset) (`(:after . ",") css-indent-offset))) 的作者正在研究它。我们很快就会看到对我在问题中提到的缩进的综合支持。