【问题标题】:How to indent 4 spaces under SGML modeSGML模式下如何缩进4个空格
【发布时间】:2010-12-12 14:20:24
【问题描述】:

你知道在 SGML 模式(PSGML)下,Emacs 可以自动缩进 XML 缓冲区。

C-x-h ;; Select all
M-C-\ ;; Indent

但所有缩进都是 2 个空格。如何设置自动缩进 4 个空格?

我试过(setq-default sgml-indent-step 4),但它不起作用。

当前视图是:

<TESTCASE>
  <NAME>00001<NAME>
  <TIMEOUT>600000</TIMEOUT>

我的期望是

<TESTCASE>
    <NAME>00001<NAME>
    <TIMEOUT>600000</TIMEOUT>

谢谢!

使用 GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600)
2008 年 3 月 26 日发布

【问题讨论】:

标签: emacs


【解决方案1】:

您正在寻找sgml-basic-offset

编辑:实际上,我应该添加我是如何计算出来的。任何人都不应低估自我记录的编辑器所提供的力量:

打开一个 sgml 文档

C-h k tab 表示它绑定到一个查看变量 indent-line-function 的函数。

C-h v indent-line-function告诉我看功能sgml-indent-line

C-h f sgml-indent-line 很少告诉我。真的没什么。但它也提供了实施的地方。

好吧,查看实现,我发现它使用的是sgml-calculate-indent。这就是算法的精髓……往下走,你可以找到 tag 的情况,最后一个元素在其中

(+ (current-column) sgml-basic-offset)

快速C-h v sgml-basic-offset 将确保我们正在查看应该自定义的一个变量。确实如此。

【讨论】:

  • 好故事!感谢您添加额外的细节。
  • 谢谢!你告诉我的不仅是答案,还有方法。对于 Emacs 上的任何问题,这是一种非常有效的方法!我试过了,它有效。谢谢! (setq sgml-basic-offset 4)
  • C-h v indent-line-function 是如何让你看sgml-indent-line 的?我无法遵循这种间接方式。
  • 嗯...它对我不起作用。我认为这是一个旧帖子。
  • @nephewtom: 不知道为什么我在 4 年前错过了你的评论,但是如果你在 sgml 模式下的缓冲区中执行 Ch v indent-line-function 它会告诉你那个变量的值是 sgml-indent-line。我刚刚尝试再次更改 sgml-basic-offset 的值,它仍然有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2017-08-05
  • 2019-03-13
  • 2018-07-31
相关资源
最近更新 更多