0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-12 21:40:03 +00:00

Fix the frame selection problem without using a macro.

Do this by restauring the frame focus correctly in
`org-eval-in-calendar'.
This commit is contained in:
Bastien Guerry 2009-07-25 19:32:59 +08:00
parent 4be6a90bd5
commit 157329bb45
3 changed files with 81 additions and 82 deletions

View file

@ -1,3 +1,8 @@
2009-07-25 Bastien Guerry <bzg@altern.org>
* org.el (org-eval-in-calendar): Select the right frame.
(org-save-frame-excursion): Remove this macro.
2009-07-24 Bastien Guerry <bzg@altern.org>
* org-list.el (org-list-beginning-re): Bugfix: don't use * when

View file

@ -1139,6 +1139,7 @@ this list."
(catch 'exit
(unless (org-at-item-p) (error "Not at a list"))
(save-excursion
;; bzg use org-list-find-true-beginning here?
(goto-char (car (org-list-item-beginning)))
(beginning-of-line 0)
(unless (looking-at "#\\+ORGLST: *SEND +\\([a-zA-Z0-9_]+\\) +\\([^ \t\r\n]+\\)\\( +.*\\)?")

View file

@ -12042,14 +12042,6 @@ So these are more for recording a certain time/date."
(defvar org-read-date-history nil)
(defvar org-read-date-final-answer nil)
(defmacro org-save-frame-excursion (&rest body)
"Eval BODY and return to the currently selected frame."
(let ((frame-var (gensym "FRAME")))
`(let ((,frame-var (selected-frame)))
(unwind-protect
(progn ,@body)
(select-frame-set-input-focus ,frame-var)))))
(defun org-read-date (&optional with-time to-time from-string prompt
default-time default-input)
"Read a date, possibly a time, and make things smooth for the user.
@ -12128,78 +12120,77 @@ user."
(org-read-date-popup-calendar
(save-excursion
(save-window-excursion
(org-save-frame-excursion
(calendar)
(calendar-forward-day (- (time-to-days def)
(calendar-absolute-from-gregorian
(calendar-current-date))))
(org-eval-in-calendar nil t)
(let* ((old-map (current-local-map))
(map (copy-keymap calendar-mode-map))
(minibuffer-local-map (copy-keymap minibuffer-local-map)))
(org-defkey map (kbd "RET") 'org-calendar-select)
(org-defkey map (if (featurep 'xemacs) [button1] [mouse-1])
'org-calendar-select-mouse)
(org-defkey map (if (featurep 'xemacs) [button2] [mouse-2])
'org-calendar-select-mouse)
(org-defkey minibuffer-local-map [(meta shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-month 1))))
(org-defkey minibuffer-local-map [(meta shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-month 1))))
(org-defkey minibuffer-local-map [(meta shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-year 1))))
(org-defkey minibuffer-local-map [(meta shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-year 1))))
(org-defkey minibuffer-local-map [?\e (shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-month 1))))
(org-defkey minibuffer-local-map [?\e (shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-month 1))))
(org-defkey minibuffer-local-map [?\e (shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-year 1))))
(org-defkey minibuffer-local-map [?\e (shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-year 1))))
(org-defkey minibuffer-local-map [(shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-week 1))))
(org-defkey minibuffer-local-map [(shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-week 1))))
(org-defkey minibuffer-local-map [(shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-day 1))))
(org-defkey minibuffer-local-map [(shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-day 1))))
(org-defkey minibuffer-local-map ">"
(lambda () (interactive)
(org-eval-in-calendar '(scroll-calendar-left 1))))
(org-defkey minibuffer-local-map "<"
(lambda () (interactive)
(org-eval-in-calendar '(scroll-calendar-right 1))))
(run-hooks 'org-read-date-minibuffer-setup-hook)
(unwind-protect
(progn
(use-local-map map)
(add-hook 'post-command-hook 'org-read-date-display)
(setq org-ans0 (read-string prompt default-input
'org-read-date-history nil))
;; org-ans0: from prompt
;; org-ans1: from mouse click
;; org-ans2: from calendar motion
(setq ans (concat org-ans0 " " (or org-ans1 org-ans2))))
(remove-hook 'post-command-hook 'org-read-date-display)
(use-local-map old-map)
(when org-read-date-overlay
(org-delete-overlay org-read-date-overlay)
(setq org-read-date-overlay nil))))))))
(calendar)
(calendar-forward-day (- (time-to-days def)
(calendar-absolute-from-gregorian
(calendar-current-date))))
(org-eval-in-calendar nil t)
(let* ((old-map (current-local-map))
(map (copy-keymap calendar-mode-map))
(minibuffer-local-map (copy-keymap minibuffer-local-map)))
(org-defkey map (kbd "RET") 'org-calendar-select)
(org-defkey map (if (featurep 'xemacs) [button1] [mouse-1])
'org-calendar-select-mouse)
(org-defkey map (if (featurep 'xemacs) [button2] [mouse-2])
'org-calendar-select-mouse)
(org-defkey minibuffer-local-map [(meta shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-month 1))))
(org-defkey minibuffer-local-map [(meta shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-month 1))))
(org-defkey minibuffer-local-map [(meta shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-year 1))))
(org-defkey minibuffer-local-map [(meta shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-year 1))))
(org-defkey minibuffer-local-map [?\e (shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-month 1))))
(org-defkey minibuffer-local-map [?\e (shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-month 1))))
(org-defkey minibuffer-local-map [?\e (shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-year 1))))
(org-defkey minibuffer-local-map [?\e (shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-year 1))))
(org-defkey minibuffer-local-map [(shift up)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-week 1))))
(org-defkey minibuffer-local-map [(shift down)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-week 1))))
(org-defkey minibuffer-local-map [(shift left)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-backward-day 1))))
(org-defkey minibuffer-local-map [(shift right)]
(lambda () (interactive)
(org-eval-in-calendar '(calendar-forward-day 1))))
(org-defkey minibuffer-local-map ">"
(lambda () (interactive)
(org-eval-in-calendar '(scroll-calendar-left 1))))
(org-defkey minibuffer-local-map "<"
(lambda () (interactive)
(org-eval-in-calendar '(scroll-calendar-right 1))))
(run-hooks 'org-read-date-minibuffer-setup-hook)
(unwind-protect
(progn
(use-local-map map)
(add-hook 'post-command-hook 'org-read-date-display)
(setq org-ans0 (read-string prompt default-input
'org-read-date-history nil))
;; org-ans0: from prompt
;; org-ans1: from mouse click
;; org-ans2: from calendar motion
(setq ans (concat org-ans0 " " (or org-ans1 org-ans2))))
(remove-hook 'post-command-hook 'org-read-date-display)
(use-local-map old-map)
(when org-read-date-overlay
(org-delete-overlay org-read-date-overlay)
(setq org-read-date-overlay nil)))))))
(t ; Naked prompt only
(unwind-protect
@ -12429,7 +12420,8 @@ DEF-FLAG is t when a double ++ or -- indicates shift relative to
(defun org-eval-in-calendar (form &optional keepdate)
"Eval FORM in the calendar window and return to current window.
Also, store the cursor date in variable org-ans2."
(let ((sw (selected-window)))
(let ((sf (selected-frame))
(sw (selected-window)))
(select-window (get-buffer-window "*Calendar*" t))
(eval form)
(when (and (not keepdate) (calendar-cursor-to-date))
@ -12437,7 +12429,8 @@ Also, store the cursor date in variable org-ans2."
(time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
(setq org-ans2 (format-time-string "%Y-%m-%d" time))))
(org-move-overlay org-date-ovl (1- (point)) (1+ (point)) (current-buffer))
(select-window sw)))
(select-window sw)
(select-frame-set-input-focus sf)))
(defun org-calendar-select ()
"Return to `org-read-date' with the date currently selected.