Created
January 22, 2016 21:04
-
-
Save dnicolodi/e860c161a7b68682e4fd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun ledger-move-transaction-up () | |
(interactive) | |
(save-excursion | |
(let* ((ext-A (ledger-navigate-find-element-extents (point))) | |
(prev (ledger-navigate-prev-xact-or-directive)) | |
(ext-B (ledger-navigate-find-element-extents (point))) | |
(start-A (car ext-A)) | |
(end-A (cadr ext-A)) | |
(start-B (car ext-B)) | |
(end-B (cadr ext-B)) | |
(xact-A (buffer-substring-no-properties start-A end-A)) | |
(xact-B (buffer-substring-no-properties start-B end-B)) | |
(sep (buffer-substring-no-properties end-B start-A))) | |
(unless prev (user-error "Cannot move this transaction further up")) | |
(delete-region start-B end-A) | |
(insert (concat xact-A sep xact-B))))) | |
(defun ledger-move-transaction-down () | |
(interactive) | |
(let* ((ext-A (ledger-navigate-find-element-extents (point))) | |
(next (ledger-navigate-next-xact)) | |
(ext-B (ledger-navigate-find-element-extents (point))) | |
(start-A (car ext-A)) | |
(end-A (cadr ext-A)) | |
(start-B (car ext-B)) | |
(end-B (cadr ext-B)) | |
(xact-A (buffer-substring-no-properties start-A end-A)) | |
(xact-B (buffer-substring-no-properties start-B end-B)) | |
(sep (buffer-substring-no-properties end-A start-B))) | |
(delete-region start-A end-B) | |
(insert (concat xact-B sep xact-A)) | |
(goto-char (ledger-navigate-beginning-of-xact)))) | |
(define-key ledger-mode-map [(meta up)] 'ledger-move-transaction-up) | |
(define-key ledger-mode-map [(meta down)] 'ledger-move-transaction-down) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment