请问大家都是怎样解决org-link结束处必须加空格这个问题的?

众所周知,org link是非常强大的,可以各种自定义。但是中文下org link的显示有一个问题亟待解决。就是连接结束处必须加空格,比如下图:

虽然只是显示上的错误,不影响使用。但是对于强迫症的我来说是不能忍的:sob: 请问大家是怎样解决这一问题的?

**更正:**我看了一下 org-element,准确来说是影响使用的,每次必须加空格,否则后面紧跟的文字自动变成链接文字。

Edit: 这里说的是 plain-link。bracket-link 没有这一问题

1 个赞

我之前试过用脚本修改链接的正则表达式,但是很麻烦;而且由于 Org 更新频繁,很容易出错。有没有什么比较 clean 的做法来修复这一问题呢?

@xuchunyang

无论从观感还是使用上考虑,加空格才是正确的做法。

这个问题前几天已经被 Nicolas Goaziou 修复了。从 ELPA 安装 Org mode 的话,应该还需要等一阵子。


/cc @mistkafka (因为你在另外一个主题中问了相同的问题: Org-mode 中文行内格式化的问题 ) /cc @LdBeth

1 个赞

非常感谢诸位,这样我终于可以不用自己 hack 了,解决了困扰我很久的一个问题!

PS:你不用知会 mistkafka 了,就是他提的 Issue :joy:。这件事改变了我的看法,看来有些问题直接在 org mail-list 提可能会比较快解决。热心的人很多。

导致她/他/它被知会了两遍。:no_mouth:

1 个赞

哈哈,我把 @ 去掉了

现在的问题是,我现在要转而使用 org-mode git version 吗?毕竟 ELPA org 的更新间隔有时会长达两三个月

算了,不管了,切换到 git version 的 org,一劳永逸,这样 arch linux + spacemacs dev + org git 的组合可能更适合我。

Those who are cutting the bleeding edges.

我理想中的解决方案是,用一个自定义变量控制使用 org elpa 还是 org git,我研究一下,如果可用的话就向 spacemacs 提交一个 PR。

不急。我是觉得将就用一会就可以了。更新太频繁伤硬盘。

你能用 setq 在 user-init 里面重定义 org-packges。 所以不用做 dirty hack。

我记得 Spacemacs 用的 org-plus-contrib, 这个更新要迟一点吧。 @xuchunyang

好像 org-plus-contrib 比 org 更新更频繁,你可以查看一下你的 org-version, 应该是最新的 9.0.7

arch linux 如果一个月不更新,下次更新就得一两个G。我已经养成更新的习惯了,基本每周更新一次。有时偷懒会半个月或者一个月更新一次。

1 个赞

可以啊,估计可以像这样(我没试过):

(setq custom-file (locate-user-emacs-file "custom.el"))
(load custom-file :no-error :no-message)

(defcustom chunyang-use-org-from-git-p t
  "是不是要用 Git 版的 Org mode."
  :type 'boolean)

(use-package org
  :ensure org-plus-contrib
  :init
  (when chunyang-use-org-from-git-p
    ;; Prefer Org mode from git
    (add-to-list 'load-path "~/src/org-mode/lisp")
    ;; `:append' to make sure newer `htmlize.el' from Melpa is used
    (add-to-list 'load-path "~/src/org-mode/contrib/lisp" :append)
    (add-to-list 'Info-directory-list "~/src/org-mode/doc")))

调整过选项(且保存在 custom-file 中)后需要重启 Emacs 才能生效。并且要是不介意改自己的配置的话,用注释更简单些。

http://orgmode.org/elpa/ 看起来 orgorg-plus-contrib 是同步更新的

神速啊,感谢!

我用 spacemacs,可能需要稍微修改一下。

因为比较忙,所以直到今天 org 更新了才试用。

我觉得这个问题目前只解决了一半,也就是说对于 没有 [[]] 包围的 plain-link,问题仍然没有解决,还是需要在链接结束的位置加空格。@xuchunyang 你怎么看?

PS: 又看了一下我原来的帖子,以前 bracket link 就没有这个问题啊?我错过了什么?

plain-link 前后自然要加标点符号或者空格,不然没有办法区分链接和文字,比如 file:~/文档 前后不隔开的话:

笔记放在file:~/文档里

<https://emacs-china.org/t/org-link/2276> 也不用加空格,应该已经用 []<> 隔开了。

1 个赞

好吧,我因为大量用到 plain-link,而且不希望加空格,所以没办法只能使用 dirty hack —— 修改正则表达式了。能这样做的原因是因为我的链接里绝大部分都不包含中文(主要是 org-ref 中的 ref-link cite-link 什么的)。

感觉应该搞一个中文用户的专用 org-mode。可以是一个 fork,能够同步上游更新,专门针对中文使用优化。

比如我还有一个问题就是,一段话中如果出现两处中文加粗,就会出现渲染错误。