Skip to content

Instantly share code, notes, and snippets.

@dnicolodi
Created January 22, 2016 21:04
Show Gist options
  • Save dnicolodi/e860c161a7b68682e4fd to your computer and use it in GitHub Desktop.
Save dnicolodi/e860c161a7b68682e4fd to your computer and use it in GitHub Desktop.
(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