Browse Source

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.
Nicolas Goaziou 9 years ago
parent
commit
99697abdb9
3 changed files with 35 additions and 8 deletions
  1. 2 0
      doc/org.texi
  2. 4 0
      etc/ORG-NEWS
  3. 29 8
      lisp/org-colview.el

+ 2 - 0
doc/org.texi

@@ -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
 
 

+ 4 - 0
etc/ORG-NEWS

@@ -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~.

+ 29 - 8
lisp/org-colview.el

@@ -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,19 +1290,40 @@ 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)
-	(while tbl
-	  (if (eq (car tbl) 'hline)
-	      (push (pop tbl) tmp)
-	    (if (string-match "\\` *\\(\\*+\\)" (caar tbl))
+	(let (tmp)
+	  (while tbl
+	    (if (eq (car tbl) 'hline)
+		(push (pop tbl) tmp)
+	      (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)
 				  (<= (- (match-end 1) (match-beginning 1))
 				  (<= (- (match-end 1) (match-beginning 1))
 				      hlines))))
 				      hlines))))
 		    (push 'hline tmp)))
 		    (push 'hline tmp)))
-	    (push (pop tbl) tmp)))
-	(setq tbl (nreverse tmp)))
+	      (push (pop tbl) 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)))