【问题标题】:Highlight and space out tags in org-mode在 org-mode 中突出显示和分隔标签
【发布时间】:2014-11-02 04:40:52
【问题描述】:

我想改变标签在组织模式缓冲区中的显示方式:

* 标题                                                      :tag1:tag2:tag3:

到这里:

* 标题tag1tag2tag3

所以基本上,我正在寻找的变化是:

  1. 紧接在标题之后的开始标签。

  2. 隐藏: 字符

  3. 在每个标签之间添加一个空格,以便在visual line mode 中正确包裹一长串标签

  4. 删除标签的默认粗体格式并添加突出显示

到目前为止,我已经能够通过自定义Org Tag 属性来更改字体并添加高亮。作为临时/黑客,我通过打开hi-lock-mode 然后M-x highlight-phrase [RET] : [RET] org-hide [RET] 使: 字符不可见。但这只是隐藏了冒号——它实际上并没有创建一个真正的空间。所以标签仍然无法在visual line mode 中正确包装。此外,这会隐藏所有冒号,无处不在,而不仅仅是分隔标签的冒号。

也许另一种选择是添加空格但保留冒号?

* 标题:tag1:tag2:tag3

我一直在用日光主题试听这个。截图如下:

有什么想法吗,cmets?谢谢!

【问题讨论】:

  • 在防止标签右对齐方面,可以使用(setq org-tags-column 0)。至于其他的东西,我会把它留给另一个论坛参与者。如果你放了空格,你可能会受到伤害,因为正则表达式用于定位和处理标签。我不认为标签正则表达式\\(:[[:alnum:]_@#%:]+:\\) 考虑空格,所以如果你尝试放置空格,你会遇到无法预料的后果。
  • 就字体而言,将光标放在存在特定字体的位置并输入C-u C-x =,这将告诉您想要字体存在。然后您可以使用M-x customize-face 自定义适用的字体。当您变得更高级时,您可以在 .emacsinit.el 文件中手动编辑字体修改。至于您的换行问题,您可以在属性抽屉下方使用“注释”,并保持标题简单,以免换行。一旦你习惯了 org-mode,你可能会喜欢冒号而忘记隐藏它们。
  • 您几乎可以通过display text 属性对任何文本执行任何操作。见gnu.org/software/emacs/manual/html_node/elisp/… 我认为这可以在org-font-lock-set-keywords-hook 中使用。 (对此不确定。)
  • 托拜厄斯,谢谢!不幸的是,我对 elisp 完全了解 zip ......你将如何实现它?

标签: emacs tags elisp org-mode


【解决方案1】:

正如@lawlist 所述,(setq org-tags-column 0) 将标签紧跟在标题之后。

为了隐藏与标签相关的冒号,我尝试了@Tobias 建议的方法,通过设置: 的显示属性。将此 sn-p 放入 .emacsinit.el 似乎对我有用。

(font-lock-add-keywords 'org-mode
  '(("^\\*+ "
     ":" nil nil
     (0 (put-text-property (match-beginning 0) (match-end 0) 'display " ")))))

我指的是设置Search-based Fontification(matcher . anchored-highlighter)格式:

截图(注意我没有设置org-tags-column 0所以它是右对齐的,字体颜色由customize-face RET org-tag RET设置):

【讨论】:

  • 这适用于org-mode,但不适用于org-agenda-mode,它使用text-properties 而不是fontify
  • 经过进一步调查,如果org-agenda-show-inherited-tagsnil,则此方法有效。
【解决方案2】:

如果满足以下条件,您的要求可以得到解决:

  • 有一个面部 org-tag-separator(例如)仅用于“:”符号,
  • 您已自定义该面,使其前景与背景相同。

在 Org ML 上提问?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多