home

My NixOS systems configurations.
Log | Files | Refs | LICENSE

commit 82beefa56e3eedec682ffbc26cd6a9cb4bcb6f58
parent 7ca379c46ebe9137aadfca7d6d4066de088eec25
Author: Vincent Demeester <vincent@sbr.pm>
Date:   Mon,  5 Aug 2024 09:40:00 +0200

tools/emacs: fix run-command-recipe-go

Do not fail if we are in a virtual buffer (dired, …). In that case,
`(buffer-file-name)` is nil, so we shoud ignore.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Diffstat:
Mtools/emacs/config/programming-go.el | 92++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 47 insertions(+), 45 deletions(-)

diff --git a/tools/emacs/config/programming-go.el b/tools/emacs/config/programming-go.el @@ -43,52 +43,54 @@ (defun run-command-recipe-go () "Go `run-command' recipes." - (let* ((dir (vde-project--project-root-or-default-directory)) - (package (file-name-directory (concat "./"(file-relative-name (buffer-file-name) dir))))) - (when (or (go-mode-p) (file-exists-p (expand-file-name "go.mod" dir))) - (append - (and (buffer-file-name) (go-mode-p) - (list - (list :command-name "gofumpt" - :command-line (concat "gofumpt -extra -w " (buffer-file-name)) - :working-dir dir - :display "gofumpt (reformat) file") - (list :command-name "go-fmt" - :command-line (concat "go fmt " (buffer-file-name)) - :working-dir dir - :display "gofmt (reformat) file") - (list :command-name "go-run" - :command-line (concat "go run " (buffer-file-name)) - :working-dir dir - :display "Compile, execute file"))) - (and (string-suffix-p "_test.go" buffer-file-name) (go-mode-p) - (list - (let ((runArgs (go-test--get-current-file-tests))) - ;; go test current test - ;; go test current file - (list :command-name "go-test-file" - :command-line (concat "go test -v " package " -run " (shell-quote-argument runArgs)) + (when (buffer-file-name) ;; no buffer-file-name means virtual buffer (dired, …) + + (let* ((dir (vde-project--project-root-or-default-directory)) + (package (file-name-directory (concat "./" (file-relative-name (buffer-file-name) dir))))) + (when (or (go-mode-p) (file-exists-p (expand-file-name "go.mod" dir))) + (append + (and (buffer-file-name) (go-mode-p) + (list + (list :command-name "gofumpt" + :command-line (concat "gofumpt -extra -w " (buffer-file-name)) :working-dir dir - :display (concat "Test file " (concat "./"(file-relative-name (buffer-file-name) dir))) - :runner 'run-command-runner-compile) - ))) - ;; TODO: handle test file as well - (list - (list :command-name "go-build-project" - :command-line "go build -v ./..." - :working-dir dir - :display "compile package and dependencies" - :runner 'run-command-runner-compile) - (list :command-name "go-test-project" - :command-line "go test ./..." - :working-dir dir - :display "test all" - :runner 'run-command-runner-compile) - (list :command-name "go-test-package" - :command-line (concat "go test -v " package) - :working-dir dir - :display (concat "Test package " package) - :runner 'run-command-runner-compile)))))) + :display "gofumpt (reformat) file") + (list :command-name "go-fmt" + :command-line (concat "go fmt " (buffer-file-name)) + :working-dir dir + :display "gofmt (reformat) file") + (list :command-name "go-run" + :command-line (concat "go run " (buffer-file-name)) + :working-dir dir + :display "Compile, execute file"))) + (and (string-suffix-p "_test.go" buffer-file-name) (go-mode-p) + (list + (let ((runArgs (go-test--get-current-file-tests))) + ;; go test current test + ;; go test current file + (list :command-name "go-test-file" + :command-line (concat "go test -v " package " -run " (shell-quote-argument runArgs)) + :working-dir dir + :display (concat "Test file " (concat "./"(file-relative-name (buffer-file-name) dir))) + :runner 'run-command-runner-compile) + ))) + ;; TODO: handle test file as well + (list + (list :command-name "go-build-project" + :command-line "go build -v ./..." + :working-dir dir + :display "compile package and dependencies" + :runner 'run-command-runner-compile) + (list :command-name "go-test-project" + :command-line "go test ./..." + :working-dir dir + :display "test all" + :runner 'run-command-runner-compile) + (list :command-name "go-test-package" + :command-line (concat "go test -v " package) + :working-dir dir + :display (concat "Test package " package) + :runner 'run-command-runner-compile))))))) (with-eval-after-load 'run-command (add-to-list 'run-command-recipes 'run-command-recipe-go))