update packages
This commit is contained in:
@@ -157,14 +157,22 @@ longer ones are after the value."
|
||||
(concat str " " commodity)
|
||||
(concat commodity " " str))))
|
||||
|
||||
(defun ledger-read-commodity-string (prompt)
|
||||
"Read an amount from mini-buffer using PROMPT."
|
||||
(let ((str (read-from-minibuffer
|
||||
(concat prompt " (" ledger-reconcile-default-commodity "): ")))
|
||||
comm)
|
||||
(when (and (> (length str) 0)
|
||||
(ledger-split-commodity-string str))
|
||||
(setq comm (ledger-split-commodity-string str))
|
||||
(defvar ledger-read-commodity-history nil
|
||||
"Default history variable for `ledger-read-commodity-string'.")
|
||||
|
||||
(defun ledger-read-commodity-string (prompt &optional history)
|
||||
"Read an amount from mini-buffer using PROMPT.
|
||||
|
||||
If not supplied as input, the commodity defaults to
|
||||
`ledger-reconcile-default-commodity'.
|
||||
|
||||
If HISTORY is non-nil, it should be a minibuffer history variable.
|
||||
Otherwise, default to `ledger-read-commodity-history'."
|
||||
(let ((str (read-string
|
||||
(format "%s (%s): " prompt ledger-reconcile-default-commodity)
|
||||
nil (or history 'ledger-read-commodity-history))))
|
||||
(when-let* (((> (length str) 0))
|
||||
(comm (ledger-split-commodity-string str)))
|
||||
(if (cadr comm)
|
||||
comm
|
||||
(list (car comm) ledger-reconcile-default-commodity)))))
|
||||
|
||||
@@ -304,11 +304,17 @@ an alist (ACCOUNT-ELEMENT . NODE)."
|
||||
(match-string 2) (match-string 3) (match-string 4)
|
||||
(match-string 5) (match-string 6)
|
||||
(= (line-end-position) (match-end 0)))))
|
||||
(;; Transaction comments
|
||||
(eq 'comment (car (cdr (ledger-context-at-point))))
|
||||
(save-excursion
|
||||
(back-to-indentation)
|
||||
(setq start (point)))
|
||||
(setq collection (cons 'nullary #'ledger-comments-list)))
|
||||
(;; Payees
|
||||
(eq 'transaction
|
||||
(save-excursion
|
||||
(prog1 (ledger-thing-at-point)
|
||||
(setq start (point)))))
|
||||
(save-excursion
|
||||
(prog1 (ledger-thing-at-point)
|
||||
(setq start (point)))))
|
||||
(setq collection (cons 'nullary #'ledger-payees-list)))
|
||||
(;; Accounts
|
||||
(save-excursion
|
||||
@@ -322,10 +328,10 @@ an alist (ACCOUNT-ELEMENT . NODE)."
|
||||
(- (match-beginning 0) end)))
|
||||
realign-after t
|
||||
collection (cons 'nullary
|
||||
(if ledger-complete-in-steps
|
||||
(lambda ()
|
||||
(ledger-complete-account-next-steps start end))
|
||||
#'ledger-accounts-list)))))
|
||||
(if ledger-complete-in-steps
|
||||
(lambda ()
|
||||
(ledger-complete-account-next-steps start end))
|
||||
#'ledger-accounts-list)))))
|
||||
(when collection
|
||||
(let ((prefix (buffer-substring-no-properties start end)))
|
||||
(list start end
|
||||
@@ -352,6 +358,20 @@ an alist (ACCOUNT-ELEMENT . NODE)."
|
||||
(defun ledger-trim-trailing-whitespace (str)
|
||||
(replace-regexp-in-string "[ \t]*$" "" str))
|
||||
|
||||
(defun ledger-comments-list ()
|
||||
"Collect comments from the buffer."
|
||||
(let ((comments '()))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
;; FIXME: This only catches comments at beginning of lines and starting
|
||||
;; with some spaces (so "transaction comments"). There can also be
|
||||
;; comments after payees or prices too, as well as comments outside of
|
||||
;; transactions (the latter should be completed over separately).
|
||||
;; TODO: Unify this regex with `ledger-comment-regex'
|
||||
(while (re-search-forward "^[ \t]+\\(?1:;.+\\)$" nil t)
|
||||
(push (match-string-no-properties 1) comments)))
|
||||
(sort (delete-dups comments) #'string-lessp)))
|
||||
|
||||
(defun ledger-fully-complete-xact ()
|
||||
"Completes a transaction if there is another matching payee in the buffer.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
;; -*- no-byte-compile: t; lexical-binding: nil -*-
|
||||
(define-package "ledger-mode" "20250821.1439"
|
||||
(define-package "ledger-mode" "20251219.2350"
|
||||
"Helper code for use with the \"ledger\" command-line tool."
|
||||
'((emacs "26.1"))
|
||||
:url "https://github.com/ledger/ledger-mode"
|
||||
:commit "e9bb645e8f05cf7ad0819b0450db7e84c9ed3f41"
|
||||
:revdesc "e9bb645e8f05")
|
||||
:commit "40e6a167530e21968e3ce7b8cb74e7595cb6009a"
|
||||
:revdesc "40e6a167530e")
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
|
||||
;; Package-Version: 20250821.1439
|
||||
;; Package-Revision: e9bb645e8f05
|
||||
;; Package-Version: 20251219.2350
|
||||
;; Package-Revision: 40e6a167530e
|
||||
;; Package-Requires: ((emacs "26.1"))
|
||||
|
||||
;; This is free software; you can redistribute it and/or modify it under
|
||||
|
||||
@@ -92,7 +92,7 @@ Default is `ledger-default-date-format'."
|
||||
:type 'string
|
||||
:group 'ledger-reconcile)
|
||||
|
||||
(defcustom ledger-reconcile-target-prompt-string "Target amount for reconciliation "
|
||||
(defcustom ledger-reconcile-target-prompt-string "Target amount for reconciliation"
|
||||
"Prompt for reconcile target."
|
||||
:type 'string
|
||||
:group 'ledger-reconcile)
|
||||
@@ -522,7 +522,6 @@ Return a count of the uncleared transactions."
|
||||
(delete-char -1)) ;gets rid of the extra line feed at the bottom of the list
|
||||
(goto-char (point-min))
|
||||
(set-buffer-modified-p nil)
|
||||
(setq buffer-read-only t)
|
||||
|
||||
(length xacts)))
|
||||
|
||||
@@ -617,21 +616,37 @@ reconciliation, otherwise prompt for TARGET."
|
||||
(ledger-reconcile-change-target target)
|
||||
(ledger-display-balance))))))
|
||||
|
||||
(defvar ledger-reconcile-mode-abbrev-table)
|
||||
(defvar ledger-reconcile-target-history nil
|
||||
"Minibuffer history for `ledger-reconcile-change-target'")
|
||||
|
||||
(defun ledger-reconcile-change-target (&optional target)
|
||||
"Change the TARGET amount for the reconciliation process."
|
||||
(interactive)
|
||||
(setq ledger-reconcile-target (or target (ledger-read-commodity-string ledger-reconcile-target-prompt-string)))
|
||||
(setq ledger-reconcile-target
|
||||
(or target (ledger-read-commodity-string
|
||||
ledger-reconcile-target-prompt-string
|
||||
'ledger-reconcile-target-history)))
|
||||
(ledger-display-balance))
|
||||
|
||||
(defmacro ledger-reconcile-change-sort-key-and-refresh (sort-by)
|
||||
"Set the sort-key to SORT-BY."
|
||||
`(lambda ()
|
||||
(interactive)
|
||||
(defun ledger-reconcile--change-sort-key-and-refresh (sort-key)
|
||||
"Set the sort-key to SORT-KEY and refresh the buffer."
|
||||
(setq ledger-reconcile-sort-key sort-key)
|
||||
(ledger-reconcile-refresh))
|
||||
|
||||
(setq ledger-reconcile-sort-key ,sort-by)
|
||||
(ledger-reconcile-refresh)))
|
||||
(defmacro ledger-reconcile--define-sort-command (name expr)
|
||||
"Define a sorting command named ledger-reconcile-sort-by-NAME.
|
||||
|
||||
The command will re-sort the reconcile buffer by EXPR."
|
||||
(let ((command (intern (concat "ledger-reconcile-sort-by-" (symbol-name name)))))
|
||||
`(defun ,command ()
|
||||
,(concat "Sort reconcile buffer by " (symbol-name name) " and refresh.")
|
||||
(interactive)
|
||||
(ledger-reconcile--change-sort-key-and-refresh ,expr))))
|
||||
|
||||
(ledger-reconcile--define-sort-command file-order "(0)")
|
||||
(ledger-reconcile--define-sort-command amount "(amount)")
|
||||
(ledger-reconcile--define-sort-command date "(date)")
|
||||
(ledger-reconcile--define-sort-command payee "(payee)")
|
||||
|
||||
(defvar ledger-reconcile-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
@@ -652,19 +667,16 @@ reconciliation, otherwise prompt for TARGET."
|
||||
(define-key map (kbd "b") #'ledger-display-balance)
|
||||
(define-key map (kbd "B") #'ledger-reconcile-display-balance-in-header-mode)
|
||||
|
||||
(define-key map (kbd "C-c C-o") (ledger-reconcile-change-sort-key-and-refresh "(0)"))
|
||||
|
||||
(define-key map (kbd "C-c C-a") (ledger-reconcile-change-sort-key-and-refresh "(amount)"))
|
||||
|
||||
(define-key map (kbd "C-c C-d") (ledger-reconcile-change-sort-key-and-refresh "(date)"))
|
||||
|
||||
(define-key map (kbd "C-c C-p") (ledger-reconcile-change-sort-key-and-refresh "(payee)"))
|
||||
(define-key map (kbd "C-c C-o") #'ledger-reconcile-sort-by-file-order)
|
||||
(define-key map (kbd "C-c C-a") #'ledger-reconcile-sort-by-amount)
|
||||
(define-key map (kbd "C-c C-d") #'ledger-reconcile-sort-by-date)
|
||||
(define-key map (kbd "C-c C-p") #'ledger-reconcile-sort-by-payee)
|
||||
map)
|
||||
"Keymap for `ledger-reconcile-mode'.")
|
||||
|
||||
(easy-menu-define ledger-reconcile-mode-menu ledger-reconcile-mode-map
|
||||
"Ledger reconcile menu"
|
||||
`("Reconcile"
|
||||
"Ledger reconcile menu."
|
||||
'("Reconcile"
|
||||
["Save" ledger-reconcile-save]
|
||||
["Refresh" ledger-reconcile-refresh]
|
||||
["Finish" ledger-reconcile-finish]
|
||||
@@ -674,10 +686,10 @@ reconciliation, otherwise prompt for TARGET."
|
||||
["Change Target Balance" ledger-reconcile-change-target]
|
||||
["Show Cleared Balance" ledger-display-balance]
|
||||
"---"
|
||||
["Sort by payee" ,(ledger-reconcile-change-sort-key-and-refresh "(payee)")]
|
||||
["Sort by date" ,(ledger-reconcile-change-sort-key-and-refresh "(date)")]
|
||||
["Sort by amount" ,(ledger-reconcile-change-sort-key-and-refresh "(amount)")]
|
||||
["Sort by file order" ,(ledger-reconcile-change-sort-key-and-refresh "(0)")]
|
||||
["Sort by payee" ledger-reconcile-sort-by-payee]
|
||||
["Sort by date" ledger-reconcile-sort-by-date]
|
||||
["Sort by amount" ledger-reconcile-sort-by-amount]
|
||||
["Sort by file order" ledger-reconcile-sort-by-file-order]
|
||||
"---"
|
||||
["Toggle Entry" ledger-reconcile-toggle]
|
||||
["Add Entry" ledger-reconcile-add]
|
||||
@@ -687,10 +699,9 @@ reconciliation, otherwise prompt for TARGET."
|
||||
["Visit Source" ledger-reconcile-visit]
|
||||
["Previous Entry" previous-line]
|
||||
"---"
|
||||
["Quit" ledger-reconcile-quit]
|
||||
))
|
||||
["Quit" ledger-reconcile-quit]))
|
||||
|
||||
(define-derived-mode ledger-reconcile-mode text-mode "Reconcile"
|
||||
(define-derived-mode ledger-reconcile-mode special-mode "Reconcile"
|
||||
"A mode for reconciling ledger entries.")
|
||||
|
||||
(define-minor-mode ledger-reconcile-display-balance-in-header-mode
|
||||
|
||||
@@ -98,15 +98,15 @@
|
||||
(let* ((regex (eval regex))
|
||||
(group-count (regexp-opt-depth regex))
|
||||
(defs
|
||||
(list
|
||||
`(defconst
|
||||
,(intern (concat "ledger-" (symbol-name name) "-regexp"))
|
||||
,regex
|
||||
,docs)
|
||||
`(defconst
|
||||
,(intern (concat "ledger-regex-" (symbol-name name)
|
||||
"-group--count"))
|
||||
,group-count)))
|
||||
(list
|
||||
`(defconst
|
||||
,(intern (concat "ledger-" (symbol-name name) "-regexp"))
|
||||
,regex
|
||||
,docs)
|
||||
`(defconst
|
||||
,(intern (concat "ledger-regex-" (symbol-name name)
|
||||
"-group--count"))
|
||||
,group-count)))
|
||||
(addend 0) last-group)
|
||||
(if (null args)
|
||||
(progn
|
||||
|
||||
@@ -557,10 +557,10 @@ specific posting at point instead."
|
||||
(when (and file xact-position)
|
||||
(find-file-other-window file)
|
||||
(widen)
|
||||
(if (markerp xact-position)
|
||||
(goto-char xact-position)
|
||||
(progn (goto-char (point-min))
|
||||
(forward-line (1- xact-position))))
|
||||
(if (markerp xact-position)
|
||||
(goto-char xact-position)
|
||||
(progn (goto-char (point-min))
|
||||
(forward-line (1- xact-position))))
|
||||
(when ledger-report-links-beginning-of-xact
|
||||
(ledger-navigate-beginning-of-xact)))))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user