From 2ef1c092100d53ad2882a59b9668cd183226c28f Mon Sep 17 00:00:00 2001 From: Craig Earls Date: Sun, 9 Nov 2014 09:50:22 -0700 Subject: Handle block comments as blocks rather than individual lines. --- lisp/ledger-navigate.el | 54 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) (limited to 'lisp/ledger-navigate.el') diff --git a/lisp/ledger-navigate.el b/lisp/ledger-navigate.el index 5c89480a..5bc18373 100644 --- a/lisp/ledger-navigate.el +++ b/lisp/ledger-navigate.el @@ -95,10 +95,56 @@ Requires empty line separating xacts." (defun ledger-navigate-find-directive-extents (pos) (goto-char pos) - (list (progn (beginning-of-line) - (point)) - (progn (end-of-line) - (point)))) + (let ((begin (progn (beginning-of-line) + (point))) + (end (progn (end-of-line) + (point)))) + ;; handle block comments here + (beginning-of-line) + (if (looking-at " *;") + (progn + (while (and (looking-at " *;") + (> (point) (point-min))) + (forward-line -1)) + ;; We are either at the beginning of the buffer, or we found + ;; a line outside the comment. If we are not at the + ;; beginning of the buffer then we need to move forward a + ;; line. + (if (> (point) (point-min)) + (progn (forward-line 1) + (beginning-of-line))) + (setq begin (point)) + (goto-char pos) + (beginning-of-line) + (while (and (looking-at " *;") + (< (point) (point-max))) + (forward-line 1)) + (setq end (point)))) + (list begin end))) + +(defun ledger-navigate-block-comment (pos) + (interactive "d") + (goto-char pos) + (let ((begin (progn (beginning-of-line) + (point))) + (end (progn (end-of-line) + (point)))) + ;; handle block comments here + (beginning-of-line) + (if (looking-at " *;") + (progn + (while (and (looking-at " *;") + (> (point) (point-min))) + (forward-line -1)) + (setq begin (point)) + (goto-char pos) + (beginning-of-line) + (while (and (looking-at " *;") + (< (point) (point-max))) + (forward-line 1)) + (setq end (point)))) + (list begin end))) + (defun ledger-navigate-find-element-extents (pos) "return list containing beginning and end of the entity surrounding point" -- cgit v1.2.3