blob: f512a78c654345102de8fd8a98b8160ed3ef870e (
plain) (
tree)
|
|
;;; my-prog.el --- Configures emacs for various programming languages
;;; Commentary:
;;; Code:
(require 'use-package)
(use-package man
:custom
(Man-notify-method 'aggressive)
(Man-fontify-manpage-flag t))
(use-package compile
:ensure nil
:custom
(compilation-scroll-output t)
;; Skip over warnings and info messages in compilation
(compilation-skip-threshold 2)
;; Don't freeze when process reads from stdin
(compilation-disable-input t)
;; Show three lines of context around the current message
(compilation-context-lines 3))
(use-package flymake
:ensure nil
:hook ((prog-mode . flymake-mode)
(conf-mode . flymake-mode))
:bind (:map flymake-mode-map (("C-c ! s" . flymake-start)
("C-c ! d" . flymake-show-buffer-diagnostics)
("C-c ! n" . flymake-goto-next-error)
("C-c ! p" . flymake-goto-prev-error)))
:custom
(elisp-flymake-byte-compile-load-path load-path))
;; yasnippet is required to support place holders with eglot
(use-package yasnippet
:ensure t
:hook
((prog-mode org-mode dap-ui-repl-mode conf-mode) . yas-minor-mode)
:init
(setq yas-snippet-dirs (list (expand-file-name "etc/snippets" user-emacs-directory)))
:config
(yas-reload-all))
(use-package auto-fill
:hook (prog-mode . auto-fill-mode)
:custom
;; this does not seem to work ..
(comment-fill-column 80)
(comment-auto-fill-only-comments t))
(use-package lispy
:ensure t
:config
(dolist (hook '(emacs-lisp-mode-hook))
(add-hook hook #'lispy-mode)))
(use-package eldoc
:ensure nil
:hook
((prog-mode conf-mode) . eldoc-mode)
:bind ("C-c C-h" . eldoc))
(use-package eglot
:after (yasnippet)
:commands (eglot eglot-ensure)
:ensure t
:bind (:map eglot-mode-map
("C-c C-r" . eglot-rename)
("C-c C-a" . eglot-code-actions))
:hook ((go-mode . eglot-ensure)
(nix-mode . eglot-ensure)
(eglot-managed-mode-hook . turn-on-eldoc-mode))
:init
(setq-default eglot-workspace-configuration
;; List of settings for gopls:
;; https://github.com/golang/tools/blob/master/gopls/doc/settings.md
'((:gopls .
((staticcheck . t)
(matcher . "CaseSensitive")
(usePlaceholders . t))))))
(use-package sh-script
:mode ("bashrc" . sh-mode)
:hook (after-save . executable-make-buffer-file-executable-if-script-p)
:config
(setq-default sh-indentation 2
sh-basic-offset 2))
(use-package python
:mode (("\\.py$" . python-mode))
:commands python-mode
:hook ((python-mode . eldoc-mode))
:custom (python-indent-offset 2))
(use-package make-mode
:config
(add-hook 'makefile-mode-hook (lambda () (setq-local tab-width 2))))
(use-package go-mode
:after (eglot)
:ensure t
:hook ((before-save . gofmt-before-save))
:bind (:map go-mode-map
("C-c C-n" . go-run)
("C-c C-c" . go-coverage)
("C-c ." . go-test-current-test)
("C-c C-f" . go-test-current-file)
("C-c C-p" . go-test-current-project))
:commands (go-run
go-coverage
go-test-current-test
go-test-current-file
go-test-current-project)
:custom
(tab-width 4))
(use-package gotest
:ensure t
:after (go-mode)
:custom
(go-test-verbose t))
(use-package lisp-mode
:bind
(("C-c C-e" . eval-buffer)
("C-c C-r" . eval-region)))
(use-package nix-mode
:ensure t
:mode "\\.nix\\'"
:hook ((before-save . nix-format-before-save)))
(provide 'my-prog)
;;; my-prog.el ends here
|