unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob e71e86166872bc2c0ddfca57bbc636bee7bcf329 3380 bytes (raw)
name: emacs/notmuch-compat.el 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
;; Compatibility functions for earlier versions of emacs

;; The functions in this file are copied from more modern versions of
;; emacs and are Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2017
;; Free Software Foundation, Inc.



;; emacs master has a bugfix for folding long headers when sending
;; messages. Include the fix for earlier versions of emacs. To avoid
;; interfering with gnus we only run the hook when called from
;; notmuch-message-mode.

(declare-function mail-header-fold-field "mail-parse" nil)

(unless (fboundp 'message--fold-long-headers)
  (add-hook 'message-header-hook
	    (lambda ()
	      (when (eq major-mode 'notmuch-message-mode)
		(goto-char (point-min))
		(while (not (eobp))
		  (when (and (looking-at "[^:]+:")
			     (> (- (line-end-position) (point)) 998))
		    (mail-header-fold-field))
		  (forward-line 1))))))

(if (fboundp 'setq-local)
    (defalias 'notmuch-setq-local 'setq-local)
  (defmacro notmuch-setq-local (var val)
    "Set variable VAR to value VAL in current buffer.

Backport of setq-local for emacs without setq-local (pre 24.3)."
    `(set (make-local-variable ',var) ,val)))

(if (fboundp 'read-char-choice)
    (defalias 'notmuch-read-char-choice 'read-char-choice)
  (defun notmuch-read-char-choice (prompt chars &optional inhibit-keyboard-quit)
  "Read and return one of CHARS, prompting for PROMPT.
Any input that is not one of CHARS is ignored.

If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
keyboard-quit events while waiting for a valid input.

This is an exact copy of this function from emacs 24 for use on
emacs 23, except with the one emacs 24 only function it calls
inlined."
  (unless (consp chars)
    (error "Called `read-char-choice' without valid char choices"))
  (let (char done show-help (helpbuf " *Char Help*"))
    (let ((cursor-in-echo-area t)
          (executing-kbd-macro executing-kbd-macro)
	  (esc-flag nil))
      (save-window-excursion	      ; in case we call help-form-show
	(while (not done)
	  (unless (get-text-property 0 'face prompt)
	    (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
	  (setq char (let ((inhibit-quit inhibit-keyboard-quit))
		       (read-key prompt)))
	  (and show-help (buffer-live-p (get-buffer helpbuf))
	       (kill-buffer helpbuf))
	  (cond
	   ((not (numberp char)))
	   ;; If caller has set help-form, that's enough.
	   ;; They don't explicitly have to add help-char to chars.
	   ((and help-form
		 (eq char help-char)
		 (setq show-help t)
		 ;; This is an inlined copy of help-form-show as that
		 ;; was introduced in emacs 24 too.
		 (let ((msg (eval help-form)))
		   (if (stringp msg)
		       (with-output-to-temp-buffer " *Char Help*"
			 (princ msg))))))
	   ((memq char chars)
	    (setq done t))
	   ((and executing-kbd-macro (= char -1))
	    ;; read-event returns -1 if we are in a kbd macro and
	    ;; there are no more events in the macro.  Attempt to
	    ;; get an event interactively.
	    (setq executing-kbd-macro nil))
	   ((not inhibit-keyboard-quit)
	    (cond
	     ((and (null esc-flag) (eq char ?\e))
	      (setq esc-flag t))
	     ((memq char '(?\C-g ?\e))
	      (keyboard-quit))))))))
    ;; Display the question with the answer.  But without cursor-in-echo-area.
    (message "%s%s" prompt (char-to-string char))
    char)))

;; End of compatibility functions

(provide 'notmuch-compat)

debug log:

solving e71e861 ...
found e71e861 in https://yhetil.org/notmuch/1485684281-2760-3-git-send-email-markwalters1009@gmail.com/ ||
	https://yhetil.org/notmuch/1488649637-19006-3-git-send-email-markwalters1009@gmail.com/
found c3d827a in https://yhetil.org/notmuch.git/
preparing index
index prepared:
100644 c3d827af59969f9f7fe5aac04b3c9d8835bf300f	emacs/notmuch-compat.el

applying [1/1] https://yhetil.org/notmuch/1485684281-2760-3-git-send-email-markwalters1009@gmail.com/
diff --git a/emacs/notmuch-compat.el b/emacs/notmuch-compat.el
index c3d827a..e71e861 100644

Checking patch emacs/notmuch-compat.el...
Applied patch emacs/notmuch-compat.el cleanly.

skipping https://yhetil.org/notmuch/1488649637-19006-3-git-send-email-markwalters1009@gmail.com/ for e71e861
index at:
100644 e71e86166872bc2c0ddfca57bbc636bee7bcf329	emacs/notmuch-compat.el

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).