org-colview: Add :indent parameter

* lisp/org-colview.el (org-dblock-write:columnview): Handle :indent
  parameter.
* doc/org.texi (Capturing column view): Document new feature.
This commit is contained in:
Nicolas Goaziou 2016-02-04 18:43:08 +01:00
parent 00f0c70418
commit 99697abdb9
3 changed files with 35 additions and 8 deletions

View File

@ -5798,6 +5798,8 @@ When set to a number, don't capture entries below this level.
@item :skip-empty-rows @item :skip-empty-rows
When set to @code{t}, skip rows where the only non-empty specifier of the When set to @code{t}, skip rows where the only non-empty specifier of the
column view is @code{ITEM}. column view is @code{ITEM}.
@item :indent
When non-@code{nil}, indent each @code{ITEM} field according to its level.
@end table @end table

View File

@ -203,7 +203,11 @@ Custom language environments for LaTeX export can now define the
string to be inserted during export, using attributes to indicate the string to be inserted during export, using attributes to indicate the
position of the elements. See variable ~org-latex-custom-lang-environments~ position of the elements. See variable ~org-latex-custom-lang-environments~
for more details. for more details.
*** Accept ~:indent~ parameter when capturing column view
When defining a "columnview" dynamic block, it is now possible to add
an :indent parameter, much like the one in the clock table.
On the other hand, stars no longer appear in an ITEM field.
** New functions ** New functions
*** ~org-next-line-empty-p~ *** ~org-next-line-empty-p~
It replaces the deprecated ~next~ argument to ~org-previous-line-empty-p~. It replaces the deprecated ~next~ argument to ~org-previous-line-empty-p~.

View File

@ -1254,7 +1254,7 @@ PARAMS is a property list of parameters:
(skip-empty-rows (plist-get params :skip-empty-rows)) (skip-empty-rows (plist-get params :skip-empty-rows))
(columns-fmt (plist-get params :format)) (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 recalc line
id-as-string view-file view-pos) id-as-string view-file view-pos)
(when (setq id (plist-get params :id)) (when (setq id (plist-get params :id))
(setq id-as-string (cond ((numberp id) (number-to-string id)) (setq id-as-string (cond ((numberp id) (number-to-string id))
@ -1290,11 +1290,11 @@ PARAMS is a property list of parameters:
(move-marker pos nil) (move-marker pos nil)
(when tbl (when tbl
(when (plist-get params :hlines) (when (plist-get params :hlines)
(setq tmp nil) (let (tmp)
(while tbl (while tbl
(if (eq (car tbl) 'hline) (if (eq (car tbl) 'hline)
(push (pop tbl) tmp) (push (pop tbl) tmp)
(if (string-match "\\` *\\(\\*+\\)" (caar tbl)) (when (string-match "\\` *\\(\\*+\\)" (caar tbl))
(if (and (not (eq (car tmp) 'hline)) (if (and (not (eq (car tmp) 'hline))
(or (eq hlines t) (or (eq hlines t)
(and (numberp hlines) (and (numberp hlines)
@ -1302,7 +1302,28 @@ PARAMS is a property list of parameters:
hlines)))) hlines))))
(push 'hline tmp))) (push 'hline tmp)))
(push (pop tbl) tmp))) (push (pop tbl) tmp)))
(setq tbl (nreverse tmp))) (setq tbl (nreverse tmp))))
;; Remove stars. Add indentation entities, if required.
(let ((index (cl-position
"ITEM"
(mapcar #'cadr org-columns-current-fmt-compiled)
:test #'equal)))
(when index
(dolist (row tbl)
(unless (eq row 'hline)
(let ((item (nth index row)))
(setf (nth index row)
(replace-regexp-in-string
"\\`\\(\\*+\\) +"
(if (plist-get params :indent)
(lambda (m)
(let ((l (org-reduced-level
(length (match-string 1 m)))))
(if (= l 1) ""
(concat "\\\\_"
(make-string (* 2 (1- l)) ?\s)))))
"")
item)))))))
(when vlines (when vlines
(setq tbl (mapcar (lambda (x) (setq tbl (mapcar (lambda (x)
(if (eq 'hline x) x (cons "" x))) (if (eq 'hline x) x (cons "" x)))