emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/jumpc 5b088fd 2/3: jumpc version 3, handle deleted file


From: Stefan Monnier
Subject: [elpa] externals/jumpc 5b088fd 2/3: jumpc version 3, handle deleted files
Date: Tue, 1 Dec 2020 16:10:01 -0500 (EST)

branch: externals/jumpc
commit 5b088fd26523178424684aea8b05fd3f8823ab22
Author: Ivan Kanis <ivan@kanis.fr>
Commit: Ivan Kanis <ivan@kanis.fr>

    jumpc version 3, handle deleted files
---
 jumpc.el | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/jumpc.el b/jumpc.el
index ecbc5e1..bf28d0c 100644
--- a/jumpc.el
+++ b/jumpc.el
@@ -2,8 +2,8 @@
 
 ;; Copyright (C) 2013  Free Software Foundation, Inc.
 
-;; Author: Ivan Kanis <banana@kanis.fr>
-;; Version: 2.0
+;; Author: Ivan Kanis <ivan@kanis.fr>
+;; Version: 3.0
 
 ;; This file is part of GNU Emacs.
 
@@ -97,10 +97,14 @@
 ;; version 1
 
 ;; version 2
+;;  - don't force vim key bindings
 ;;  - remove debugging message
 ;;  - insert a jump moves the index back to top of list
 ;;  - insert jumps goes back to top of list
 
+;; version 3
+;;  - remove deleted files
+
 ;;; Code:
 
 (defvar jumpc-file "~/.viminfo"
@@ -131,6 +135,7 @@
 (defun jumpc-write-list ()
   "Write jump list to file."
   (let (bgn end)
+    (jumpc-remove-deleted-file)
     (find-file jumpc-file)
     (goto-char (point-min))
     (setq bgn (re-search-forward "# Jumplist (newest first):" nil t))
@@ -161,6 +166,7 @@
 ;; TODO make it interactive with COUNT as argument
 (defun jumpc-jump (count)
   "Jump COUNT from current index."
+  (jumpc-remove-deleted-file)
   (let ((length (length jumpc-list)) file-name)
     ;; first backward motion adds current point in the list
     (when (and (> count 0) (= jumpc-index 0))
@@ -174,15 +180,10 @@
       (setq jumpc-index length))
      (t
       (setq file-name (nth 2 (nth jumpc-index jumpc-list)))
-      (if (file-exists-p file-name)
-          (progn
-            (find-file file-name)
-            (goto-char (point-min))
-            (forward-line (1- (nth 0 (nth jumpc-index jumpc-list))))
-            (move-to-column (nth 0 (nth jumpc-index jumpc-list))))
-        ;; TODO I guess the right thing(tm) would be to remove the
-        ;; entry from the list
-        (message "File %s disappeared!" file-name))))))
+      (find-file file-name)
+      (goto-char (point-min))
+      (forward-line (1- (nth 0 (nth jumpc-index jumpc-list))))
+      (move-to-column (nth 0 (nth jumpc-index jumpc-list)))))))
 
 (defun jumpc-insert ()
   "Insert jump location."
@@ -194,6 +195,19 @@
             (cons (list (line-number-at-pos) (current-column) buffer-file-name)
                   jumpc-list)))))
 
+(defun jumpc-remove-deleted-file ()
+  "Remove deleted file in the list.
+Returns list minus deleted files."
+  (let ((length (length jumpc-list))
+        (index 0)
+        reduced-list element)
+    (while (< index length)
+      (setq element (nth index jumpc-list))
+      (when (file-exists-p (nth 2 element))
+        (setq reduced-list (cons element reduced-list)))
+      (setq index (1+ index)))
+    (setq jumpc-list reduced-list)))
+
 (defun jumpc-bind-vim-key ()
   "Bind keys just like vim."
   (global-set-key (kbd "C-o") 'jumpc-jump-backward)



reply via email to

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