请问各位大佬提供一下解决org-capture跟whitespace mode冲突的解决思路
背景
想照着这里做一个整理代码链路的工作流,思路是通过org-mode的clock,把org-capture内容动态写入到当前的clock文件里
问题
功能倒是很快糊出来了,就是目标的org mode文件里的代码高亮不工作。而且更加神奇的是光标所在行以及往上的行显示是正确的
重新调用一次(org-mode)
可以修好高亮,但是插入新内容之后还是有问题
排查
把全部配置去掉之后,写了一个最小的复现配置。只用了whitespace,which-func跟org-capture
- 打开一个org文件,在任意标题
org-clock-in
- 打开任意程序选中一段,然后
org-capture-code
最小复现代码
(require 'which-func)
(use-package whitespace
:ensure nil
:hook
((prog-mode text-mode) . whitespace-mode)
:init
(progn
(setq whitespace-style '(face tabs empty trailing))))
(use-package org-capture
:ensure nil
:config
(add-to-list 'org-capture-templates
`("cl" "Link to Code Reference to Current Task"
plain (clock)
"%(format-org-capture-code-block \"%F\")"
:empty-lines 1 :immediate-finish t))
;; https://github.com/howardabrams/hamacs/blob/5182b352cd2d4e03d18b5a37505db64e1fdf1f62/ha-org-clipboard.org
(defun format-org-capture-code-block (filename)
(with-current-buffer (find-buffer-visiting filename)
(let* ((org-src-mode (replace-regexp-in-string "-mode" "" (format "%s" major-mode)))
(func-name (which-function))
(extracted-text (buffer-substring (region-beginning) (region-end)))
(file-name (buffer-file-name))
(file-base (file-name-nondirectory file-name))
(line-number (line-number-at-pos (region-beginning)))
(initial-txt (if (null func-name)
(format "From [[file:%s::%s][%s]]:"
file-name line-number file-base)
(format "From ~%s~ (in [[file:%s::%s][%s]]):"
func-name file-name line-number
file-base))))
(format " %s
#+begin_src %s
%s
#+end_src" initial-txt org-src-mode extracted-text)))))
(defun org-capture-code (&optional start end)
"Send the selected code to the current clocked-in org-mode task."
(interactive)
(org-capture nil "cl"))
Debug
我本来想用describe-face
看看当前的face是什么,但是光标到哪里哪里就正常
试过font-lock-flush
跟delete-overlay
,但是不管用。以下为录屏,求大佬们提供个解决思路。当然了报bug也是个思路(逃
补充一点,这个黄的区域只会由org-capture触发。如果手打一段代码块是没有问题的