Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions
At Thu, 19 Apr 2012 22:17:08 +0200, Sebastien Vauban wrote: > I tried the updated version of Sven: > > #+begin_src emacs-lisp > (defun my-gtd-frame () > (interactive) > (save-excursion) > (make-frame '( >(name . "gtd") >(active-alpha . 0.75) >(inactive-alpha. 0.8) >(top . 20) >(left . 20) >(width . 80) >(height. 40))) > (select-frame-by-name "gtd") > (org-agenda-goto-today) > (delete-other-windows) > (split-window-horizontally) > (other-window 1) > (catch 'exit > (org-batch-agenda "work"))) > #+end_src > > But I get the following error: > > --8<---cut here---start->8--- > Debugger entered--Lisp error: (error "Not allowed in nil-type agenda buffers") > signal(error ("Not allowed in nil-type agenda buffers")) > error("Not allowed in %s-type agenda buffers" nil) > (if error (error "Not allowed in %s-type agenda buffers" org-agenda-type) > nil) > (if (memq org-agenda-type types) t (if error (error "Not allowed in %s-type > agenda buffers" org-agenda-type) nil)) > org-agenda-check-type(t timeline agenda) > org-agenda-goto-today() > my-gtd-frame() > call-interactively(my-gtd-frame) > ... > Am I missing something? > The call to (org-agenda-goto-today) is before it created the agenda, I think it should be inside the catch, after the (org-batch-agenda) call. Regards, Max
Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions
Hi Max, Max Mikhanosha wrote: > Sven Bretfeld wrote: >> The Sticky Agenda is something I have been waiting for since a long >> time. Thank you very much! Let me thank you for the sticky agenda as well. I can't say I'm using multiple agendas in parallel -- while I'll surely make more use of it --, but the fact that the agenda view comes almost instataneously is really great! >> I want to write a function that creates a new frame with several >> windows, each displaying a different Agenda Views. I fail to find a >> function that creates special agenda views. Formerly I used >> org-batch-agenda for similar purposes. But that doesn't work in the >> sticky branch. This is what I have: >> >> (defun my-gtd-frame () >> (interactive) >> (save-excursion) >> (make-frame '( >> (name . "gtd") >> (active-alpha . 0.75) >> (inactive-alpha. 0.8) >> (top . 110) >> (left . 2000) >> (width . 80) >> (height. 40) >> (font . >> "-Adobe-Courier-Medium-R-Normal--18-180-75-75-M-110-ISO8859-1"))) >> (select-frame-by-name "gtd") >> (toggle-fullscreen) >> (org-agenda-goto-today) >> (delete-other-windows) >> (split-window-horizontally) >> (other-window 1) >> (org-batch-agenda "OFFICE/NEXT") >> ) > > This is the same bug as Martyn Jago reported earlier, basically I > forgot that separate org agenda commands can be run individually > rather then through (org-agenda) function. > > A temporary workaround in your specific case would be to wrap > (org-batch-agenda) call like this: > > (catch 'exit > (org-batch-agenda "OFFICE/NEXT")) > > I tested it and it seems to work.. The actual fix for the bug will be > similar and will be wrapping bodies of (org-todo-list) (org-tags-list) > and friends with (catch 'exit), but it needs to be done conditionally > as to only do it its called individually and not from (org-agenda) I tried the updated version of Sven: #+begin_src emacs-lisp (defun my-gtd-frame () (interactive) (save-excursion) (make-frame '( (name . "gtd") (active-alpha . 0.75) (inactive-alpha. 0.8) (top . 20) (left . 20) (width . 80) (height. 40))) (select-frame-by-name "gtd") (org-agenda-goto-today) (delete-other-windows) (split-window-horizontally) (other-window 1) (catch 'exit (org-batch-agenda "work"))) #+end_src But I get the following error: --8<---cut here---start->8--- Debugger entered--Lisp error: (error "Not allowed in nil-type agenda buffers") signal(error ("Not allowed in nil-type agenda buffers")) error("Not allowed in %s-type agenda buffers" nil) (if error (error "Not allowed in %s-type agenda buffers" org-agenda-type) nil) (if (memq org-agenda-type types) t (if error (error "Not allowed in %s-type agenda buffers" org-agenda-type) nil)) org-agenda-check-type(t timeline agenda) org-agenda-goto-today() my-gtd-frame() call-interactively(my-gtd-frame) (let* ((command (helm-comp-read "M-x " obarray :test (quote commandp) :requires-pattern helm-M-x-requires-pattern :name "Emacs Commands" :buffer "*helm M-x*" :persistent-action (quote pers-help) :persistent-help "Describe this command" :history history :must-match t :candidates-in-buffer t :fc-transformer (quote helm-M-x-transformer))) (sym-com (intern command))) (unless current-prefix-arg (setq current-prefix-arg helm-current-prefix-arg)) (setq this-command sym-com) (call-interactively sym-com) (setq extended-command-history (cons command (delete command history (progn (fset (quote pers-help) (function* (lambda (candidate) (block pers-help (let ((hbuf ...)) (if (and in-help ...) (progn ... ...) (set-window-dedicated-p ... nil) (describe-function ...) (message nil) (setq in-help t)) (setq help-cand candidate)) (let* ((command (helm-comp-read "M-x " obarray :test (quote commandp) :requires-pattern helm-M-x-requires-pattern :name "Emacs Commands" :buffer "*helm M-x*" :persistent-action (quote pers-help) :persistent-help "Describe this command" :history history :must-match t :candidates-in-buffer t :fc-transformer (quote helm-M-x-transformer))) (sym-com (intern command))) (unless current-prefix-arg (setq current-prefix-arg helm-current-prefix-arg)) (setq this-command sym-com) (call-interactively sym-com) (setq extended-command-history (cons command (delete command history) (unwind-protect (progn (fset (quote pers-help) (function* (lambda (candidate) (block pers-help (let (...) (if ... ... ... ... ... ...) (setq help-cand candidate)) (let* ((command (helm-comp-read "M-x " obarray :test (quote commandp) :requires-pattern helm-M-x-requires-pattern :name "Emacs Commands" :buffer
Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions
Max Mikhanosha writes: > This is the same bug as Martyn Jago reported earlier, basically I > forgot that separate org agenda commands can be run individually > rather then through (org-agenda) function. > > A temporary workaround in your specific case would be to wrap > (org-batch-agenda) call like this: > > (catch 'exit > (org-batch-agenda "OFFICE/NEXT")) > > I tested it and it seems to work.. The actual fix for the bug will be > similar and will be wrapping bodies of (org-todo-list) (org-tags-list) > and friends with (catch 'exit), but it needs to be done conditionally > as to only do it its called individually and not from (org-agenda) I see. Thank you for hinting me to a workaround. Sven
Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions
At 3 Apr 2012 19:10:30 +0200, Sven Bretfeld wrote: > > Hi all > > The Sticky Agenda is something I have been waiting for since a long > time. Thank you very much! > > I want to write a function that creates a new frame with several > windows, each displaying a different Agenda Views. I fail to find a > function that creates special agenda views. Formerly I used > org-batch-agenda for similar purposes. But that doesn't work in the > sticky branch. This is what I have: > > (defun my-gtd-frame () > (interactive) > (save-excursion) > (make-frame '( > (name . "gtd") > (active-alpha . 0.75) > (inactive-alpha. 0.8) > (top . 110) > (left . 2000) > (width . 80) > (height. 40) > (font . "-Adobe-Courier-Medium-R-Normal--18-180-75-75-M-110-ISO8859-1"))) > (select-frame-by-name "gtd") > (toggle-fullscreen) > (org-agenda-goto-today) > (delete-other-windows) > (split-window-horizontally) > (other-window 1) > (org-batch-agenda "OFFICE/NEXT") > ) > This is the same bug as Martyn Jago reported earlier, basically I forgot that separate org agenda commands can be run individually rather then through (org-agenda) function. A temporary workaround in your specific case would be to wrap (org-batch-agenda) call like this: (catch 'exit (org-batch-agenda "OFFICE/NEXT")) I tested it and it seems to work.. The actual fix for the bug will be similar and will be wrapping bodies of (org-todo-list) (org-tags-list) and friends with (catch 'exit), but it needs to be done conditionally as to only do it its called individually and not from (org-agenda)
[O] [Sticky Agenda] How to create Agenda Buffers in functions
Hi all The Sticky Agenda is something I have been waiting for since a long time. Thank you very much! I want to write a function that creates a new frame with several windows, each displaying a different Agenda Views. I fail to find a function that creates special agenda views. Formerly I used org-batch-agenda for similar purposes. But that doesn't work in the sticky branch. This is what I have: (defun my-gtd-frame () (interactive) (save-excursion) (make-frame '( (name . "gtd") (active-alpha . 0.75) (inactive-alpha. 0.8) (top . 110) (left . 2000) (width . 80) (height. 40) (font . "-Adobe-Courier-Medium-R-Normal--18-180-75-75-M-110-ISO8859-1"))) (select-frame-by-name "gtd") (toggle-fullscreen) (org-agenda-goto-today) (delete-other-windows) (split-window-horizontally) (other-window 1) (org-batch-agenda "OFFICE/NEXT") ) Calling this function should create a fullscreen Emacs frame on my second monitor vertically split into two windows. The upper window should display the week-agenda (org-agenda-goto-today), the lower window should contain a special-agenda-view showing all items with the todo-keyword NEXT and the tag OFFICE. Everything works as expected until it comes to the last line. org-batch-agenda seems not to be the correct function to be called here. The minibuffer says: "No catch for tag: exit, nil". Can anybody help? Thanks Sven