emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Patch for windowing problem


From: Bastien
Subject: Re: [Orgmode] Patch for windowing problem
Date: Fri, 17 Jul 2009 01:26:00 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

Yes, would be nice if the Aquamacs crowd could test this!

Thanks Robert for the patch.

Robert Goldman <address@hidden> writes:

> In an earlier posting, I mentioned that I had a problem with org-mode on
> aquamacs; the cursor (really input focus) was getting "trapped" in a
> different frame when the *Calendar* buffer was not in the same frame as
> the source of the org-schedule command (either an org-mode buffer or a
> remember buffer).  The attached patch to org.el fixes this problem for
> me.  Would some of you all mind testing it out?  It just wraps current
> frame save and pop around the use of the calendar (frames aren't managed
> by the save-excursion and save-window-excursion that already wrap this
> interaction).
>
> Thanks,
> Robert
> index feaa115..be07d58 100644
> --- a/lisp/org.el
> +++ b/lisp/org.el
> @@ -12010,6 +12010,15 @@ So these are more for recording a certain time/date."
>  (defvar org-read-date-history nil)
>  (defvar org-read-date-final-answer nil)
>  
> +(defmacro save-frame-excursion (&rest body)
> +  "Carry out some operations and then 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.
> @@ -12088,77 +12097,78 @@ user."
>       (org-read-date-popup-calendar
>        (save-excursion
>       (save-window-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)))))))
> +          (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))))))))
>  
>       (t ; Naked prompt only
>        (unwind-protect
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

-- 
 Bastien




reply via email to

[Prev in Thread] Current Thread [Next in Thread]