Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions

2012-04-19 Thread Sebastien Vauban
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 *helm M-x* :persistent-action (quote pers-help) :persistent-help 
Describe this command :history history :must-match t 

Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions

2012-04-19 Thread Max Mikhanosha
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

2012-04-03 Thread Max Mikhanosha
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)




Re: [O] [Sticky Agenda] How to create Agenda Buffers in functions

2012-04-03 Thread Sven Bretfeld
Max Mikhanosha m...@openchat.com 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