summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2013-01-16 12:18:33 -0800
committerJohn Wiegley <johnw@newartisans.com>2013-01-16 12:18:33 -0800
commit6ff7dac73f78e885637b2827457ac5e4acfded67 (patch)
tree61e53a8960a3dbd54f3ba11e3361525c506430de
parentd922f4659570c87a06352b0da9d877f047ec442c (diff)
parent855432c4cd32b03b0751cffb0e215f2ceefdc6e5 (diff)
downloadfork-ledger-6ff7dac73f78e885637b2827457ac5e4acfded67.tar.gz
fork-ledger-6ff7dac73f78e885637b2827457ac5e4acfded67.tar.bz2
fork-ledger-6ff7dac73f78e885637b2827457ac5e4acfded67.zip
Merge pull request #122 from enderw88/Lisp-fixes
Fix ledger-add-entry
-rw-r--r--lisp/ldg-mode.el43
-rw-r--r--src/account.h7
-rw-r--r--src/commodity.h7
-rw-r--r--src/output.h4
4 files changed, 58 insertions, 3 deletions
diff --git a/lisp/ldg-mode.el b/lisp/ldg-mode.el
index 6090a312..04c6ee1b 100644
--- a/lisp/ldg-mode.el
+++ b/lisp/ldg-mode.el
@@ -76,6 +76,47 @@ Return the difference in the format of a time value."
(if (ledger-time-less-p moment date)
(throw 'found t)))))))
+(defun ledger-iterate-entries (callback)
+ (goto-char (point-min))
+ (let* ((now (current-time))
+ (current-year (nth 5 (decode-time now))))
+ (while (not (eobp))
+ (when (looking-at
+ (concat "\\(Y\\s-+\\([0-9]+\\)\\|"
+ "\\([0-9]\\{4\\}+\\)?[./]?"
+ "\\([0-9]+\\)[./]\\([0-9]+\\)\\s-+"
+ "\\(\\*\\s-+\\)?\\(.+\\)\\)"))
+ (let ((found (match-string 2)))
+ (if found
+ (setq current-year (string-to-number found))
+ (let ((start (match-beginning 0))
+ (year (match-string 3))
+ (month (string-to-number (match-string 4)))
+ (day (string-to-number (match-string 5)))
+ (mark (match-string 6))
+ (desc (match-string 7)))
+ (if (and year (> (length year) 0))
+ (setq year (string-to-number year)))
+ (funcall callback start
+ (encode-time 0 0 0 day month
+ (or year current-year))
+ mark desc)))))
+ (forward-line))))
+
+(defun ledger-set-year (newyear)
+ "Set ledger's idea of the current year to the prefix argument."
+ (interactive "p")
+ (if (= newyear 1)
+ (setq ledger-year (read-string "Year: " (ledger-current-year)))
+ (setq ledger-year (number-to-string newyear))))
+
+(defun ledger-set-month (newmonth)
+ "Set ledger's idea of the current month to the prefix argument."
+ (interactive "p")
+ (if (= newmonth 1)
+ (setq ledger-month (read-string "Month: " (ledger-current-month)))
+ (setq ledger-month (format "%02d" newmonth))))
+
(defun ledger-add-entry (entry-text &optional insert-at-point)
(interactive "sEntry: ")
(let* ((args (with-temp-buffer
@@ -95,7 +136,7 @@ Return the difference in the format of a time value."
(insert
(with-temp-buffer
(setq exit-code
- (apply #'ledger-run-ledger ledger-buf "entry"
+ (apply #'ledger-exec-ledger ledger-buf ledger-buf "entry"
(mapcar 'eval args)))
(goto-char (point-min))
(if (looking-at "Error: ")
diff --git a/src/account.h b/src/account.h
index a2fcb8de..3642ada0 100644
--- a/src/account.h
+++ b/src/account.h
@@ -308,6 +308,13 @@ std::ostream& operator<<(std::ostream& out, const account_t& account);
void put_account(property_tree::ptree& pt, const account_t& acct,
function<bool(const account_t&)> pred);
+//simple struct added to allow std::map to compare accounts in the accounts report
+struct account_compare {
+ bool operator() (const account_t& lhs, const account_t& rhs){
+ return (lhs.fullname().compare(rhs.fullname()) < 0);
+ }
+};
+
} // namespace ledger
#endif // _ACCOUNT_H
diff --git a/src/commodity.h b/src/commodity.h
index ab496850..37b02e74 100644
--- a/src/commodity.h
+++ b/src/commodity.h
@@ -349,6 +349,13 @@ inline std::ostream& operator<<(std::ostream& out, const commodity_t& comm) {
void put_commodity(property_tree::ptree& pt, const commodity_t& comm,
bool commodity_details = false);
+//simple struct to allow std::map to compare commodities names
+struct commodity_compare {
+ bool operator() (const commodity_t* lhs, const commodity_t* rhs){
+ return (lhs->symbol().compare(rhs->symbol()) < 0);
+ }
+};
+
} // namespace ledger
#endif // _COMMODITY_H
diff --git a/src/output.h b/src/output.h
index 281f69b6..5ce9dc58 100644
--- a/src/output.h
+++ b/src/output.h
@@ -142,7 +142,7 @@ class report_accounts : public item_handler<post_t>
protected:
report_t& report;
- std::map<account_t *, std::size_t> accounts;
+ std::map<account_t *, std::size_t, account_compare> accounts;
typedef std::map<account_t *, std::size_t>::value_type accounts_pair;
@@ -194,7 +194,7 @@ class report_commodities : public item_handler<post_t>
protected:
report_t& report;
- std::map<commodity_t *, std::size_t> commodities;
+ std::map<commodity_t *, std::size_t, commodity_compare> commodities;
typedef std::map<commodity_t *, std::size_t>::value_type commodities_pair;