首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除所有字体锁面(除反拼写-不正确拼写-副本外)

删除所有字体锁面(除反拼写-不正确拼写-副本外)
EN

Stack Overflow用户
提问于 2014-05-20 00:08:11
回答 2查看 318关注 0票数 1

为了从使用2秒空闲计时器设置的自定义函数的运行时减少大约.3秒(自定义函数通过缓冲区进行筛选),我禁用了(font-lock-mode -1)的字体锁定模式。副作用是我的flyspell-incorrectflyspell-duplicate被删除了。再用(flyspell-region (window-start) (window-end))把那些拼字字体放回去,花费的时间要远远超过.3秒。因此,除了flyspell-incorrectflyspell-duplicate之外,我还在考虑删除所有字体锁定字体的中间位置。是否有一种方法可以将条件添加到font-core中的以下代码片段中,以保留反拼写字体,同时删除其他所有内容?

代码语言:javascript
复制
;; Turn off Font Lock mode.

(unless mode
  ;; Remove `font-lock-face' as an alias for the `face' property.
  (set (make-local-variable 'char-property-alias-alist)
 (copy-tree char-property-alias-alist))
  (let ((elt (assq 'face char-property-alias-alist)))
    (when elt
(setcdr elt (remq 'font-lock-face (cdr elt)))
(when (null (cdr elt))
  (setq char-property-alias-alist
  (delq elt char-property-alias-alist))))))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-21 04:28:49

令我惊讶的是,飞咒使用的是覆盖,而不是字体锁。我的问题之所以出现,是因为我错误地使用了remove-overlays,因为我没有包含存在的精确值。remove-overlays的不当使用移除了整个小猫--该区域的乱七八糟--包括咒语的覆盖。以下相关线程描述了如何通过确保在使用remove-overlays时始终包含正确的值(如果存在值)来避免此问题:

https://stackoverflow.com/a/23773934/2112489

下面是一个有用的小功能,可以查看幕后发生的事情:

代码语言:javascript
复制
(defun reveal-overlays (&optional beg end)
(interactive)
  (let* (
      (beg (if beg beg (window-start)))
      (end (if end end (window-end))))
    (overlay-recenter end)
    (dolist (o (overlays-in beg end))
      (when o
        (message "%s\n%s\n" (overlay-properties o) o)))
    (switch-to-buffer "*Messages*")))
票数 0
EN

Stack Overflow用户

发布于 2014-05-20 15:15:58

(font-lock-mode -1)不移除不正确的和重复的拼写.它只是禁用它们的视觉效果(使用您发布的代码)。因此,您可以重新设置char-property-alias-alist之后,这些飞行拼写细化将“立即”再次显示。

我很想知道你在做什么,被字体锁的速度减慢了0.3秒。也许还有一种比(font-lock-mode -1)更能避免0.3秒的方法,因为启用/禁用字体锁是非常昂贵的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23749051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档