emacs: Fix exception when fetching empty or unconfigured settings

When "notmuch config" is called with the name of an empty or
unconfigured setting, it prints nothing (not even a new line).
Previously, `notmuch-config-get' assumed it would always print a
newline.  As a result, when `notmuch-config-get' was called with the
name of an empty of unconfigured setting, it would attempt to
(substring "" 0 -1) to strip the newline, which would fail with a
(args-out-of-range "" 0 -1) exception.

Fix this by only stripping the newline if there actually is one.
This commit is contained in:
Austin Clements 2014-02-20 14:16:35 -05:00 committed by David Bremner
parent 1326ec09ee
commit 4b734374fb

View file

@ -198,8 +198,13 @@ on the command line, and then retry your notmuch command")))
(defun notmuch-config-get (item)
"Return a value from the notmuch configuration."
;; Trim off the trailing newline
(substring (notmuch-command-to-string "config" "get" item) 0 -1))
(let* ((val (notmuch-command-to-string "config" "get" item))
(len (length val)))
;; Trim off the trailing newline (if the value is empty or not
;; configured, there will be no newline)
(if (and (> len 0) (= (aref val (- len 1)) ?\n))
(substring val 0 -1)
val)))
(defun notmuch-database-path ()
"Return the database.path value from the notmuch configuration."