[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/go-mode 0a570b1 014/495: use `go env` to determine goroot
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/go-mode 0a570b1 014/495: use `go env` to determine goroot and gopath, support multiple gopath entries and skip over ones with no pkg dir |
Date: |
Sat, 7 Aug 2021 09:04:34 -0400 (EDT) |
branch: elpa/go-mode
commit 0a570b15f1ce8e3989c117ecb1d92dc5622f4c72
Author: Dominik Honnef <dominikh@fork-bomb.org>
Commit: Dominik Honnef <dominikh@fork-bomb.org>
use `go env` to determine goroot and gopath, support multiple gopath
entries and skip over ones with no pkg dir
---
go-mode.el | 62 ++++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 36 insertions(+), 26 deletions(-)
diff --git a/go-mode.el b/go-mode.el
index 82dea67..ee7eabf 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -553,19 +553,19 @@ If no list exists yet, one will be created if possible."
('none (insert "\nimport (\n\t" line "\n)\n"))))))
(defun go-directory-dirs (dir)
- (unless (file-directory-p dir)
- (error "Not a directory `%s'" dir))
- (let ((dir (directory-file-name dir))
- (dirs '())
- (files (directory-files dir nil nil t)))
- (dolist (file files)
- (unless (member file '("." ".."))
- (let ((file (concat dir "/" file)))
- (when (file-directory-p file)
- (setq dirs (append (cons file
- (go-directory-dirs file))
- dirs))))))
- dirs))
+ (if (file-directory-p dir)
+ (let ((dir (directory-file-name dir))
+ (dirs '())
+ (files (directory-files dir nil nil t)))
+ (dolist (file files)
+ (unless (member file '("." ".."))
+ (let ((file (concat dir "/" file)))
+ (when (file-directory-p file)
+ (setq dirs (append (cons file
+ (go-directory-dirs file))
+ dirs))))))
+ dirs)
+ '()))
(defun go-flatten (lst)
(if (atom lst)
@@ -587,20 +587,30 @@ If no list exists yet, one will be created if possible."
(list item)
nil))))))
+(defun go-root-and-paths ()
+ (let* ((output (process-lines "go" "env" "GOROOT" "GOPATH"))
+ (root (car output))
+ (paths (split-string (car (cdr output)) ":")))
+ (append (list root) paths)))
+
(defun go-packages ()
- (sort (delete-dups (go-flatten (mapcar (lambda (topdir)
- (let ((pkgdir (concat topdir "/pkg/")))
- (mapcar (lambda (dir)
- (mapcar (lambda (file)
- (let ((sub (substring file (length
pkgdir) -2)))
- (unless (or (string-prefix-p
"obj/" sub) (string-prefix-p "tool/" sub))
- (mapconcat 'identity (cdr
(split-string sub "/")) "/")
- )
- ))
- (directory-files dir t "\\.a$")))
- (go-directory-dirs pkgdir))
- ))
- (list (getenv "GOROOT") (getenv "GOPATH"))))) 'string<))
+ (sort
+ (delete-dups
+ (go-flatten
+ (mapcar
+ (lambda (topdir)
+ (let ((pkgdir (concat topdir "/pkg/")))
+ (mapcar (lambda (dir)
+ (mapcar (lambda (file)
+ (let ((sub (substring file (length pkgdir) -2)))
+ (unless (or (string-prefix-p "obj/" sub)
(string-prefix-p "tool/" sub))
+ (mapconcat 'identity (cdr (split-string sub
"/")) "/")
+ )
+ ))
+ (if (file-directory-p dir)
+ (directory-files dir t "\\.a$"))))
+ (go-directory-dirs pkgdir))))
+ (go-root-and-paths)))) 'string<))
(provide 'go-mode)
- [nongnu] elpa/go-mode 366ada1 011/495: add tab completion for go-import-add, (continued)
- [nongnu] elpa/go-mode 366ada1 011/495: add tab completion for go-import-add, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 9536e6b 010/495: go-import-add, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode fd0c117 012/495: move list of improvements to readme, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode ca48fc5 009/495: add return values to go-goto-imports that tell which kind of import has been jumped to, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode db41787 015/495: if line has been indented with spaces, replace them with tabs, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode d942d4f 013/495: add links to further extensions for editting go in emacs, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 5af4f4d 019/495: mention imenu in readme, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 4f3befb 003/495: add go-play-buffer and go-play-region, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 61467ee 004/495: add readme, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 2835258 007/495: support `import foo "bar"` syntax in go-goto-imports, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 0a570b1 014/495: use `go env` to determine goroot and gopath, support multiple gopath entries and skip over ones with no pkg dir,
ELPA Syncer <=
- [nongnu] elpa/go-mode 6ccd9b9 017/495: Revert "if line has been indented with spaces, replace them with tabs", ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 492e065 018/495: note in readme that old go-mode will interfere with this one, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 26759b9 027/495: support unused import detection for *_test.go files, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7fb4e67 023/495: Support methods in beginning-of-defun and end-of-defun, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 6da1af6 031/495: use goto-char instead of beginning-of-buffer, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 52914d5 039/495: Correctly indent next line if raw string is following an operator, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode ca3050a 045/495: temporarily disable flymake-mode in go-remove-unused-imports, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 445d10d 032/495: do not use goto-line but forward-line instead, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7751f22 040/495: add test cases for indentation, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 27f6fb0 047/495: improve indentation routine by jumping around less, ELPA Syncer, 2021/08/07