*** dist/Makefile.dist Fri Dec 22 16:40:16 2000 --- Makefile Sun Jun 10 00:25:15 2001 *************** *** 88,89 **** --- 88,90 ---- @echo "(vm-its-such-a-cruel-world)" >> vm.el + @echo "(fmakunbound 'vm-its-such-a-cruel-world)" >> vm.el @$(EMACS) $(BATCHFLAGS) $(PRELOADS) -f batch-byte-compile vm.el *** dist/vm-digest.el.dist Thu Nov 2 09:27:07 2000 --- vm-digest.el Sat Mar 17 12:13:45 2001 *************** *** 450,452 **** (save-match-data ! (skip-chars-forward "\n") (or (and (vm-match-header) --- 450,457 ---- (save-match-data ! ;; People who roll digests often think ! ;; any old format will do. Adding blank ! ;; lines after teh message separator is ! ;; common. Spaces on such lines are an ! ;; added delight. ! (skip-chars-forward " \n") (or (and (vm-match-header) *** dist/vm-folder.el.dist Fri Dec 22 16:40:16 2000 --- vm-folder.el Fri May 4 10:42:30 2001 *************** *** 3296,3297 **** --- 3296,3298 ---- (enable-local-variables nil) + (enable-local-eval nil) (coding-system-for-read (vm-line-ending-coding-system))) *************** *** 3950,3952 **** (make-local-variable 'file-precious-flag) ! (setq file-precious-flag t) ;; scroll in place messes with scroll-up and this loses --- 3951,3953 ---- (make-local-variable 'file-precious-flag) ! (setq file-precious-flag vm-folder-file-precious-flag) ;; scroll in place messes with scroll-up and this loses *** dist/vm-imap.el.dist Sun Mar 11 16:08:32 2001 --- vm-imap.el Sat Jun 23 00:38:44 2001 *************** *** 488,489 **** --- 488,531 ---- (throw 'end-of-session nil)))) + ((equal auth "cram-md5") + (let ((ipad (make-string 64 54)) + (opad (make-string 64 92)) + (command "AUTHENTICATE CRAM-MD5") + (secret (concat + pass (make-string (- 64 (length pass)) 0))) + response p challenge answer) + (vm-imap-send-command process command) + (setq response (vm-imap-read-response process)) + (if (vm-imap-response-matches response 'VM 'NO) + (error "server said NO to %s" command)) + (if (vm-imap-response-matches response 'VM 'BAD) + (vm-imap-protocol-error "server said BAD to %s" + command)) + (cond ((vm-imap-response-matches response '+ 'atom) + (setq p (cdr (nth 1 response)) + challenge (buffer-substring + (nth 0 p) + (nth 1 p)) + challenge (vm-mime-base64-decode-string + challenge))) + (t + (error "Don't understand AUTHENTICATE response"))) + (setq answer + (concat + user " " + (vm-md5-string + (concat + (vm-xor-string secret opad) + (vm-md5-raw-string + (concat + (vm-xor-string secret ipad) challenge))))) + answer (vm-mime-base64-encode-string answer)) + (vm-imap-send-command process answer) + (and (null (vm-imap-read-ok-response process)) + (progn + (setq vm-imap-passwords + (delete (list source-nopwd-nombox pass) + vm-imap-passwords)) + (message "IMAP password for %s incorrect" imapdrop) + (sleep-for 2) + (throw 'end-of-session nil))))) ((equal auth "preauth") *** dist/vm-menu.el.dist Tue Dec 12 00:11:09 2000 --- vm-menu.el Thu Apr 12 23:55:41 2001 *************** *** 381,384 **** (vm-mime-run-display-function-at-point ! 'vm-mime-display-body-using-external-viewer) t] ! "---" ["Save to File" vm-mime-reader-map-save-file t] --- 381,396 ---- (vm-mime-run-display-function-at-point ! 'vm-mime-display-body-using-external-viewer) t]) ! ;; FSF Emacs does not allow a non-string menu element name. ! (if vm-xemacs-p ! (list [(or (format "Convert to %s and Display" ! (nth 1 (vm-mime-can-convert ! (car ! (vm-mm-layout-type ! (vm-mime-get-button-layout e)))))) ! "different type") ! (vm-mime-run-display-function-at-point ! 'vm-mime-convert-body-then-display) ! (vm-mime-can-convert (car (vm-mm-layout-type ! (vm-mime-get-button-layout e))))])) ! (list "---" ["Save to File" vm-mime-reader-map-save-file t] *** dist/vm-mime.el.dist Sun Mar 11 16:08:32 2001 --- vm-mime.el Tue Jun 12 18:05:58 2001 *************** *** 109,110 **** --- 109,123 ---- + (defun vm-mime-base64-decode-string (string) + (vm-with-string-as-temp-buffer + string + (function + (lambda () (vm-mime-base64-decode-region (point-min) (point-max)))))) + + (defun vm-mime-base64-encode-string (string) + (vm-with-string-as-temp-buffer + string + (function + (lambda () (vm-mime-base64-encode-region (point-min) (point-max) + nil t))))) + (defun vm-mime-crlf-to-lf-region (start end) *************** *** 130,132 **** (defun vm-encode-coding-region (b-start b-end coding-system &rest foo) ! (let ((work-buffer (vm-make-work-buffer)) start end --- 143,145 ---- (defun vm-encode-coding-region (b-start b-end coding-system &rest foo) ! (let ((work-buffer nil) start end *************** *** 135,159 **** (b (current-buffer))) ! (save-excursion ! (set-buffer work-buffer) ! (insert-buffer-substring b b-start b-end) ! (setq oldsize (buffer-size)) ! (setq retval (apply 'encode-coding-region (point-min) (point-max) ! coding-system foo)) ! (setq start (point-min) end (point-max)) ! (setq retval (buffer-size)) ! (save-excursion ! (set-buffer b) ! (goto-char b-start) ! (insert-buffer-substring work-buffer start end) ! (delete-region (point) (+ (point) oldsize)) ! ;; Fixup the end point. I have found no other way to ! ;; let the calling function know where the region ends ! ;; after encode-coding-region has scrambled the markers. ! (and (markerp b-end) ! (set-marker b-end (point))) ! (kill-buffer work-buffer) ! retval )))) (defun vm-decode-coding-region (b-start b-end coding-system &rest foo) ! (let ((work-buffer (vm-make-work-buffer)) start end --- 148,174 ---- (b (current-buffer))) ! (unwind-protect ! (save-excursion ! (setq work-buffer (vm-make-work-buffer)) ! (set-buffer work-buffer) ! (insert-buffer-substring b b-start b-end) ! (setq oldsize (buffer-size)) ! (setq retval (apply 'encode-coding-region (point-min) (point-max) ! coding-system foo)) ! (setq start (point-min) end (point-max)) ! (setq retval (buffer-size)) ! (save-excursion ! (set-buffer b) ! (goto-char b-start) ! (insert-buffer-substring work-buffer start end) ! (delete-region (point) (+ (point) oldsize)) ! ;; Fixup the end point. I have found no other way to ! ;; let the calling function know where the region ends ! ;; after encode-coding-region has scrambled the markers. ! (and (markerp b-end) ! (set-marker b-end (point))) ! retval )) ! (and work-buffer (kill-buffer work-buffer))))) (defun vm-decode-coding-region (b-start b-end coding-system &rest foo) ! (let ((work-buffer nil) start end *************** *** 162,183 **** (b (current-buffer))) ! (save-excursion ! (setq oldsize (- b-end b-start)) ! (set-buffer work-buffer) ! (insert-buffer-substring b b-start b-end) ! (setq retval (apply 'decode-coding-region (point-min) (point-max) ! coding-system foo)) ! (and vm-fsfemacs-p (set-buffer-multibyte t)) ! (setq start (point-min) end (point-max)) ! (save-excursion ! (set-buffer b) ! (goto-char b-start) ! (delete-region (point) (+ (point) oldsize)) ! (insert-buffer-substring work-buffer start end) ! ;; Fixup the end point. I have found no other way to ! ;; let the calling function know where the region ends ! ;; after decode-coding-region has scrambled the markers. ! (and (markerp b-end) ! (set-marker b-end (point))) ! (kill-buffer work-buffer) ! retval )))) --- 177,200 ---- (b (current-buffer))) ! (unwind-protect ! (save-excursion ! (setq work-buffer (vm-make-work-buffer)) ! (setq oldsize (- b-end b-start)) ! (set-buffer work-buffer) ! (insert-buffer-substring b b-start b-end) ! (setq retval (apply 'decode-coding-region (point-min) (point-max) ! coding-system foo)) ! (and vm-fsfemacs-p (set-buffer-multibyte t)) ! (setq start (point-min) end (point-max)) ! (save-excursion ! (set-buffer b) ! (goto-char b-start) ! (delete-region (point) (+ (point) oldsize)) ! (insert-buffer-substring work-buffer start end) ! ;; Fixup the end point. I have found no other way to ! ;; let the calling function know where the region ends ! ;; after decode-coding-region has scrambled the markers. ! (and (markerp b-end) ! (set-marker b-end (point))) ! retval )) ! (and work-buffer (kill-buffer work-buffer))))) *************** *** 1293,1297 **** (set-buffer (vm-make-work-buffer " *mime object*")) - ;; call-process-region calls write-region. - ;; don't let it do CR -> LF translation. - (setq selective-display nil) (setq vm-message-garbage-alist --- 1310,1311 ---- *************** *** 1299,1300 **** --- 1313,1317 ---- vm-message-garbage-alist)) + ;; call-process-region calls write-region. + ;; don't let it do CR -> LF translation. + (setq selective-display nil) (vm-mime-insert-mime-body layout) *************** *** 1627,1629 **** (message "%s" (vm-mm-layout-display-error layout)) - (sleep-for 2) nil )) --- 1644,1645 ---- *************** *** 2863,2864 **** --- 2879,2894 ---- (vm-mime-display-external-generic layout)))) + + (defun vm-mime-convert-body-then-display (button) + (let ((layout (vm-mime-convert-undisplayable-layout + (vm-extent-property button 'vm-mime-layout)))) + (vm-set-extent-property button 'vm-mime-disposable t) + (vm-set-extent-property button 'vm-mime-layout layout) + (goto-char (vm-extent-start-position button)) + (vm-decode-mime-layout button t))) + + (defun vm-mime-get-button-layout (e) + (vm-mime-run-display-function-at-point + (function + (lambda (e) + (vm-extent-property e 'vm-mime-layout))))) *** dist/vm-misc.el.dist Sun Mar 11 16:08:33 2001 --- vm-misc.el Sat Jun 23 00:38:13 2001 *************** *** 491,493 **** (and (fboundp 'file-truename) ! (get-file-buffer (file-truename file))))) --- 491,495 ---- (and (fboundp 'file-truename) ! (get-file-buffer (file-truename file))) ! (and (fboundp 'find-buffer-visiting) ! (find-buffer-visiting file)))) *************** *** 846,847 **** --- 848,850 ---- (let ((buffer nil) + (retval nil) (curbuf (current-buffer))) *************** *** 855,859 **** (setq selective-display nil) ! (call-process-region (point-min) (point-max) ! (or shell-file-name "/bin/sh") t buffer nil ! shell-command-switch vm-pop-md5-program) ;; MD5 digest is 32 chars long --- 858,876 ---- (setq selective-display nil) ! (setq retval ! (call-process-region (point-min) (point-max) ! (or shell-file-name "/bin/sh") ! t buffer nil ! shell-command-switch ! vm-pop-md5-program)) ! (if (not (equal retval 0)) ! (progn ! (error "%s failed: exited with code %s" ! vm-pop-md5-program retval))) ! (goto-char (point-min)) ! (if (or (re-search-forward "[^0-9a-f\n]") ! (< (point-max) 32)) ! (error "%s produced bogus MD5 digest '%s'" ! vm-pop-md5-program ! (vm-buffer-substring-no-properties (point-min) ! (point-max)))) ;; MD5 digest is 32 chars long *************** *** 863 **** --- 880,923 ---- (and buffer (kill-buffer buffer)))))) + + ;; output is in hex + (defun vm-md5-string (string) + (if (fboundp 'md5) + (md5 string) + (vm-with-string-as-temp-buffer + string (function + (lambda () + (goto-char (point-min)) + (insert (vm-md5-region (point-min) (point-max))) + (delete-region (point) (point-max))))))) + + ;; output is the raw digest bits, not hex + (defun vm-md5-raw-string (s) + (setq s (vm-md5-string s)) + (let ((raw (make-string 16 0)) + (i 0) n + (hex-digit-alist '((?0 . 0) (?1 . 1) (?2 . 2) (?3 . 3) + (?4 . 4) (?5 . 5) (?6 . 6) (?7 . 7) + (?8 . 8) (?9 . 9) (?A . 10) (?B . 11) + (?C . 12) (?D . 13) (?E . 14) (?F . 15) + ;; some mailer uses lower-case hex + ;; digits despite this being forbidden + ;; by the MIME spec. + (?a . 10) (?b . 11) (?c . 12) (?d . 13) + (?e . 14) (?f . 15)))) + (while (< i 32) + (setq n (+ (* (cdr (assoc (aref s i) hex-digit-alist)) 16) + (cdr (assoc (aref s (1+ i)) hex-digit-alist)))) + (aset raw (/ i 2) n) + (setq i (+ i 2))) + raw )) + + (defun vm-xor-string (s1 s2) + (let ((len (length s1)) + result (i 0)) + (if (/= len (length s2)) + (error "strings not of equal length")) + (setq result (make-string len 0)) + (while (< i len) + (aset result i (logxor (aref s1 i) (aref s2 i))) + (setq i (1+ i))) + result )) *** dist/vm-page.el.dist Tue Jan 9 22:51:32 2001 --- vm-page.el Wed Mar 14 12:21:20 2001 *************** *** 836,838 **** Prefix argument N means move to the Nth next button. ! Negavite N means move to the Nth previous button. If there is no next button, an error is signaled and point is not moved. --- 836,838 ---- Prefix argument N means move to the Nth next button. ! Negative N means move to the Nth previous button. If there is no next button, an error is signaled and point is not moved. *************** *** 865,867 **** Prefix argument N means move to the Nth previous button. ! Negavite N means move to the Nth next button. If there is no previous button, an error is signaled and point is not moved. --- 865,867 ---- Prefix argument N means move to the Nth previous button. ! Negative N means move to the Nth next button. If there is no previous button, an error is signaled and point is not moved. *** dist/vm-pop.el.dist Tue Dec 12 00:11:09 2000 --- vm-pop.el Wed Jun 6 09:39:18 2001 *************** *** 600,603 **** list) ! (setq list (vm-parse response "\\([^ ]+\\) *")) ! (list (string-to-int (nth 1 list)) (string-to-int (nth 2 list))))) --- 600,605 ---- list) ! (if (null response) ! nil ! (setq list (vm-parse response "\\([^ ]+\\) *")) ! (list (string-to-int (nth 1 list)) (string-to-int (nth 2 list)))))) *************** *** 605,607 **** (let ((response (vm-pop-read-response process t))) ! (string-to-int (nth 2 (vm-parse response "\\([^ ]+\\) *"))))) --- 607,610 ---- (let ((response (vm-pop-read-response process t))) ! (and response ! (string-to-int (nth 2 (vm-parse response "\\([^ ]+\\) *")))))) *** dist/vm-reply.el.dist Tue Jan 9 22:51:32 2001 --- vm-reply.el Fri Jun 15 19:21:42 2001 *************** *** 294,295 **** --- 294,301 ---- (vm-text-of message)) + ;; decode MIME encoded words so supercite and other + ;; mail-citation-hook denizens won't have to eat 'em. + (if vm-display-using-mime + (save-restriction + (narrow-to-region start (point)) + (vm-decode-mime-encoded-words))) (cond ((vm-mime-types-match "multipart" type) *************** *** 330,331 **** --- 336,339 ---- (widen) + ;; decode MIME encoded words so supercite and other + ;; mail-citation-hook denizens won't have to eat 'em. (append-to-buffer b (vm-headers-of message) *** dist/vm-save.el.dist Thu Mar 1 20:17:42 2001 --- vm-save.el Mon Apr 9 10:22:50 2001 *************** *** 223,224 **** --- 223,225 ---- (let ((inhibit-local-variables t) + (enable-local-eval nil) (enable-local-variables nil)) *** dist/vm-startup.el.dist Sun Mar 11 16:08:33 2001 --- vm-startup.el Sat Jun 23 17:55:36 2001 *************** *** 68,69 **** --- 68,70 ---- (enable-local-variables nil) + (enable-local-eval nil) ;; for Emacs/MULE *************** *** 269,271 **** ;; not work in a presentation buffer. ! (let ((vm-auto-decode-mime-messages (not preserve-auto-save-file))) (vm-preview-current-message))) --- 270,274 ---- ;; not work in a presentation buffer. ! (let ((vm-auto-decode-mime-messages ! (and vm-auto-decode-mime-messages ! (not preserve-auto-save-file)))) (vm-preview-current-message))) *************** *** 341,343 **** ! This is VM 6.92. --- 344,346 ---- ! This is VM 6.93. *** dist/vm-summary.el.dist Sun Mar 11 16:08:33 2001 --- vm-summary.el Mon Mar 19 09:07:10 2001 *************** *** 802,804 **** (if (= 2 (length (vm-year-of m))) ! (vm-set-year-of m (concat "19" (vm-year-of m)))) (vm-set-hour-of m (substring date (match-beginning 6) (match-end 6))) --- 802,808 ---- (if (= 2 (length (vm-year-of m))) ! (save-match-data ! (cond ((string-match "^[0-6]" (vm-year-of m)) ! (vm-set-year-of m (concat "20" (vm-year-of m)))) ! (t ! (vm-set-year-of m (concat "19" (vm-year-of m))))))) (vm-set-hour-of m (substring date (match-beginning 6) (match-end 6))) *** dist/vm-thread.el.dist Fri May 21 01:07:45 1999 --- vm-thread.el Sat Jun 23 14:35:31 2001 *************** *** 68,70 **** (while msgs ! (setq kids (delq m kids) msgs (cdr msgs))) --- 68,70 ---- (while msgs ! (setq kids (delq (car msgs) kids) msgs (cdr msgs))) *************** *** 98,147 **** refs (cdr refs))))) - (if vm-thread-using-subject - ;; inhibit-quit because we need to make sure the asets - ;; below are an atomic group. - (let* ((inhibit-quit t) - (subject (vm-so-sortable-subject m)) - (subject-sym (intern subject vm-thread-subject-obarray))) - ;; if this subject never seen before create the - ;; information vector. - (if (not (boundp subject-sym)) - (set subject-sym - (vector id-sym (vm-so-sortable-datestring m) - nil (list m))) - ;; this subject seen before - (aset (symbol-value subject-sym) 3 - (cons m (aref (symbol-value subject-sym) 3))) - (if (string< date (aref (symbol-value subject-sym) 1)) - (let* ((vect (symbol-value subject-sym)) - (i-sym (aref vect 0))) - ;; optimization: if we know that this message - ;; already has a parent, then don't bother - ;; adding it to the list of child messages - ;; since we know that it will be threaded and - ;; unthreaded using the parent information. - (if (or (not (boundp i-sym)) - (null (symbol-value i-sym))) - (aset vect 2 (append (get i-sym 'messages) - (aref vect 2)))) - (aset vect 0 id-sym) - (aset vect 1 date) - ;; this loops _and_ recurses and I'm worried - ;; about it going into a spin someday. So I - ;; unblock interrupts here. It's not critical - ;; that it finish... the summary will just be out - ;; of sync. - (if schedule-reindents - (let ((inhibit-quit nil)) - (vm-thread-mark-for-summary-update (aref vect 2))))) - ;; optimization: if we know that this message - ;; already has a parent, then don't bother adding - ;; it to the list of child messages, since we - ;; know that it will be threaded and unthreaded - ;; using the parent information. - (if (null parent) - (aset (symbol-value subject-sym) 2 - (cons m (aref (symbol-value subject-sym) 2)))))))) (setq mp (cdr mp) n (1+ n)) (if (zerop (% n modulus)) ! (message "Building threads... %d" n))) (if (> n modulus) --- 98,158 ---- refs (cdr refs))))) (setq mp (cdr mp) n (1+ n)) (if (zerop (% n modulus)) ! (message "Building threads (by reference)... %d" n))) ! (if vm-thread-using-subject ! (progn ! (setq n 0 mp (or message-list vm-message-list)) ! (while mp ! (setq m (car mp) ! parent (vm-th-parent m) ! id (vm-su-message-id m) ! id-sym (intern id vm-thread-obarray) ! date (vm-so-sortable-datestring m)) ! ;; inhibit-quit because we need to make sure the asets ! ;; below are an atomic group. ! (let* ((inhibit-quit t) ! (subject (vm-so-sortable-subject m)) ! (subject-sym (intern subject vm-thread-subject-obarray))) ! ;; if this subject was never seen before create the ! ;; information vector. ! (if (not (boundp subject-sym)) ! (set subject-sym ! (vector id-sym (vm-so-sortable-datestring m) ! nil (list m))) ! ;; this subject seen before ! (aset (symbol-value subject-sym) 3 ! (cons m (aref (symbol-value subject-sym) 3))) ! (if (string< date (aref (symbol-value subject-sym) 1)) ! (let* ((vect (symbol-value subject-sym)) ! (i-sym (aref vect 0))) ! ;; optimization: if we know that this message ! ;; already has a parent, then don't bother ! ;; adding it to the list of child messages ! ;; since we know that it will be threaded and ! ;; unthreaded using the parent information. ! (if (or (not (boundp i-sym)) ! (null (symbol-value i-sym))) ! (aset vect 2 (append (get i-sym 'messages) ! (aref vect 2)))) ! (aset vect 0 id-sym) ! (aset vect 1 date) ! ;; this loops _and_ recurses and I'm worried ! ;; about it going into a spin someday. So I ! ;; unblock interrupts here. It's not critical ! ;; that it finish... the summary will just be out ! ;; of sync. ! (if schedule-reindents ! (let ((inhibit-quit nil)) ! (vm-thread-mark-for-summary-update (aref vect 2))))) ! ;; optimization: if we know that this message ! ;; already has a parent, then don't bother adding ! ;; it to the list of child messages, since we ! ;; know that it will be threaded and unthreaded ! ;; using the parent information. ! (if (null parent) ! (aset (symbol-value subject-sym) 2 ! (cons m (aref (symbol-value subject-sym) 2))))))) ! (setq mp (cdr mp) n (1+ n)) ! (if (zerop (% n modulus)) ! (message "Building threads (by subject)... %d" n))))) (if (> n modulus) *** dist/vm-vars.el.dist Thu Mar 1 20:17:42 2001 --- vm-vars.el Sat Jun 23 14:48:13 2001 *************** *** 153,163 **** AUTH is the authentication method used to convince the server ! you should have access to the maildrop. Acceptable values are ! \"preauth\" and \"login\". \"preauth\" causes VM to skip the ! authentication stage of the protocol with the assumption that ! the session was authenticated some externally way. The other ! value, \"login\", tells VM to use the IMAP LOGIN command for ! authentication. ! ! USER is the user name sent to the server for \"login\" style ! authentication. --- 153,169 ---- AUTH is the authentication method used to convince the server ! you should have access to the maildrop. Acceptable values ! are \"preauth\", \"login\" and \"cram-md5\". \"preauth\" ! causes VM to skip the authentication stage of the protocol ! with the assumption that the session was authenticated some ! externally way. \"login\", tells VM to use the IMAP LOGIN ! command for authentication, which sends your username and ! password in cleartext to the server. \"cram-md5\" is a ! challenge response system that convinces the server of your ! identity without transmitting your password in the clear. ! Not all servers support \"cram-md5\"; if you're not sure, ask ! your mail administrator or just try it. ! ! USER is the user name used with authentication methods that ! require such an identifier. \"login\" and \"cram-md5\" ! use it currently. *************** *** 1319,1320 **** --- 1325,1333 ---- + (defvar vm-folder-file-precious-flag t + "*Value that `file-precious-flag' should have in visited folders. + A non-nil value causes folders to be saved by writing to a + temporary file and then replacing the folder with that file. A + nil value causes folders to be saved by writing directly to the + folder without the use of a temporary file.") + (defvar vm-flush-interval 90 *************** *** 3917,3918 **** --- 3930,3932 ---- ("big5" big5) + ("koi8-r" koi8-r) ;; probably not correct, but probably better than nothing. *** dist/vm-version.el.dist Sun Mar 11 16:08:34 2001 --- vm-version.el Sat Jun 23 17:55:36 2001 *************** *** 4,6 **** ! (defconst vm-version "6.92" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "6.93" "Version number of VM.") *** dist/vm-virtual.el.dist Thu Nov 23 16:16:55 2000 --- vm-virtual.el Mon Apr 9 10:26:18 2001 *************** *** 115,116 **** --- 115,117 ---- (let ((inhibit-local-variables t) + (enable-local-eval nil) (enable-local-variables nil)) *************** *** 120,121 **** --- 121,123 ---- (let ((inhibit-local-variables t) + (enable-local-eval nil) (enable-local-variables nil))