|
From: | Thierry Banel |
Subject: | Re: [O] [Feature Request] Add an dispatcher command (keybinding) for inserting dynamic blocks |
Date: | Fri, 16 Nov 2018 18:59:42 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 |
On 16/11/2018 02:15, stardiviner wrote: In package `orgtbl-aggregate` has bellowing command to insert different dynamic blocks. #+begin_src emacs-lisp (defun org-insert-dblock () "Inserts an org table dynamic block. This is a dispatching function which prompts for the type of dynamic block to insert. It dispatches to functions which names matches the pattern `org-insert-dblock:*'" (interactive) (let ((fun (intern (format "org-insert-dblock:%s" (org-icompleting-read "Kind of dynamic block: " (mapcar (lambda (x) (replace-regexp-in-string "^org-insert-dblock:" "" (symbol-name x))) (apropos-internal "^org-insert-dblock:"))))))) (if (functionp fun) (funcall fun) (message "No such dynamic block: %s" fun)))) #+end_src This command matches Org Mode API style. I hope Org Mode can have this built-in. Because there are some other dynamic blocks. They can use this dispatcher function. For example org-gantt dynamic block, I write a function manually: #+begin_src emacs-lisp (defun org-insert-dblock:org-gantt () "Insert org-gantt dynamic block." (interactive) (org-create-dblock (list :name "org-gantt" :file "data/images/project-gantt-chart.png" :imagemagick t :tikz-options "scale=1.5, every node/.style={scale=1.5}" :weekend-style "{draw=blue!10, line width=1pt}" :workday-style "{draw=blue!5, line width=.75pt}" :show-progress 'if-value :progress-source 'cookie-clocksum :no-date-headlines 'inactive :parameters "y unit title=.7cm, y unit chart=.9cm" :tags-group-style '(("test"."group label font=\\color{blue}") ("toast"."group label font=\\color{green}")) :tags-bar-style '(("test"."bar label font=\\color{blue}") ("toast"."bar label font=\\color{green}"))))) #+end_src +1 Org defines C-c C-x i as org-insert-columns-dblock. Instead, it could call the org-insert-dblock dispatcher shown here. The original org-insert-columns-dblock would be one among other dblock inserters. Possible dblocks: org-insert-columns-dblock org-clock-report propview invoice org-insert-dblock:aggregate org-insert-dblock:join org-insert-dblock:transpose Any future dblock inserter would be taken into account by the dispatcher just by providing an autoloadable org-insert-dblock:something function. |
[Prev in Thread] | Current Thread | [Next in Thread] |