forked from mirrors/org-mode
org-colview.el: Add new ways of specifying the columnview format
* org-colview.el (org-columns): New argument `columns-fmt-string'. * org-colview.el (org-columns-get-format-end-top-level): Split into `org-columns-get-format' and `org-columns-goto-top-level'. * lisp/org-colview.el (org-dblock-write:columnview): Add a new parameter :format which specifies the column view format for the output of the columnview dynamic block. This patch allows to interactively set a column view like this: M-: (org-columns "%66ITEM(Task) %6Effort(Estim.){:}") RET or to specify a column view in columnview dynamic blocks: TINYCHANGE
This commit is contained in:
parent
267e6a9d00
commit
601e783405
|
@ -666,27 +666,38 @@ around it."
|
||||||
(org-open-link-from-string value arg)))
|
(org-open-link-from-string value arg)))
|
||||||
|
|
||||||
(defun org-columns-get-format-and-top-level ()
|
(defun org-columns-get-format-and-top-level ()
|
||||||
(let (fmt)
|
(let (fmt (org-columns-get-format))
|
||||||
(when (condition-case nil (org-back-to-heading) (error nil))
|
(org-columns-goto-top-level)
|
||||||
(setq fmt (org-entry-get nil "COLUMNS" t)))
|
|
||||||
(setq fmt (or fmt org-columns-default-format))
|
|
||||||
(org-set-local 'org-columns-current-fmt fmt)
|
|
||||||
(org-columns-compile-format fmt)
|
|
||||||
(if (marker-position org-entry-property-inherited-from)
|
|
||||||
(move-marker org-columns-top-level-marker
|
|
||||||
org-entry-property-inherited-from)
|
|
||||||
(move-marker org-columns-top-level-marker (point)))
|
|
||||||
fmt))
|
fmt))
|
||||||
|
|
||||||
(defun org-columns ()
|
(defun org-columns-get-format (&optional fmt-string)
|
||||||
"Turn on column view on an org-mode file."
|
(interactive)
|
||||||
|
(let (fmt-as-property)
|
||||||
|
(when (condition-case nil (org-back-to-heading) (error nil))
|
||||||
|
(setq fmt-as-property (org-entry-get nil "COLUMNS" t)))
|
||||||
|
(setq fmt (or fmt-string fmt-as-property org-columns-default-format))
|
||||||
|
(org-set-local 'org-columns-current-fmt fmt)
|
||||||
|
(org-columns-compile-format fmt)
|
||||||
|
fmt))
|
||||||
|
|
||||||
|
(defun org-columns-goto-top-level ()
|
||||||
|
(when (condition-case nil (org-back-to-heading) (error nil))
|
||||||
|
(org-entry-get nil "COLUMNS" t)
|
||||||
|
(if (marker-position org-entry-property-inherited-from)
|
||||||
|
(move-marker org-columns-top-level-marker org-entry-property-inherited-from)
|
||||||
|
(move-marker org-columns-top-level-marker (point)))))
|
||||||
|
|
||||||
|
(defun org-columns (&optional columns-fmt-string)
|
||||||
|
"Turn on column view on an org-mode file.
|
||||||
|
When COLUMNS-FMT-STRING is non-nil, use it as the column format."
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-verify-version 'columns)
|
(org-verify-version 'columns)
|
||||||
(org-columns-remove-overlays)
|
(org-columns-remove-overlays)
|
||||||
(move-marker org-columns-begin-marker (point))
|
(move-marker org-columns-begin-marker (point))
|
||||||
(let ((org-columns-time (time-to-number-of-days (current-time)))
|
(let ((org-columns-time (time-to-number-of-days (current-time)))
|
||||||
beg end fmt cache maxwidths)
|
beg end fmt cache maxwidths)
|
||||||
(setq fmt (org-columns-get-format-and-top-level))
|
(org-columns-goto-top-level)
|
||||||
|
(setq fmt (org-columns-get-format columns-fmt-string))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char org-columns-top-level-marker)
|
(goto-char org-columns-top-level-marker)
|
||||||
(setq beg (point))
|
(setq beg (point))
|
||||||
|
@ -1229,13 +1240,15 @@ PARAMS is a property list of parameters:
|
||||||
:vlines When t, make each column a colgroup to enforce vertical lines.
|
:vlines When t, make each column a colgroup to enforce vertical lines.
|
||||||
:maxlevel When set to a number, don't capture headlines below this level.
|
:maxlevel When set to a number, don't capture headlines below this level.
|
||||||
:skip-empty-rows
|
:skip-empty-rows
|
||||||
When t, skip rows where all specifiers other than ITEM are empty."
|
When t, skip rows where all specifiers other than ITEM are empty.
|
||||||
|
:format When non-nil, specify the column view format to use."
|
||||||
(let ((pos (move-marker (make-marker) (point)))
|
(let ((pos (move-marker (make-marker) (point)))
|
||||||
(hlines (plist-get params :hlines))
|
(hlines (plist-get params :hlines))
|
||||||
(vlines (plist-get params :vlines))
|
(vlines (plist-get params :vlines))
|
||||||
(maxlevel (plist-get params :maxlevel))
|
(maxlevel (plist-get params :maxlevel))
|
||||||
(content-lines (org-split-string (plist-get params :content) "\n"))
|
(content-lines (org-split-string (plist-get params :content) "\n"))
|
||||||
(skip-empty-rows (plist-get params :skip-empty-rows))
|
(skip-empty-rows (plist-get params :skip-empty-rows))
|
||||||
|
(columns-fmt (plist-get params :format))
|
||||||
(case-fold-search t)
|
(case-fold-search t)
|
||||||
tbl id idpos nfields tmp recalc line
|
tbl id idpos nfields tmp recalc line
|
||||||
id-as-string view-file view-pos)
|
id-as-string view-file view-pos)
|
||||||
|
@ -1265,7 +1278,7 @@ PARAMS is a property list of parameters:
|
||||||
(save-restriction
|
(save-restriction
|
||||||
(widen)
|
(widen)
|
||||||
(goto-char (or view-pos (point)))
|
(goto-char (or view-pos (point)))
|
||||||
(org-columns)
|
(org-columns columns-fmt)
|
||||||
(setq tbl (org-columns-capture-view maxlevel skip-empty-rows))
|
(setq tbl (org-columns-capture-view maxlevel skip-empty-rows))
|
||||||
(setq nfields (length (car tbl)))
|
(setq nfields (length (car tbl)))
|
||||||
(org-columns-quit))))
|
(org-columns-quit))))
|
||||||
|
|
Loading…
Reference in a new issue