From b96aa5fdc710975f8cc1ac195783b1dce34b90b2 Mon Sep 17 00:00:00 2001 Message-ID: From: =?UTF-8?q?S=C5=82awomir=20Grochowski?= Date: Sat, 16 Mar 2024 13:29:53 +0100 Subject: [PATCH v2] lisp/org-colview.el: Add defcustom `org-columns-checkbox-allowed-values' * lisp/org-colview.el Add defcustom `org-columns-checkbox-allowed-values'. (org-columns-next-allowed-value): Introduce variable `org-columns-checkbox-allowed-values'. This would allow to use more than two states ("[ ]", "[X]") in columns with SUMMARY-TYPE that use checkbox ("X", "X/", "X%"). For example you can add an intermediate state ("[-]"). Or empty state ("") to remove checkbox. * etc/ORG-NEWS: New option ~org-columns-checkbox-states~. --- etc/ORG-NEWS | 7 +++++++ lisp/org-colview.el | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 8c1f6a026..aeb7ffd4b 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -1828,6 +1828,13 @@ following properties: ~:hook~, ~:prepare-finalize~, prior to their global counterparts for the selected template. ** New options +*** New option ~org-columns-checkbox-allowed-values~ + +This would allow to use more than two states ("[ ]", "[X]") in +columns with SUMMARY-TYPE that use checkbox ("X", "X/", "X%"). +For example you can add an intermediate state ("[-]"). +Or empty state ("") to remove checkbox. + *** A new option for custom setting ~org-refile-use-outline-path~ to show document title in refile targets Setting ~org-refile-use-outline-path~ to ~'title~ will show title diff --git a/lisp/org-colview.el b/lisp/org-colview.el index 8a5c33236..b25cd0231 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -59,6 +59,19 @@ (defvar org-inlinetask-min-level) ;;; Configuration +(defcustom org-columns-checkbox-allowed-values '("[ ]" "[X]") + "Allowed values for columns with SUMMARY-TYPE that uses checkbox. +The affected summary types are \"X%\", \"X/\", and \"X\" (see info +node `(org)Column attributes')." + :group 'org-properties + :package-version '(Org . "9.6") + :type '(repeat (choice + (const :tag "Unchecked [ ]" "[ ]") + (const :tag "Checked [X]" "[X]") + (const :tag "No checkbox" "") + (const :tag "In progress [-]" "[-]") + (string :tag "Arbitrary string")))) + (defcustom org-columns-modify-value-for-display-function nil "Function that modifies values for display in column view. For example, it can be used to cut out a certain part from a time stamp. @@ -737,7 +750,7 @@ (defun org-columns-next-allowed-value (&optional previous nth) (let ((all (or (org-property-get-allowed-values pom key) (pcase (nth column org-columns-current-fmt-compiled) - (`(,_ ,_ ,_ ,(or "X" "X/" "X%") ,_) '("[ ]" "[X]"))) + (`(,_ ,_ ,_ ,(or "X" "X/" "X%") ,_) org-columns-checkbox-allowed-values)) (org-colview-construct-allowed-dates value)))) (if previous (reverse all) all)))) (when (equal key "ITEM") (error "Cannot edit item headline from here")) -- 2.44.0