Emacs 如何在日历中只取消标记一个日期--删除覆盖

Emacs 如何在日历中只取消标记一个日期--删除覆盖,emacs,elisp,Emacs,Elisp,错误消息:let:错误的类型参数:overlapp,(#) mouse-1成功地在日历中标记日期。内置函数仅用于删除所有覆盖,而不是仅删除一个特定日期。谁能帮我删除一个标记日期的覆盖图?我想这可能是mouse-2或U。我考虑使用向前/向后跳过语法,因为有些日期只有一个数字,有些日期有两个数字——光标可能在两个数字之间,或者在日期的任一侧。我想我们需要一个起点和终点 (define-key calendar-mode-map [mouse-1] (lambda () (interactive)

错误消息:
let:错误的类型参数:overlapp,(#)

mouse-1
成功地在日历中标记日期。内置函数仅用于删除所有覆盖,而不是仅删除一个特定日期。谁能帮我删除一个标记日期的覆盖图?我想这可能是
mouse-2
U
。我考虑使用向前/向后跳过语法,因为有些日期只有一个数字,有些日期有两个数字——光标可能在两个数字之间,或者在日期的任一侧。我想我们需要一个起点和终点

(define-key calendar-mode-map [mouse-1] (lambda () (interactive)
  (calendar-mark-visible-date (calendar-cursor-to-date t))))

(define-key calendar-mode-map "U" (lambda () (interactive)
  (cond
    ((save-excursion (> 0 (skip-syntax-backward "w")))
      (skip-syntax-backward "w")
      (let ((beg (point)))
        (skip-syntax-forward "w")
          (let ((end (point)))
            (delete-overlay (overlays-in beg end)))))
    ((save-excursion (< 0 (skip-syntax-forward "w")))
      (skip-syntax-forward "w")
      (let ((end (point)))
        (skip-syntax-backward "w")
          (let ((beg (point)))
            (delete-overlay (overlays-in beg end))))))))
请更正错误:

delete overlay
需要一个覆盖作为其参数。您将向其传递一个覆盖列表(空或非空)。您应该使用
while
dolist
mapc
对列表进行迭代

(defvar lawlist-calendar-face (make-face 'lawlist-calendar-face))
(set-face-attribute 'lawlist-calendar-face nil
  :background "LightCoral" :foreground "black")

(define-key calendar-mode-map [mouse-1] (lambda (event) (interactive "e")
  (mouse-set-point event)
  (if (not (overlays-at (point)))
    (calendar-mark-visible-date (calendar-cursor-to-date t) lawlist-calendar-face)
  (cond
    ;; cursor is one whitespace to the left of 1 to 9
    ((and
        (save-excursion (< 0 (skip-chars-forward " \t")))
        (not (save-excursion (< 0 (skip-syntax-forward "w")))))
      (save-excursion
        (let ((beg (point)))
          (skip-chars-forward " \t")
          (skip-syntax-forward "w")
            (let ((end (point)))
              (mapc 'delete-overlay (overlays-in beg end))))))
    ;; cursor is sandwiched between a digit on each side.
    ((and
        (save-excursion (> 0 (skip-syntax-backward "w")))
        (save-excursion (< 0 (skip-syntax-forward "w"))))
      (save-excursion
        (skip-syntax-backward "w")
        (let ((beg (point)))
          (skip-syntax-forward "w")
            (let ((end (point)))
              (mapc 'delete-overlay (overlays-in beg end))))))
    ;; cursor is to the far right of one or two digit dates
    ((and
        (save-excursion (> 0 (skip-syntax-backward "w")))
        (not (save-excursion (< 0 (skip-syntax-forward "w")))))
      (save-excursion
        (skip-syntax-backward "w")
        (let ((beg (point)))
          (skip-syntax-forward "w")
            (let ((end (point)))
              (mapc 'delete-overlay (overlays-in beg end))))))
    ;; cursor to the far left of one or two digits dates
    ((and
        (save-excursion (< 0 (skip-syntax-forward "w")))
        (not (save-excursion (> 0 (skip-syntax-backward "w")))))
      (save-excursion
        (skip-syntax-forward "w")
        (let ((end (point)))
          (skip-syntax-backward "w")
            (let ((beg (point)))
              (mapc 'delete-overlay (overlays-in beg end))))))))))