defface 中设置的问题

自己改了一个face

(defface my-org-emphasis-bold
  '(
    (default :inherit bold)
    (t :foreground "#f06352")
    )
  "my bold emphasis for org")

(setq org-emphasis-alist
      '(("*" my-org-emphasis-bold)
	("/" italic)
	("_" underline)
	("=" org-verbatim verbatim)
	;; ("~" org-code verbatim)
	("`" org-code verbatim)
	("+" (:strike-through t))))

需求

  1. bold的颜色更改
  2. 将org中的 ~语法 改成 markdown的 ` 语法来表示inline code

第一个需求可以,

但是这里怎么隐藏这个 * 啊?

第二个,我改成 ("`" org-code verbatim) 好像没有其效果呀 image

呵呵,恰好我前几天也也有这个需求,不过没细看,org源码里有个正则是写死了就那么几个emphasis的,那个正则初看起来还挺复杂的,就没继续了,楼主解决了可以发上来共享,嘿嘿

可以用 GitHub - QiangF/org-extra-emphasis: Extra Emphasis markers for Emacs Org mode

1 个赞

好的谢谢,明天上班看看

感觉这个包写得太复杂了,花了点时间下面代码就可以把markdown的```加入到org 标记里:(没有考虑导出成html什么的情况)

(use-package org
  :defer t
  :config
  ;; 添加markdown的代码标记
  (add-to-list 'org-emphasis-alist '("`" org-code verbatim))
  (setq org-verbatim-re
        (string-replace "[=~]" "[=~`]" org-verbatim-re))
  (define-advice org-do-emphasis-faces
      (:around (orig-fn &rest args) my)
    (cl-letf* ((org-member (symbol-function #'member))
               (org-format (symbol-function #'format))
               ((symbol-function #'format)
                (lambda (&rest args)
                  (if (equal
                       (car args) "\\([%s]\\|^\\)\\([~=*/_+]\\)")
                      (progn
                        (setcar args "\\([%s]\\|^\\)\\([~=*/_+`]\\)")
                        (apply org-format args))
                    (apply org-format args))))
               ((symbol-function #'member)
                (lambda (elt list)
                  (if (equal list '("~" "="))
                      (funcall org-member elt '("~" "=" "`"))
                    (funcall org-member elt list)))))
      (apply orig-fn args))))

补:楼主你的第1个隐藏星号可以试试(setq org-hide-emphasis-markers t)