]> git.eshelyaron.com Git - emacs.git/commitdiff
Follow symlink in Eshell history
authorPhilip Hudson <phil.hudson@iname.com>
Wed, 21 Nov 2018 23:09:16 +0000 (23:09 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 8 Dec 2018 09:03:44 +0000 (11:03 +0200)
* lisp/eshell/em-hist.el (eshell-write-history): Follow
symlinks in 'eshell-history-file-name'.  (Bug#33460)

lisp/eshell/em-hist.el

index 62e2f57d0fd5374aa83a96b74c0344ef4fdda39c..f866dfd7276b3f27901c5ae34a95a4ac6424ad1f 100644 (file)
@@ -466,15 +466,16 @@ lost if `eshell-history-ring' is not empty.  If
 Useful within process sentinels.
 
 See also `eshell-read-history'."
-  (let ((file (or filename eshell-history-file-name)))
+  (let* ((file (or filename eshell-history-file-name))
+        (resolved-file (file-truename file)))
     (cond
      ((or (null file)
          (equal file "")
          (null eshell-history-ring)
          (ring-empty-p eshell-history-ring))
       nil)
-     ((not (file-writable-p file))
-      (message "Cannot write history file %s" file))
+     ((not (file-writable-p resolved-file))
+      (message "Cannot write history file %s" resolved-file))
      (t
       (let* ((ring eshell-history-ring)
             (index (ring-length ring)))
@@ -489,7 +490,7 @@ See also `eshell-read-history'."
               (insert (substring-no-properties (ring-ref ring index)) ?\n)
              (subst-char-in-region start (1- (point)) ?\n ?\177)))
          (eshell-with-private-file-modes
-          (write-region (point-min) (point-max) file append
+          (write-region (point-min) (point-max) resolved-file append
                         'no-message))))))))
 
 (defun eshell-list-history ()