在emacs中隐藏第一列

4

我正在编写一个模式,以更轻松地处理一些日志文件。前几列都是相同的元数据,我想省略这些内容的显示。隐藏这些信息的最佳方法是什么?是逐行查找并将每行的该部分标记为“不可见文本属性”吗?

这些日志文件只会被显示,不会被编辑。


你只是想显示日志文件还是想编辑它们? - Nicolas Dudebout
3个回答

2
将以下内容添加到您的.emacs文件中:
(add-hook 'text-mode-hook (lambda ()
  (font-lock-add-keywords nil '(("\\[.*\\]" (0 '(face default display "meta") append))) t)
  (push 'display font-lock-extra-managed-props)))

这将显示匹配使用正则表达式"\\[.*\\]"作为meta的元数据。

[01/01/2012 14:00 - Message] Hello World!

将会暂时成为

meta Hello World!

只需用匹配您元数据的正则表达式替换即可。

希望这可以帮助到你!


你能否给我建议,如果元标记以XML标记格式呈现,你会写什么?我已经在这里提出了一个问题http://stackoverflow.com/questions/12246503/regex-for-identifying-all-xml-tags-in-elisp。谢谢 - Daniel

2

我会尝试使用一个字体锁定关键字,添加“invisible”属性。以下是未经100%保证的未经测试的代码:

(font-lock-add-keywords nil
  '(("^.............." (0 '(face nil invisible t)))))

1
我建议编写一个elisp函数,它可以读取日志的每一行并在打印之前丢弃您不想要的信息。

不太是我所希望的 - 具体来说,我希望它仍然在emacs缓冲区中,这样我就可以像平常一样浏览它。 - Nathaniel Flath
例如,Magit 采用的方法是调用 Git 函数,解析它们的输出,丢弃一些信息并显示一些信息。 - Nicolas Dudebout
如果文件很大和/或经常更改,生成大量临时数据并不是非常可扩展的。不幸的是,我的印象是这可能仍然是这里要走的路。但是我的Emacs知识并不完全更新。 - tripleee
这是一个日志文件,因此每当有新行可用时,只需要将其剥离多余信息并放入缓冲区/显示即可。 - Nicolas Dudebout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接