remove-text-properties, кажется, не влияют на текстовое свойство `display` - PullRequest
0 голосов
/ 30 сентября 2018

Я запутался, почему использование remove-text-properties для удаления свойства текста display не меняет отображение в буфере.Вместо этого кажется, что я должен полностью удалить все свойства текста, используя set-text-properties до nil.Например, почему remove-text-properties не работает вместо set-text-properties здесь:

(defvar my-regex "#\\([[:alnum:]]+\\) \\([0-9]+\\)")
(defvar-local my--fontified-p nil)

(defun my-remove-display ()
  "Remove the display, eg. '#blah<2020>' -> '#blah 2020."
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward my-regex nil 'move)
      ;; why can't I use remove-text-properties here to get rid of 'display?
      (set-text-properties (match-beginning 0) (match-end 0) nil))))

(defun my-toggle-display ()
  "Toggle font-locking and display of '#blah 2020'."
  (interactive)
  (if (setq my--fontified-p (not my--fontified-p))
      (progn
        (font-lock-add-keywords
         nil
         `((,my-regex
            (0 (prog1 nil
                 (put-text-property
                  (1+ (match-beginning 0)) (match-end 0)
                  'display
                  (format "%s<%s>"
                          (match-string-no-properties 1)
                          (match-string-no-properties 2)))))
            (0 'font-lock-constant-face t))))
        (font-lock-flush)
        (font-lock-ensure))
    (my-remove-display)
    (font-lock-refresh-defaults)))

;;; Example that gets fontified
;; #blah 2020

1 Ответ

0 голосов
/ 30 сентября 2018

Это работает для меня:

(defun my-remove-display ()
  "Remove the display, eg. '#blah<2020>' -> '#blah 2020."
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward my-regex nil 'move)
      (remove-text-properties (match-beginning 0) (match-end 0) '(display)))))

Вы не показали код remove-text-properties, который вы пытались.Это то, что вы пытались?Возможно, вы передали 'display вместо '(display)?

...