branch: elpa/beancount
commit 7410724924d86d5b41a5cbe5556df936f7386f2b
Author: Martin Blais <bl...@furius.ca>
Commit: Martin Blais <bl...@furius.ca>

    beancount-region: Added bindings for region_value variant.
---
 beancount.el | 40 ++++++++++++++++++++++++++++++++++------
 1 file changed, 34 insertions(+), 6 deletions(-)

diff --git a/beancount.el b/beancount.el
index 0ba8d88784..e74b4a9af5 100644
--- a/beancount.el
+++ b/beancount.el
@@ -285,6 +285,8 @@ from the open directive for the relevant account."
     (define-key map (vconcat p [(q)]) #'beancount-query)
     (define-key map (vconcat p [(x)]) #'beancount-context)
     (define-key map (vconcat p [(k)]) #'beancount-linked)
+    (define-key map (vconcat p [(r)]) #'beancount-region-default)
+    (define-key map (vconcat p [(t)]) #'beancount-region-value)
     (define-key map (vconcat p [(p)]) #'beancount-insert-prices)
     (define-key map (vconcat p [(\;)]) #'beancount-align-to-previous-number)
     (define-key map (vconcat p [(\:)]) #'beancount-align-numbers)
@@ -849,12 +851,38 @@ Only useful if you have not installed Beancount properly 
in your PATH.")
 (defun beancount-linked ()
   "Get the \"linked\" info from `beancount-doctor-program'."
   (interactive)
-  (let* ((word (thing-at-point 'beancount-link))
-         (link (when (and word (string-match "\\^" word)) word)))
-    (let ((compilation-read-command nil))
-      (beancount--run beancount-doctor-program "linked"
-                      (file-relative-name buffer-file-name)
-                      (or link (number-to-string (line-number-at-pos)))))))
+  (let ((lnarg (if mark-active
+                   (format "%d:%d"
+                           (line-number-at-pos (region-beginning))
+                           (line-number-at-pos (region-end)))
+                 (format "%d" (line-number-at-pos)))))
+    (let* ((word (thing-at-point 'beancount-link))
+           (link (when (and word (string-match "\\^" word)) word)))
+      (let ((compilation-read-command nil))
+        (beancount--run beancount-doctor-program "linked"
+                        buffer-file-name
+                        (or link lnarg))))))
+
+(defun beancount-region (rmin rmax &optional command)
+  "Get the info from \"region\" from `beancount-doctor-program'."
+  (when (use-region-p)
+    (let ((compilation-read-command nil)
+          (region-command (or command "region")))
+      (beancount--run beancount-doctor-program region-command
+                      buffer-file-name
+                      (format "%d:%d"
+                              (line-number-at-pos rmin)
+                              (line-number-at-pos
+                               (if (= 0 (save-excursion (goto-char rmax) 
(current-column)))
+                                   (1- rmax) rmax)))))))
+
+(defun beancount-region-default (rmin rmax)
+  (interactive "r")
+  (beancount-region rmin rmax "region"))
+
+(defun beancount-region-value (rmin rmax)
+  (interactive "r")
+  (beancount-region rmin rmax "region_value"))
 
 (defvar beancount-price-program "bean-price"
   "Program to run the price fetching commands.")

Reply via email to