建议“杀死戒指”

时间:2012-09-04 09:31:51

标签: elisp

我想在允许用户复制文本之前评估某些条件。据我所知,我需要"kill-ring-save"的建议。如果条件不满足,我需要忽略用户复制该文本的请求,如果满足则允许它。我怎样才能做到这一点?

(UPDATE) - 关于约束的更多信息:仅在Emacs的特定模式(例如NXML模式)中,应该应用此建议,并且仅在满足一个/多个特定条件时才应用。

1 个答案:

答案 0 :(得分:3)

快速概念证明;你不知道你的约束是什么,所以这一定是模糊/无用的。

(defvar moo nil)

(defadvice kill-ring-save (around kill-ring-check-constraints activate compile)
  "If in `nxml-mode', don't save to kill ring if `moo' is `nil'."
  (if (and (eq major-mode 'nxml-mode) (null moo))
    (message "Not copied.")
   ad-do-it) )

为响应以下评论,我们添加了额外的主模式约束。如果你想在每种模式下都这样做,只需要进行模式检查。