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

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

[nongnu] elpa/go-mode 4372f5d 026/495: teach go-import-add how to uncomm


From: ELPA Syncer
Subject: [nongnu] elpa/go-mode 4372f5d 026/495: teach go-import-add how to uncomment imports
Date: Sat, 7 Aug 2021 09:04:37 -0400 (EDT)

branch: elpa/go-mode
commit 4372f5d3f9159244ceee1f7570d3ec74a214b391
Author: Dominik Honnef <dominikh@fork-bomb.org>
Commit: Dominik Honnef <dominikh@fork-bomb.org>

    teach go-import-add how to uncomment imports
---
 go-mode.el | 31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

diff --git a/go-mode.el b/go-mode.el
index 506c093..08a75b5 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -534,23 +534,40 @@ link in the kill ring."
 When called with a prefix argument asks for an alternative name
 to import the package as.
 
-If no list exists yet, one will be created if possible."
+If no list exists yet, one will be created if possible.
+
+If an identical import has been commented, it will be
+uncommented, otherwise a new import will be added."
+
+  ;; - If there's a matching `// import "foo"`, uncomment it
+  ;; - If we're in an import() block and there's a matching `"foo"`, uncomment 
it
+  ;; - Otherwise add a new import, with the appropriate syntax
   (interactive
    (list
     current-prefix-arg
     (completing-read "Package: " (go-packages))))
   (save-excursion
-    (let (as line)
+    (let (as line import-start)
       (if arg
           (setq as (read-from-minibuffer "Import as: ")))
       (if as
           (setq line (format "%s \"%s\"" as import))
         (setq line (format "\"%s\"" import)))
-      (case (go-goto-imports)
-        ('fail (message "Could not find a place to add import."))
-        ('block (insert "\n\t" line))
-        ('single (insert "import " line "\n"))
-        ('none (insert "\nimport (\n\t" line "\n)\n"))))))
+
+      (beginning-of-buffer)
+      (if (re-search-forward (concat "^// import " line "$") nil t)
+          (uncomment-region (line-beginning-position) (line-end-position))
+        (case (go-goto-imports)
+          ('fail (message "Could not find a place to add import."))
+          ('block
+              (save-excursion
+                (re-search-backward "^import (")
+                (setq import-start (point)))
+            (if (re-search-backward (concat "^[[:space:]]+// " line "$")  
import-start t)
+                (uncomment-region (line-beginning-position) 
(line-end-position))
+              (insert "\n\t" line)))
+          ('single (insert "import " line "\n"))
+          ('none (insert "\nimport (\n\t" line "\n)\n")))))))
 
 (defun go--directory-dirs (dir)
   (if (file-directory-p dir)



reply via email to

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