Backed out recent changes that broke the complete cycling behavior.
This commit is contained in:
parent
f5d5149d76
commit
af84005a52
4 changed files with 32 additions and 77 deletions
|
|
@ -175,11 +175,6 @@ typing a close match to the payee. Ledger-mode will call @command{ledger
|
||||||
xact} with the data you enter and place the transaction in the proper
|
xact} with the data you enter and place the transaction in the proper
|
||||||
chronological place in the ledger.
|
chronological place in the ledger.
|
||||||
|
|
||||||
To complete just the part of the transaction where your cursor is at,
|
|
||||||
Ledger-mode supports Emacs' universal @command{completion-at-point}
|
|
||||||
command. You may bind this command to @kbd{C-M-i} since this is the
|
|
||||||
default for Emacs programming modes.
|
|
||||||
|
|
||||||
@node Reconciliation, Reports, Quick Add, Quick Demo
|
@node Reconciliation, Reports, Quick Add, Quick Demo
|
||||||
@subsection Reconciliation
|
@subsection Reconciliation
|
||||||
@kindex C-c C-r
|
@kindex C-c C-r
|
||||||
|
|
|
||||||
|
|
@ -145,38 +145,9 @@ Return list."
|
||||||
(cdr root))
|
(cdr root))
|
||||||
'string-lessp))))
|
'string-lessp))))
|
||||||
|
|
||||||
(defun ledger-command-at-point ()
|
|
||||||
"Do appropriate completion for current context."
|
|
||||||
(let ((context (mapcar*
|
|
||||||
(lambda(x) (if (symbolp x) (symbol-name x)))
|
|
||||||
(ledger-context-at-point))))
|
|
||||||
(cond
|
|
||||||
((string= "acct-transaction" (car context))
|
|
||||||
(concat (car context) "/" (nth 1 context)))
|
|
||||||
((string= "pmnt-transaction" (car context))
|
|
||||||
(concat (car context) "/" (nth 1 context)))
|
|
||||||
(t
|
|
||||||
(car context)))))
|
|
||||||
|
|
||||||
(defun ledger-complete-at-point ()
|
(defun ledger-complete-at-point ()
|
||||||
"Calls the right completion function for first argument completions."
|
"Do appropriate completion for the thing at point."
|
||||||
(ignore
|
(interactive)
|
||||||
(funcall (or (pcomplete-find-completion-function
|
|
||||||
(ledger-command-at-point))
|
|
||||||
pcomplete-default-completion-function))))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/empty-line ()
|
|
||||||
"Complete when at empty line."
|
|
||||||
(ignore
|
|
||||||
(ledger-add-transaction (read-string "Transaction: "
|
|
||||||
(ledger-year-and-month)) (point))))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/pmnt-transaction/date ()
|
|
||||||
"Complete when at date in transaction."
|
|
||||||
(ignore))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/pmnt-transaction/payee ()
|
|
||||||
"Complete when at payee in transaction."
|
|
||||||
(while (pcomplete-here
|
(while (pcomplete-here
|
||||||
(if (eq (save-excursion
|
(if (eq (save-excursion
|
||||||
(ledger-thing-at-point)) 'transaction)
|
(ledger-thing-at-point)) 'transaction)
|
||||||
|
|
@ -197,24 +168,8 @@ Return list."
|
||||||
(goto-char (line-end-position))
|
(goto-char (line-end-position))
|
||||||
(search-backward ";" (line-beginning-position) t)
|
(search-backward ";" (line-beginning-position) t)
|
||||||
(skip-chars-backward " \t0123456789.,")
|
(skip-chars-backward " \t0123456789.,")
|
||||||
(throw 'pcompleted t)))))))
|
(throw 'pcompleted t)))
|
||||||
|
(ledger-accounts)))))
|
||||||
(defun pcomplete/ledger-mode/acct-transaction/indent ()
|
|
||||||
"Complete when at indent in transaction."
|
|
||||||
(ignore (ledger-thing-at-point)))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/acct-transaction/account ()
|
|
||||||
"Complete when at account in transaction."
|
|
||||||
(set (make-local-variable 'pcomplete-termination-string) " ")
|
|
||||||
(pcomplete-here (ledger-accounts)))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/acct-transaction/amount ()
|
|
||||||
"Complete when at amount in transaction."
|
|
||||||
(ignore (ledger-post-edit-amount)))
|
|
||||||
|
|
||||||
(defun pcomplete/ledger-mode/acct-transaction/comment ()
|
|
||||||
"Complete when at amount in transaction."
|
|
||||||
(pcomplete-here (ledger-find-metadata-in-buffer)))
|
|
||||||
|
|
||||||
(defun ledger-fully-complete-xact ()
|
(defun ledger-fully-complete-xact ()
|
||||||
"Completes a transaction if there is another matching payee in the buffer.
|
"Completes a transaction if there is another matching payee in the buffer.
|
||||||
|
|
@ -266,7 +221,7 @@ ledger-magic-tab would cycle properly"
|
||||||
pcomplete-expand-and-complete
|
pcomplete-expand-and-complete
|
||||||
pcomplete-reverse)))
|
pcomplete-reverse)))
|
||||||
(progn
|
(progn
|
||||||
(delete-char pcomplete-last-completion-length)
|
(delete-backward-char pcomplete-last-completion-length)
|
||||||
(if (eq this-command 'pcomplete-reverse)
|
(if (eq this-command 'pcomplete-reverse)
|
||||||
(progn
|
(progn
|
||||||
(push (car (last pcomplete-current-completions))
|
(push (car (last pcomplete-current-completions))
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,16 @@
|
||||||
(defconst ledger-code-string "\\((.*)\\)?")
|
(defconst ledger-code-string "\\((.*)\\)?")
|
||||||
(defconst ledger-payee-string "\\(.*\\)")
|
(defconst ledger-payee-string "\\(.*\\)")
|
||||||
|
|
||||||
(defmacro ledger-single-line-config (&rest elements)
|
(defmacro ledger-line-regex (&rest elements)
|
||||||
|
(let (regex-string)
|
||||||
|
(concat (dolist (e elements regex-string)
|
||||||
|
(setq regex-string
|
||||||
|
(concat regex-string
|
||||||
|
(eval
|
||||||
|
(intern
|
||||||
|
(concat "ledger-" (symbol-name e) "-string")))))) "[ \t]*$")))
|
||||||
|
|
||||||
|
(defmacro ledger-single-line-config2 (&rest elements)
|
||||||
"Take list of ELEMENTS and return regex and element list for use in context-at-point"
|
"Take list of ELEMENTS and return regex and element list for use in context-at-point"
|
||||||
(let (regex-string)
|
(let (regex-string)
|
||||||
`'(,(concat (dolist (e elements regex-string)
|
`'(,(concat (dolist (e elements regex-string)
|
||||||
|
|
@ -53,25 +62,23 @@
|
||||||
(concat "ledger-" (symbol-name e) "-string")))))) "[ \t]*$")
|
(concat "ledger-" (symbol-name e) "-string")))))) "[ \t]*$")
|
||||||
,elements)))
|
,elements)))
|
||||||
|
|
||||||
|
(defmacro ledger-single-line-config (&rest elements)
|
||||||
|
"Take list of ELEMENTS and return regex and element list for use in context-at-point"
|
||||||
|
`'(,(eval `(ledger-line-regex ,@elements))
|
||||||
|
,elements))
|
||||||
|
|
||||||
(defconst ledger-line-config
|
(defconst ledger-line-config
|
||||||
(list
|
(list (list 'xact (list (ledger-single-line-config date nil status nil code nil payee nil comment)
|
||||||
(list 'pmnt-transaction
|
(ledger-single-line-config date nil status nil code nil payee)
|
||||||
(list (ledger-single-line-config date nil status nil code nil payee nil comment)
|
(ledger-single-line-config date nil status nil payee)))
|
||||||
(ledger-single-line-config date nil status nil code nil payee)
|
(list 'acct-transaction (list (ledger-single-line-config indent comment)
|
||||||
(ledger-single-line-config date nil status nil payee)
|
(ledger-single-line-config2 indent status account nil commodity amount nil comment)
|
||||||
(ledger-single-line-config date nil code nil payee nil comment)
|
(ledger-single-line-config2 indent status account nil commodity amount)
|
||||||
(ledger-single-line-config date nil code nil payee)
|
(ledger-single-line-config2 indent status account nil amount nil commodity comment)
|
||||||
(ledger-single-line-config date nil payee)
|
(ledger-single-line-config2 indent status account nil amount nil commodity)
|
||||||
(ledger-single-line-config date)))
|
(ledger-single-line-config2 indent status account nil amount)
|
||||||
(list 'acct-transaction
|
(ledger-single-line-config2 indent status account nil comment)
|
||||||
(list (ledger-single-line-config indent comment)
|
(ledger-single-line-config2 indent status account)))))
|
||||||
(ledger-single-line-config indent status account nil commodity amount nil comment)
|
|
||||||
(ledger-single-line-config indent status account nil commodity amount)
|
|
||||||
(ledger-single-line-config indent status account nil amount nil commodity comment)
|
|
||||||
(ledger-single-line-config indent status account nil amount nil commodity)
|
|
||||||
(ledger-single-line-config indent status account nil amount)
|
|
||||||
(ledger-single-line-config indent status account nil comment)
|
|
||||||
(ledger-single-line-config indent status account)))))
|
|
||||||
|
|
||||||
(defun ledger-extract-context-info (line-type pos)
|
(defun ledger-extract-context-info (line-type pos)
|
||||||
"Get context info for current line with LINE-TYPE.
|
"Get context info for current line with LINE-TYPE.
|
||||||
|
|
@ -131,7 +138,7 @@ the fields in the line in a association list."
|
||||||
((memq first-char '(?\ ?\t))
|
((memq first-char '(?\ ?\t))
|
||||||
(ledger-extract-context-info 'acct-transaction pos))
|
(ledger-extract-context-info 'acct-transaction pos))
|
||||||
((memq first-char '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
|
((memq first-char '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
|
||||||
(ledger-extract-context-info 'pmnt-transaction pos))
|
(ledger-extract-context-info 'xact pos))
|
||||||
((equal first-char ?\=)
|
((equal first-char ?\=)
|
||||||
'(automated-xact nil nil))
|
'(automated-xact nil nil))
|
||||||
((equal first-char ?\~)
|
((equal first-char ?\~)
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,6 @@
|
||||||
(defconst ledger-account-cleared-regex
|
(defconst ledger-account-cleared-regex
|
||||||
"\\(^[ \t]+\\)\\(*\\s-*.*?\\)\\( \\|\t\\|$\\)")
|
"\\(^[ \t]+\\)\\(*\\s-*.*?\\)\\( \\|\t\\|$\\)")
|
||||||
|
|
||||||
(defconst ledger-metadata-regex
|
|
||||||
"[ \t]+\\(?2:;[ \t]+.+\\)$")
|
|
||||||
|
|
||||||
(defmacro ledger-define-regexp (name regex docs &rest args)
|
(defmacro ledger-define-regexp (name regex docs &rest args)
|
||||||
"Simplify the creation of a Ledger regex and helper functions."
|
"Simplify the creation of a Ledger regex and helper functions."
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue