emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r113642: * lisp/files.el: Use lexical-binding.


From: Stefan Monnier
Subject: [Emacs-diffs] trunk r113642: * lisp/files.el: Use lexical-binding.
Date: Thu, 01 Aug 2013 23:18:45 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113642
revision-id: address@hidden
parent: address@hidden
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Thu 2013-08-01 19:18:37 -0400
message:
  * lisp/files.el: Use lexical-binding.
  (dir-locals-read-from-file): Remove unused `err' variable.
  (hack-dir-local-variables--warned-coding): New var.
  (hack-dir-local-variables): Use it to avoid repeated warnings.
  (make-backup-file-name--default-function): New function.
  (make-backup-file-name-function): Use it as default.
  (buffer-stale--default-function): New function.
  (buffer-stale-function): Use it as default.
  (revert-buffer-insert-file-contents--default-function): New function.
  (revert-buffer-insert-file-contents-function): Use it as default.
  (insert-directory): Avoid add-to-list.
  * lisp/autorevert.el (auto-revert-handler): Simplify.
  Use buffer-stale--default-function.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/autorevert.el             
autorevert.el-20091113204419-o5vbwnq5f7feedwu-1197
  lisp/files.el                  files.el-20091113204419-o5vbwnq5f7feedwu-265
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-08-01 22:53:03 +0000
+++ b/lisp/ChangeLog    2013-08-01 23:18:37 +0000
@@ -1,3 +1,20 @@
+2013-08-01  Stefan Monnier  <address@hidden>
+
+       * files.el: Use lexical-binding.
+       (dir-locals-read-from-file): Remove unused `err' variable.
+       (hack-dir-local-variables--warned-coding): New var.
+       (hack-dir-local-variables): Use it to avoid repeated warnings.
+       (make-backup-file-name--default-function): New function.
+       (make-backup-file-name-function): Use it as default.
+       (buffer-stale--default-function): New function.
+       (buffer-stale-function): Use it as default.
+       (revert-buffer-insert-file-contents--default-function): New function.
+       (revert-buffer-insert-file-contents-function): Use it as default.
+       (insert-directory): Avoid add-to-list.
+
+       * autorevert.el (auto-revert-handler): Simplify.
+       Use buffer-stale--default-function.
+
 2013-08-01  Tassilo Horn  <address@hidden>
 
        * speedbar.el (speedbar-query-confirmation-method): Doc fix.

=== modified file 'lisp/autorevert.el'
--- a/lisp/autorevert.el        2013-07-24 13:29:15 +0000
+++ b/lisp/autorevert.el        2013-08-01 23:18:37 +0000
@@ -595,14 +595,14 @@
                                  (setq size
                                        (nth 7 (file-attributes
                                                buffer-file-name)))))
-                      (and (file-readable-p buffer-file-name)
-                           (not (verify-visited-file-modtime buffer)))))
+                      (funcall (or buffer-stale-function
+                                    #'buffer-stale--default-function)
+                                t)))
                (and (or auto-revert-mode
                         global-auto-revert-non-file-buffers)
-                    revert-buffer-function
-                    (boundp 'buffer-stale-function)
-                    (functionp buffer-stale-function)
-                    (funcall buffer-stale-function t))))
+                    (funcall (or buffer-stale-function
+                                  #'buffer-stale--default-function)
+                              t))))
           eob eoblist)
       (setq auto-revert-notify-modified-p nil)
       (when revert

=== modified file 'lisp/files.el'
--- a/lisp/files.el     2013-07-31 06:52:26 +0000
+++ b/lisp/files.el     2013-08-01 23:18:37 +0000
@@ -1,4 +1,4 @@
-;;; files.el --- file input and output commands for Emacs
+;;; files.el --- file input and output commands for Emacs  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1985-1987, 1992-2013 Free Software Foundation, Inc.
 
@@ -3645,20 +3645,19 @@
   (with-temp-buffer
     ;; This is with-demoted-errors, but we want to mention dir-locals
     ;; in any error message.
-    (let (err)
-      (condition-case err
-         (progn
-           (insert-file-contents file)
-           (unless (zerop (buffer-size))
-             (let* ((dir-name (file-name-directory file))
-                    (class-name (intern dir-name))
-                    (variables (let ((read-circle nil))
-                                 (read (current-buffer)))))
-               (dir-locals-set-class-variables class-name variables)
-               (dir-locals-set-directory-class dir-name class-name
-                                               (nth 5 (file-attributes file)))
-               class-name)))
-       (error (message "Error reading dir-locals: %S" err) nil)))))
+    (condition-case err
+        (progn
+          (insert-file-contents file)
+          (unless (zerop (buffer-size))
+            (let* ((dir-name (file-name-directory file))
+                   (class-name (intern dir-name))
+                   (variables (let ((read-circle nil))
+                                (read (current-buffer)))))
+              (dir-locals-set-class-variables class-name variables)
+              (dir-locals-set-directory-class dir-name class-name
+                                              (nth 5 (file-attributes file)))
+              class-name)))
+      (error (message "Error reading dir-locals: %S" err) nil))))
 
 (defcustom enable-remote-dir-locals nil
   "Non-nil means dir-local variables will be applied to remote files."
@@ -3666,6 +3665,8 @@
   :type 'boolean
   :group 'find-file)
 
+(defvar hack-dir-local-variables--warned-coding nil)
+
 (defun hack-dir-local-variables ()
   "Read per-directory local variables for the current buffer.
 Store the directory-local variables in `dir-local-variables-alist'
@@ -3697,8 +3698,10 @@
          (when variables
            (dolist (elt variables)
              (if (eq (car elt) 'coding)
-                 (display-warning :warning
-                                  "Coding cannot be specified by dir-locals")
+                  (unless hack-dir-local-variables--warned-coding
+                    (setq hack-dir-local-variables--warned-coding t)
+                    (display-warning :warning
+                                     "Coding cannot be specified by 
dir-locals"))
                (unless (memq (car elt) '(eval mode))
                  (setq dir-local-variables-alist
                        (assq-delete-all (car elt) dir-local-variables-alist)))
@@ -4145,9 +4148,9 @@
   (file-name-sans-extension
    (file-name-nondirectory (or filename (buffer-file-name)))))
 
-(defcustom make-backup-file-name-function nil
+(defcustom make-backup-file-name-function
+  #'make-backup-file-name--default-function
   "A function to use instead of the default `make-backup-file-name'.
-A value of nil gives the default `make-backup-file-name' behavior.
 
 This could be buffer-local to do something special for specific
 files.  If you define it, you may need to change `backup-file-name-p'
@@ -4155,8 +4158,7 @@
 
 See also `backup-directory-alist'."
   :group 'backup
-  :type '(choice (const :tag "Default" nil)
-                (function :tag "Your function")))
+  :type '(function :tag "Your function"))
 
 (defcustom backup-directory-alist nil
   "Alist of filename patterns and backup directory names.
@@ -4216,24 +4218,26 @@
 Normally this will just be the file's name with `~' appended.
 Customization hooks are provided as follows.
 
-If the variable `make-backup-file-name-function' is non-nil, its value
-should be a function which will be called with FILE as its argument;
-the resulting name is used.
+The value of `make-backup-file-name-function' should be a function which
+will be called with FILE as its argument; the resulting name is used.
 
-Otherwise a match for FILE is sought in `backup-directory-alist'; see
+By default, a match for FILE is sought in `backup-directory-alist'; see
 the documentation of that variable.  If the directory for the backup
 doesn't exist, it is created."
-  (if make-backup-file-name-function
-      (funcall make-backup-file-name-function file)
-    (if (and (eq system-type 'ms-dos)
-            (not (msdos-long-file-names)))
-       (let ((fn (file-name-nondirectory file)))
-         (concat (file-name-directory file)
-                 (or (and (string-match "\\`[^.]+\\'" fn)
-                          (concat (match-string 0 fn) ".~"))
-                     (and (string-match "\\`[^.]+\\.\\(..?\\)?" fn)
-                          (concat (match-string 0 fn) "~")))))
-      (concat (make-backup-file-name-1 file) "~"))))
+  (funcall (or make-backup-file-name-function
+               #'make-backup-file-name--default-function)
+           file))
+
+(defun make-backup-file-name--default-function (file)
+  (if (and (eq system-type 'ms-dos)
+           (not (msdos-long-file-names)))
+      (let ((fn (file-name-nondirectory file)))
+        (concat (file-name-directory file)
+                (or (and (string-match "\\`[^.]+\\'" fn)
+                         (concat (match-string 0 fn) ".~"))
+                    (and (string-match "\\`[^.]+\\.\\(..?\\)?" fn)
+                         (concat (match-string 0 fn) "~")))))
+    (concat (make-backup-file-name-1 file) "~")))
 
 (defun make-backup-file-name-1 (file)
   "Subroutine of `make-backup-file-name' and `find-backup-file-name'."
@@ -5254,14 +5258,20 @@
 via the `revert-buffer-preserve-modes' dynamic variable.")
 
 (put 'revert-buffer-insert-file-contents-function 'permanent-local t)
-(defvar revert-buffer-insert-file-contents-function nil
+(defvar revert-buffer-insert-file-contents-function
+  #'revert-buffer-insert-file-contents--default-function
   "Function to use to insert contents when reverting this buffer.
 Gets two args, first the nominal file name to use,
 and second, t if reading the auto-save file.
 
 The function you specify is responsible for updating (or preserving) point.")
 
-(defvar buffer-stale-function nil
+(defun buffer-stale--default-function (&optional _noconfirm)
+  (and buffer-file-name
+       (file-readable-p buffer-file-name)
+       (not (verify-visited-file-modtime (current-buffer)))))
+
+(defvar buffer-stale-function #'buffer-stale--default-function
   "Function to check whether a non-file buffer needs reverting.
 This should be a function with one optional argument NOCONFIRM.
 Auto Revert Mode passes t for NOCONFIRM.  The function should return
@@ -5382,62 +5392,11 @@
                    (local-hook (when (local-variable-p 'after-revert-hook)
                                  after-revert-hook))
                    (inhibit-read-only t))
-               (cond
-                (revert-buffer-insert-file-contents-function
-                 (unless (eq buffer-undo-list t)
-                   ;; Get rid of all undo records for this buffer.
-                   (setq buffer-undo-list nil))
-                 ;; Don't make undo records for the reversion.
-                 (let ((buffer-undo-list t))
-                   (funcall revert-buffer-insert-file-contents-function
-                            file-name auto-save-p)))
-                ((not (file-exists-p file-name))
-                 (error (if buffer-file-number
-                            "File %s no longer exists!"
-                          "Cannot revert nonexistent file %s")
-                        file-name))
-                ((not (file-readable-p file-name))
-                 (error (if buffer-file-number
-                            "File %s no longer readable!"
-                          "Cannot revert unreadable file %s")
-                        file-name))
-                (t
-                 ;; Bind buffer-file-name to nil
-                 ;; so that we don't try to lock the file.
-                 (let ((buffer-file-name nil))
-                   (or auto-save-p
-                       (unlock-buffer)))
-                 (widen)
-                 (let ((coding-system-for-read
-                        ;; Auto-saved file should be read by Emacs's
-                        ;; internal coding.
-                        (if auto-save-p 'auto-save-coding
-                          (or coding-system-for-read
-                              (and
-                               buffer-file-coding-system-explicit
-                               (car buffer-file-coding-system-explicit))))))
-                   (if (and (not enable-multibyte-characters)
-                            coding-system-for-read
-                            (not (memq (coding-system-base
-                                        coding-system-for-read)
-                                       '(no-conversion raw-text))))
-                       ;; As a coding system suitable for multibyte
-                       ;; buffer is specified, make the current
-                       ;; buffer multibyte.
-                       (set-buffer-multibyte t))
-
-                   ;; This force after-insert-file-set-coding
-                   ;; (called from insert-file-contents) to set
-                   ;; buffer-file-coding-system to a proper value.
-                   (kill-local-variable 'buffer-file-coding-system)
-
-                   ;; Note that this preserves point in an intelligent way.
-                   (if revert-buffer-preserve-modes
-                       (let ((buffer-file-format buffer-file-format))
-                         (insert-file-contents file-name (not auto-save-p)
-                                               nil nil t))
-                     (insert-file-contents file-name (not auto-save-p)
-                                           nil nil t)))))
+               ;; FIXME: Throw away undo-log when preserve-modes is nil?
+               (funcall
+                (or revert-buffer-insert-file-contents-function
+                    #'revert-buffer-insert-file-contents--default-function)
+                file-name auto-save-p)
                ;; Recompute the truename in case changes in symlinks
                ;; have changed the truename.
                (setq buffer-file-truename
@@ -5452,6 +5411,56 @@
                (run-hooks 'revert-buffer-internal-hook))
              t)))))
 
+(defun revert-buffer-insert-file-contents--default-function (file-name 
auto-save-p)
+  (cond
+   ((not (file-exists-p file-name))
+    (error (if buffer-file-number
+               "File %s no longer exists!"
+             "Cannot revert nonexistent file %s")
+           file-name))
+   ((not (file-readable-p file-name))
+    (error (if buffer-file-number
+               "File %s no longer readable!"
+             "Cannot revert unreadable file %s")
+           file-name))
+   (t
+    ;; Bind buffer-file-name to nil
+    ;; so that we don't try to lock the file.
+    (let ((buffer-file-name nil))
+      (or auto-save-p
+          (unlock-buffer)))
+    (widen)
+    (let ((coding-system-for-read
+           ;; Auto-saved file should be read by Emacs's
+           ;; internal coding.
+           (if auto-save-p 'auto-save-coding
+             (or coding-system-for-read
+                 (and
+                  buffer-file-coding-system-explicit
+                  (car buffer-file-coding-system-explicit))))))
+      (if (and (not enable-multibyte-characters)
+               coding-system-for-read
+               (not (memq (coding-system-base
+                           coding-system-for-read)
+                          '(no-conversion raw-text))))
+          ;; As a coding system suitable for multibyte
+          ;; buffer is specified, make the current
+          ;; buffer multibyte.
+          (set-buffer-multibyte t))
+
+      ;; This force after-insert-file-set-coding
+      ;; (called from insert-file-contents) to set
+      ;; buffer-file-coding-system to a proper value.
+      (kill-local-variable 'buffer-file-coding-system)
+
+      ;; Note that this preserves point in an intelligent way.
+      (if revert-buffer-preserve-modes
+          (let ((buffer-file-format buffer-file-format))
+            (insert-file-contents file-name (not auto-save-p)
+                                  nil nil t))
+        (insert-file-contents file-name (not auto-save-p)
+                              nil nil t))))))
+
 (defun recover-this-file ()
   "Recover the visited file--get contents from its last auto-save file."
   (interactive)
@@ -6204,9 +6213,10 @@
                    ;; directory if FILE is a symbolic link.
                    (unless full-directory-p
                      (setq switches
-                           (if (stringp switches)
-                               (concat switches " -d")
-                             (add-to-list 'switches "-d" 'append))))
+                           (cond
+                             ((stringp switches) (concat switches " -d"))
+                             ((member "-d" switches) switches)
+                             (t (append switches '("-d"))))))
                    (apply 'call-process
                           insert-directory-program nil t nil
                           (append


reply via email to

[Prev in Thread] Current Thread [Next in Thread]