emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] org-stow (Proof of concept)


From: Bastien
Subject: Re: [Orgmode] org-stow (Proof of concept)
Date: Sat, 12 Feb 2011 11:57:01 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Hi Tom,

"Tom Breton (Tehom)" <address@hidden> writes:

> I pushed it just now; it's on branch stow-design.  

Thanks!  

(On a side note: I'd rather keep org-mode.git (remote) branches for
stuff we know we _will_ include, not just for testing code.  Better 
point to a public branch of yours in that case.)

> Here is a little
> documentation:

Can you show a real use-case?  I'm still unsure in what situation
org-stow.el is useful... lack of imagination :)

> The commands:
>
>  * org-stow-make-item-stowable makes an item stowable.  It prompts you for
> where to stow the item and remembers that information.
>
>  * org-stow-item stows the item at point, marking it accordingly.

I tries this.

With this file:

,----
| #+TITLE: Test org-stow
| 
| * Tasks                                                                   
:Task:
| 
| ** TODO Drop off Stuff                                                
:stowable:
|    :PROPERTIES:
|    :ID:       746eba6c-3e4b-441e-815c-cb2b88d848c6
|    :STOW-TO:  /home/guerry/test.org Tasks 
|    :END:
`----

M-x org-stow-make-item-stowable RET on "TODO Drop off stuff" is okay.

But M-x org-stow-item RET on the same item is not -- here is a
backtrace:

Debugger entered--Lisp error: (error "Bad type spec: (list string (repeat 
org-stow-source) (or null org-stow-target))")
  signal(error ("Bad type spec: (list string (repeat org-stow-source) (or null 
org-stow-target))"))
  error("Bad type spec: %s" (list string (repeat org-stow-source) (or null 
org-stow-target)))
  cl-make-type-test(apair (list string (repeat org-stow-source) (or null 
org-stow-target)))
  cl-make-type-test(apair org-stow-apair)
  #[(form type &optional string) "\306 \203\307W\204 
\307U\205P\310\n\307\"\203\n\202\311\312!\313\314\f\"\315\316\317\206/\320\fD\320\nDFEE\n=\203F\321\322E\202O\323\nDC\322F*\207"
 [cl-optimize-speed cl-optimize-safety form temp type string cl-compiling-file 
3 cl-simple-expr-p make-symbol "--cl-var--" or cl-make-type-test signal (quote 
wrong-type-argument) list quote progn nil let body] 9 
("/usr/local/share/emacs/24.0.50/lisp/emacs-lisp/cl-macs.elc" . 93074)](apair 
org-stow-apair)
  (check-type apair org-stow-apair)
  (lambda (apair) (check-type apair org-stow-apair) (if (third apair) (cdr 
apair) (list (second apair) (org-stow-make-target :type (quote virtual) :path 
(org-stow-target->path target-parent) :rv-virt-path (cons (first apair) 
(org-stow-target->rv-virt-path target-parent))))))(("Drop off Stuff" 
([cl-struct-org-stow-source "746eba6c-3e4b-441e-815c-cb2b88d848c6" nil "Drop 
off Stuff"]) nil))
  mapcar((lambda (apair) (check-type apair org-stow-apair) (if (third apair) 
(cdr apair) (list (second apair) (org-stow-make-target :type (quote virtual) 
:path (org-stow-target->path target-parent) :rv-virt-path (cons (first apair) 
(org-stow-target->rv-virt-path target-parent)))))) (("Drop off Stuff" 
([cl-struct-org-stow-source "746eba6c-3e4b-441e-815c-cb2b88d848c6" nil "Drop 
off Stuff"]) nil)))
  (let* ((alist (quote nil))) (dolist (src sources) (let* ((headline 
(org-stow-source->headline src)) (apair (assoc headline alist))) (if apair 
(progn (check-type apair org-stow-apair) (push src (second apair))) (push (list 
headline (list src) nil) alist)))) (when (eq (org-stow-target->type 
target-parent) (quote item)) (dolist (trgt (org-stow-get-target-children 
target-parent)) (let* ((rv-virt-path (org-stow-target->rv-virt-path trgt)) 
(headline (if rv-virt-path (car rv-virt-path) (last ...))) (apair (assoc 
headline alist))) (if apair (progn (check-type apair org-stow-apair) (assert 
(null ...)) (setf (third apair) trgt)) (push (list headline (quote nil) trgt) 
alist))))) (mapcar (function (lambda (apair) (check-type apair org-stow-apair) 
(if (third apair) (cdr apair) (list (second apair) (org-stow-make-target :type 
(quote virtual) :path (org-stow-target->path target-parent) :rv-virt-path (cons 
... ...)))))) alist))
  org-stow-get-split-arglists(([cl-struct-org-stow-source 
"746eba6c-3e4b-441e-815c-cb2b88d848c6" nil "Drop off Stuff"]) 
[cl-struct-org-stow-target item ("/home/guerry/test.org" "Tasks") nil])
  (let* ((source-children (apply (function nconc) (mapcar (function (lambda 
(src) (let* ... ... children))) source-list))) (child-groups 
(org-stow-get-split-arglists source-children target))) (apply (function nconc) 
(mapcar (function (lambda (group) (apply (function org-stow-get-actions) 
group))) child-groups)))
  org-stow-get-actions-item(([cl-struct-org-stow-source 
"746eba6c-3e4b-441e-815c-cb2b88d848c6" ("Drop off Stuff") nil]) 
[cl-struct-org-stow-target item ("/home/guerry/test.org" "Tasks") nil])
  funcall(org-stow-get-actions-item ([cl-struct-org-stow-source 
"746eba6c-3e4b-441e-815c-cb2b88d848c6" ("Drop off Stuff") nil]) 
[cl-struct-org-stow-target item ("/home/guerry/test.org" "Tasks") nil])
  org-stow-get-actions(([cl-struct-org-stow-source 
"746eba6c-3e4b-441e-815c-cb2b88d848c6" ("Drop off Stuff") nil]) 
[cl-struct-org-stow-target item ("/home/guerry/test.org" "Tasks") nil])
  (let* ((target-path (org-entry-get-multivalued-property (point) "STOW-TO")) 
(source (org-stow-source-at-point)) (target (org-stow-path->target 
target-path)) (actions (org-stow-get-actions (list source) target))) (dolist 
(act actions) (apply (function org-stow-do-action) act)) (org-toggle-tag 
"stowable" (quote off)) (org-toggle-tag "stowed" (quote on)))
  org-stow-item()
  call-interactively(org-stow-item t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)

-- 
 Bastien



reply via email to

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