aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2023-11-01 07:09:38 -0300
committerDavid Bremner <david@tethera.net>2023-11-01 07:09:38 -0300
commit75560c052b98e56783ebecd6444a36ea7fd483c4 (patch)
tree7a6875422727399169c4179d0ee8b801031da9fc
parent6f07b14031017fbd2f14adbe7a7f69c6aa954f4b (diff)
parent356ad392716d2a775e58d766c1fec9047cc84163 (diff)
Merge tag 'debian/0.38.1-1' into debian/bookworm-backports
notmuch release 0.38.1-1 for unstable (sid) [dgit] [dgit distro=debian no-split --quilt=linear]
-rw-r--r--NEWS18
-rw-r--r--bindings/python/notmuch/version.py2
-rwxr-xr-xcontrib/notmuch-mutt/notmuch-mutt2
-rw-r--r--debian/changelog18
-rw-r--r--emacs/notmuch-lib.el1
-rw-r--r--emacs/notmuch-show.el39
-rw-r--r--lib/config.cc13
-rw-r--r--lib/notmuch-private.h2
-rw-r--r--lib/open.cc4
-rw-r--r--notmuch.c8
-rwxr-xr-xtest/T030-config.sh15
-rw-r--r--version.txt2
12 files changed, 108 insertions, 16 deletions
diff --git a/NEWS b/NEWS
index 00f4fe47..a7c67445 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,21 @@
+Notmuch 0.38.1 (2023-10-26)
+===========================
+
+CLI
+---
+
+Report parse errors in config files.
+
+Emacs
+-----
+
+Fix image toggling for Emacs >= 29.1.
+
+notmuch-mutt
+------------
+
+Fix syntax error in script.
+
Notmuch 0.38 (2023-09-12)
=========================
diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py
index c847a1a3..1779d8cc 100644
--- a/bindings/python/notmuch/version.py
+++ b/bindings/python/notmuch/version.py
@@ -1,3 +1,3 @@
# this file should be kept in sync with ../../../version
-__VERSION__ = '0.38'
+__VERSION__ = '0.38.1'
SOVERSION = '5'
diff --git a/contrib/notmuch-mutt/notmuch-mutt b/contrib/notmuch-mutt/notmuch-mutt
index 1ac68065..b81252c8 100755
--- a/contrib/notmuch-mutt/notmuch-mutt
+++ b/contrib/notmuch-mutt/notmuch-mutt
@@ -67,7 +67,7 @@ sub check_search_cache_maildir($) {
foreach my $d (@contents) {
-l "$maildir/$d" and die_dir( $maildir, "contains symlink $d");
-d "$maildir/$d" or die_dir( $maildir, "contains non-directory $d");
- exists($required[$d]) or die_dir( $maildir, "contains directory $d");
+ exists($required{$d}) or die_dir( $maildir, "contains directory $d");
}
}
diff --git a/debian/changelog b/debian/changelog
index 15d904d5..2fc289eb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+notmuch (0.38.1-1) unstable; urgency=medium
+
+ * New upstream bugfix release
+
+ -- David Bremner <bremner@debian.org> Thu, 26 Oct 2023 19:58:42 -0300
+
+notmuch (0.38.1~rc1-1) experimental; urgency=medium
+
+ * New upstream release candidate
+
+ -- David Bremner <bremner@debian.org> Thu, 12 Oct 2023 19:53:10 -0300
+
+notmuch (0.38.1~pre0-1) experimental; urgency=medium
+
+ * New upstream release candidate
+
+ -- David Bremner <bremner@debian.org> Sun, 01 Oct 2023 08:14:17 -0300
+
notmuch (0.38-2~bpo12+1) bookworm-backports; urgency=medium
* Rebuild for bookworm-backports.
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 84ba8c5e..a09f4ab8 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -703,6 +703,7 @@ current buffer, if possible."
(when (mm-inlinable-p handle)
(set-buffer display-buffer)
(mm-display-part handle)
+ (plist-put part :undisplayer (mm-handle-undisplayer handle))
t))))))
;;; Generic Utilities
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 36cce619..4cc5aa57 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -644,8 +644,24 @@ message at DEPTH in the current thread."
(when show
(button-put button :notmuch-lazy-part nil)
(notmuch-show-lazy-part lazy-part button))
- ;; else there must be an overlay.
- (overlay-put overlay 'invisible (not show))
+ (let* ((part (plist-get properties :notmuch-part))
+ (undisplayer (plist-get part :undisplayer))
+ (mime-type (plist-get part :computed-type))
+ (redisplay-data (button-get button
+ :notmuch-redisplay-data))
+ (imagep (string-match "^image/" mime-type)))
+ (cond
+ ((and imagep (not show) undisplayer)
+ ;; call undisplayer thunk created by gnus.
+ (funcall undisplayer)
+ ;; there is an extra newline left
+ (delete-region
+ (+ 1 (button-end button))
+ (+ 2 (button-end button))))
+ ((and imagep show redisplay-data)
+ (notmuch-show-lazy-part redisplay-data button))
+ (t
+ (overlay-put overlay 'invisible (not show)))))
t)))))))
;;; Part content ID handling
@@ -1019,10 +1035,13 @@ will return nil if the CID is unknown or cannot be retrieved."
(part-end (copy-marker (point) t))
;; We have to save the depth as we can't find the depth
;; when narrowed.
- (depth (notmuch-show-get-depth)))
+ (depth (notmuch-show-get-depth))
+ (mime-type (plist-get (cadr part-args) :computed-type)))
(save-restriction
(narrow-to-region part-beg part-end)
(delete-region part-beg part-end)
+ (when (and mime-type (string-match "^image/" mime-type))
+ (button-put button :notmuch-redisplay-data part-args))
(apply #'notmuch-show-insert-bodypart-internal part-args)
(indent-rigidly part-beg
part-end
@@ -1106,14 +1125,18 @@ is t, hide the part initially and show the button."
(and deep button)
(and high button)
(and long button))))
- (content-beg (point)))
+ (content-beg (point))
+ (part-data (list msg part mime-type nth depth button)))
;; Store the computed mime-type for later use (e.g. by attachment handlers).
(plist-put part :computed-type mime-type)
- (if show-part
- (notmuch-show-insert-bodypart-internal msg part mime-type nth depth button)
+ (cond
+ (show-part
+ (apply #'notmuch-show-insert-bodypart-internal part-data)
+ (when (and button (string-match "^image/" mime-type))
+ (button-put button :notmuch-redisplay-data part-data)))
+ (t
(when button
- (button-put button :notmuch-lazy-part
- (list msg part mime-type nth depth button))))
+ (button-put button :notmuch-lazy-part part-data))))
;; Some of the body part handlers leave point somewhere up in the
;; part, so we make sure that we're down at the end.
(goto-char (point-max))
diff --git a/lib/config.cc b/lib/config.cc
index 2323860d..6cd15fab 100644
--- a/lib/config.cc
+++ b/lib/config.cc
@@ -416,7 +416,8 @@ _expand_path (void *ctx, const char *key, const char *val)
notmuch_status_t
_notmuch_config_load_from_file (notmuch_database_t *notmuch,
- GKeyFile *file)
+ GKeyFile *file,
+ char **status_string)
{
notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
gchar **groups = NULL, **keys, *val;
@@ -435,6 +436,7 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
for (gchar **keys_p = keys; *keys_p; keys_p++) {
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
char *normalized_val;
+ GError *gerr = NULL;
/* If we opened from a given path, do not overwrite it */
if (strcmp (absolute_key, "database.path") == 0 &&
@@ -442,7 +444,14 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
notmuch->xapian_db)
continue;
- val = g_key_file_get_string (file, *grp, *keys_p, NULL);
+ val = g_key_file_get_string (file, *grp, *keys_p, &gerr);
+ if (gerr) {
+ if (status_string)
+ IGNORE_RESULT (asprintf (status_string,
+ "GLib: %s\n",
+ gerr->message));
+ g_error_free (gerr);
+ }
if (! val) {
status = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index c19ee8e2..367e23e6 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -726,7 +726,7 @@ notmuch_status_t
_notmuch_config_load_from_database (notmuch_database_t *db);
notmuch_status_t
-_notmuch_config_load_from_file (notmuch_database_t *db, GKeyFile *file);
+_notmuch_config_load_from_file (notmuch_database_t *db, GKeyFile *file, char **status_string);
notmuch_status_t
_notmuch_config_load_defaults (notmuch_database_t *db);
diff --git a/lib/open.cc b/lib/open.cc
index 54d1faf3..005872dc 100644
--- a/lib/open.cc
+++ b/lib/open.cc
@@ -555,7 +555,7 @@ _finish_open (notmuch_database_t *notmuch,
goto DONE;
if (key_file)
- status = _notmuch_config_load_from_file (notmuch, key_file);
+ status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status)
goto DONE;
@@ -961,7 +961,7 @@ notmuch_database_load_config (const char *database_path,
}
if (key_file) {
- status = _notmuch_config_load_from_file (notmuch, key_file);
+ status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status)
goto DONE;
}
diff --git a/notmuch.c b/notmuch.c
index 37286b8f..814b9e42 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -563,6 +563,12 @@ main (int argc, char *argv[])
NULL,
&notmuch,
&status_string);
+ if (status_string) {
+ fputs (status_string, stderr);
+ free (status_string);
+ status_string = NULL;
+ }
+
switch (status) {
case NOTMUCH_STATUS_NO_CONFIG:
if (! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) {
@@ -584,6 +590,8 @@ main (int argc, char *argv[])
case NOTMUCH_STATUS_SUCCESS:
break;
default:
+ fputs ("Error: unable to load config file.\n", stderr);
+ ret = 1;
goto DONE;
}
diff --git a/test/T030-config.sh b/test/T030-config.sh
index ea0b4012..621e0b69 100755
--- a/test/T030-config.sh
+++ b/test/T030-config.sh
@@ -3,6 +3,8 @@
test_description='"notmuch config"'
. $(dirname "$0")/test-lib.sh || exit 1
+cp notmuch-config initial-config
+
test_begin_subtest "Get string value"
test_expect_equal "$(notmuch config get user.name)" "Notmuch Test Suite"
@@ -193,4 +195,17 @@ test_begin_subtest "get built_with.nonexistent prints false"
output=$(notmuch config get built_with.nonexistent)
test_expect_equal "$output" "false"
+test_begin_subtest "Bad utf8 reported as error"
+cp initial-config bad-config
+printf '[query]\nq3=from:\xff\n' >>bad-config
+test_expect_code 1 "notmuch --config=./bad-config config list"
+
+test_begin_subtest "Specific error message about bad utf8"
+notmuch --config=./bad-config config list 2>ERRORS
+cat <<EOF > EXPECTED
+GLib: Key file contains key “q3” with value “from:�” which is not UTF-8
+Error: unable to load config file.
+EOF
+test_expect_equal_file EXPECTED ERRORS
+
test_done
diff --git a/version.txt b/version.txt
index 1cbc8125..bb22182d 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-0.38
+0.38.1