X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/3a880af4a79688e90da45311a8d85bae2d59a811..b39c4d7b33952e0125fbefbcb3d9f528b6570f40:/lisp/calendar/diary-lib.el diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 27c6f76581..a4e36d9abe 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -1,7 +1,7 @@ ;;; diary-lib.el --- diary functions -;; Copyright (C) 1989-1990, 1992-1995, 2001-2012 -;; Free Software Foundation, Inc. +;; Copyright (C) 1989-1990, 1992-1995, 2001-2014 Free Software +;; Foundation, Inc. ;; Author: Edward M. Reingold ;; Maintainer: Glenn Morris @@ -366,7 +366,7 @@ Returns a string using match elements 1-5, where: ;; use the standard function calendar-date-string. (concat (if month (calendar-date-string (list month (string-to-number day) - (string-to-number year))) + (string-to-number year)) nil t) (cond ((eq calendar-date-style 'iso) "\\3 \\1 \\2") ; YMD ((eq calendar-date-style 'european) "\\2 \\1 \\3") ; DMY (t "\\1 \\2 \\3"))) ; MDY @@ -444,8 +444,7 @@ The format of the header is specified by `diary-header-line-format'." (defcustom diary-header-line-format '(:eval (calendar-string-spread (list (if diary-selective-display - "Some text is hidden - press \"s\" in calendar \ -before edit/copy" + "Some text is hidden - press \"C-c C-s\" before edit/copy" "Diary")) ?\s (window-width))) "Format of the header line displayed by `diary-simple-display'. @@ -1012,8 +1011,7 @@ Entries that do not apply are made invisible. Holidays are shown in the mode line. This is an option for `diary-display-function'." ;; If selected window is dedicated (to the calendar), need a new one ;; to display the diary. - (let* ((pop-up-frames (or pop-up-frames - (window-dedicated-p (selected-window)))) + (let* ((pop-up-frames (or pop-up-frames (window-dedicated-p))) (dbuff (find-buffer-visiting diary-file)) (empty (diary-display-no-entries))) ;; This may be too wide, but when simple diary is used there is @@ -1033,7 +1031,14 @@ in the mode line. This is an option for `diary-display-function'." (define-obsolete-function-alias 'simple-diary-display 'diary-simple-display "23.1") -(define-button-type 'diary-entry 'action #'diary-goto-entry +(defvar diary-goto-entry-function 'diary-goto-entry + "Function called to jump to a diary entry. +Modes that require special handling of the included file +containing the diary entry can assign a suitable function to this +variable.") + +(define-button-type 'diary-entry + 'action (lambda (button) (funcall diary-goto-entry-function button)) 'face 'diary-button 'help-echo "Find this diary entry" 'follow-link t) @@ -1210,8 +1215,7 @@ all entries, not just some, are visible. If there is no diary buffer, one is created." (interactive) (let* ((d-file (diary-check-diary-file)) - (pop-up-frames (or pop-up-frames - (window-dedicated-p (selected-window)))) + (pop-up-frames (or pop-up-frames (window-dedicated-p))) (win (selected-window)) (height (window-height))) (with-current-buffer (or (find-buffer-visiting d-file) @@ -2110,8 +2114,7 @@ calendar." "Insert a diary entry STRING which may be NONMARKING in FILE. If omitted, NONMARKING defaults to nil and FILE defaults to `diary-file'." - (let ((pop-up-frames (or pop-up-frames - (window-dedicated-p (selected-window))))) + (let ((pop-up-frames (or pop-up-frames (window-dedicated-p)))) (find-file-other-window (or file diary-file))) (when (eq major-mode (default-value 'major-mode)) (diary-mode)) (widen) @@ -2371,6 +2374,7 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL." (defvar calendar-hebrew-month-name-array-leap-year) (defvar calendar-islamic-month-name-array) (defvar calendar-bahai-month-name-array) +(defvar calendar-chinese-month-name-array) ;;;###cal-autoload (defun diary-font-lock-keywords () @@ -2393,6 +2397,11 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL." cal-bahai calendar-bahai-month-name-array diary-bahai-entry-symbol) + (diary-font-lock-keywords-1 diary-chinese-mark-entries + diary-chinese-list-entries + cal-china + calendar-chinese-month-name-array + diary-chinese-entry-symbol) (list (cons (format "^%s.*$" (regexp-quote diary-include-string)) @@ -2409,7 +2418,8 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL." (regexp-opt (mapcar 'regexp-quote (list diary-hebrew-entry-symbol diary-islamic-entry-symbol - diary-bahai-entry-symbol)) + diary-bahai-entry-symbol + diary-chinese-entry-symbol)) t)) '(1 font-lock-constant-face)) '(diary-font-lock-sexps . font-lock-keyword-face) @@ -2612,14 +2622,23 @@ user is asked to confirm its addition." (diary-from-outlook-internal subject body) (message "Diary entry added")))))) +(defvar diary-from-outlook-function nil + "If non-nil, a function of one argument for `diary-from-outlook' to call. +If the current buffer contains an Outlook-style appointment message, +this function should extract it into a diary entry. If the argument is +nil, it should ask for confirmation before adding this entry to the diary. +For examples, see `diary-from-outlook-rmail' and `diary-from-outlook-gnus'.") + (defun diary-from-outlook (&optional noconfirm) "Maybe snarf diary entry from current Outlook-generated message. -Currently knows about Gnus and Rmail modes. Unless the optional -argument NOCONFIRM is non-nil (which is the case when this -function is called interactively), then if an entry is found the -user is asked to confirm its addition." +Uses `diary-from-outlook-function' if that is non-nil, else +`diary-from-outlook-rmail' for Rmail or `diary-from-outlook-gnus' for Gnus. +Unless the optional argument NOCONFIRM is non-nil (which is the +case when this function is called interactively), then if an +entry is found the user is asked to confirm its addition." (interactive "p") (let ((func (cond + (diary-from-outlook-function) ((eq major-mode 'rmail-mode) #'diary-from-outlook-rmail) ((memq major-mode '(gnus-summary-mode gnus-article-mode))