diff --git a/modules/languages/siren-golang.el b/modules/languages/siren-golang.el index 54afa89..9aeece6 100644 --- a/modules/languages/siren-golang.el +++ b/modules/languages/siren-golang.el @@ -81,9 +81,14 @@ :init (defun siren-lsp-go-mode-setup () + (setq-local siren-lsp-format-buffer-func 'siren-lsp-go-format-buffer) (lsp-format-buffer-on-save-mode t) (lsp-organize-imports-on-save-mode t) - (lsp-deferred))) + (lsp-deferred)) + + (defun siren-lsp-go-format-buffer () + (lsp-format-buffer) + (golines-format-buffer))) (use-package go-dlv :defer t) diff --git a/modules/lsp/siren-lsp.el b/modules/lsp/siren-lsp.el index f03a563..5ae0a9d 100644 --- a/modules/lsp/siren-lsp.el +++ b/modules/lsp/siren-lsp.el @@ -9,7 +9,7 @@ (use-package lsp-mode :bind (:map lsp-mode-map ("C-c C-." . lsp-rename) - ("C-c C-f" . lsp-format-buffer)) + ("C-c C-f" . siren-lsp-format-buffer)) :commands lsp @@ -52,6 +52,16 @@ (setq-local company-idle-delay 0.1 company-minimum-prefix-length 1)) + ;; Allow overriding manual buffer formatting triggered by C-c C-f. Typically + ;; this will be used to perform additional formatting steps not performed by + ;; default via the on-safe hook. + (defvar-local siren-lsp-format-buffer-func nil) + (defun siren-lsp-format-buffer () + (interactive) + (if siren-lsp-format-buffer-func + (apply siren-lsp-format-buffer-func nil) + (lsp-format-buffer))) + :config (define-minor-mode lsp-format-buffer-on-save-mode "Run lsp-format-buffer as a before-save-hook."