branch: externals/org
commit 9839e26a92817860eb7d9519ec9100a33b8268f1
Author: Slawomir Grochowski <[email protected]>
Commit: Slawomir Grochowski <[email protected]>

    ; org-colview: Deduplicate column edit command actions
    
    * lisp/org-colview.el (org-columns-edit-value): Use a local helper
    for repeated interactive command actions.
    
    Refactoring: Extract Function.
    
    No behavior change.
---
 lisp/org-colview.el | 74 ++++++++++++++++++++++++-----------------------------
 1 file changed, 33 insertions(+), 41 deletions(-)

diff --git a/lisp/org-colview.el b/lisp/org-colview.el
index da1e55af93..2d28605a16 100644
--- a/lisp/org-colview.el
+++ b/lisp/org-colview.el
@@ -786,47 +786,39 @@ Where possible, use the standard interface for changing 
this line."
         (key (or key (get-char-property (point) 'org-columns-key)))
         (org-columns--time (float-time))
         (action
-         (pcase key
-           ("CLOCKSUM"
-            (user-error "This special column cannot be edited"))
-           ("ITEM"
-            (lambda () (org-with-point-at pom (org-edit-headline))))
-           ("TODO"
-            (lambda ()
-              (org-with-point-at pom (call-interactively #'org-todo))))
-           ("PRIORITY"
-            (lambda ()
-              (org-with-point-at pom
-                (call-interactively #'org-priority))))
-           ("TAGS"
-            (lambda ()
-              (org-with-point-at pom
-                (let ((org-fast-tag-selection-single-key
-                       (if (eq org-fast-tag-selection-single-key 'expert)
-                           t
-                         org-fast-tag-selection-single-key)))
-                  (call-interactively #'org-set-tags-command)))))
-           ("DEADLINE"
-            (lambda ()
-              (org-with-point-at pom (call-interactively #'org-deadline))))
-           ("SCHEDULED"
-            (lambda ()
-              (org-with-point-at pom (call-interactively #'org-schedule))))
-           ("BEAMER_ENV"
-            (lambda ()
-              (org-with-point-at pom
-                (call-interactively #'org-beamer-select-environment))))
-           (_
-            (let* ((allowed (org-property-get-allowed-values pom key 'table))
-                   (value (get-char-property (point) 'org-columns-value))
-                   (nval (org-trim
-                          (if (null allowed) (read-string "Edit: " value)
-                            (completing-read
-                             "Value: " allowed nil
-                             (not (get-text-property
-                                   0 'org-unrestricted (caar allowed))))))))
-              (and (not (equal nval value))
-                   (lambda () (org-entry-put pom key nval))))))))
+         (cl-flet ((command-action (command)
+                     (lambda ()
+                       (org-with-point-at pom
+                         (call-interactively command)))))
+           (pcase key
+             ("CLOCKSUM"
+              (user-error "This special column cannot be edited"))
+             ("ITEM"
+              (lambda () (org-with-point-at pom (org-edit-headline))))
+             ("TODO" (command-action #'org-todo))
+             ("PRIORITY" (command-action #'org-priority))
+             ("TAGS"
+              (lambda ()
+                (org-with-point-at pom
+                  (let ((org-fast-tag-selection-single-key
+                         (if (eq org-fast-tag-selection-single-key 'expert)
+                             t
+                           org-fast-tag-selection-single-key)))
+                    (call-interactively #'org-set-tags-command)))))
+             ("DEADLINE" (command-action #'org-deadline))
+             ("SCHEDULED" (command-action #'org-schedule))
+             ("BEAMER_ENV" (command-action #'org-beamer-select-environment))
+             (_
+              (let* ((allowed (org-property-get-allowed-values pom key 'table))
+                     (value (get-char-property (point) 'org-columns-value))
+                     (nval (org-trim
+                            (if (null allowed) (read-string "Edit: " value)
+                              (completing-read
+                               "Value: " allowed nil
+                               (not (get-text-property
+                                     0 'org-unrestricted (caar allowed))))))))
+                (and (not (equal nval value))
+                     (lambda () (org-entry-put pom key nval)))))))))
     (when action
       (org-columns--execute-and-update action pom key col))))
 

Reply via email to