]> git.eshelyaron.com Git - emacs.git/commitdiff
(lm-with-file): Don't visit the file,
authorRichard M. Stallman <rms@gnu.org>
Mon, 22 Sep 2003 15:23:53 +0000 (15:23 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 22 Sep 2003 15:23:53 +0000 (15:23 +0000)
just use insert-file-contents in temp buffer.

(lm-get-header-re): Added surrounding \\( and \\) around the header,
as in for lm-history-header 'Change Log\\|History'.

lisp/emacs-lisp/lisp-mnt.el

index d85934426204a48ae7ef8c328b54fecf136036f8..893d95db05c2cf6085ce814a90df1459a84d661b 100644 (file)
@@ -180,8 +180,8 @@ Leading comment characters and whitespace should be in regexp group 1."
 If called with optional MODE and with value `section',
 return section regexp instead."
   (if (eq mode 'section)
-      (concat "^;;;;* " header ":[ \t]*$")
-    (concat lm-header-prefix header "[ \t]*:[ \t]*")))
+      (concat "^;;;;* \\(" header "\\):[ \t]*$")
+    (concat lm-header-prefix "\\(" header "\\)[ \t]*:[ \t]*")))
 
 (defun lm-get-package-name ()
   "Return package name by looking at the first line."
@@ -296,15 +296,14 @@ The returned value is a list of strings, one per line."
 ;; These give us smart access to the header fields and commentary
 
 (defmacro lm-with-file (file &rest body)
-  "Make a buffer with FILE current, and execute BODY.
-If FILE isn't in a buffer, load it in, and kill it after BODY is executed."
+  "Execute BODY in a buffer containing the contents of FILE.
+If FILE is nil, just return nil."
   (let ((filesym (make-symbol "file")))
-    `(save-excursion
-       (let ((,filesym ,file))
-        (if ,filesym (set-buffer (find-file-noselect ,filesym)))
-        (prog1 (progn ,@body)
-          (if (and ,filesym (not (get-buffer-window (current-buffer) t)))
-              (kill-buffer (current-buffer))))))))
+    `(let ((,filesym ,file))
+       (when ,filesym 
+        (with-temp-buffer
+          (insert-file-contents ,filesym)
+          ,@body)))))
 (put 'lm-with-file 'lisp-indent-function 1)
 (put 'lm-with-file 'edebug-form-spec t)