diff options
Diffstat (limited to 'emacs/inits/20-programming.el')
| -rw-r--r-- | emacs/inits/20-programming.el | 327 |
1 files changed, 147 insertions, 180 deletions
diff --git a/emacs/inits/20-programming.el b/emacs/inits/20-programming.el index e13ae8c..71a5cf9 100644 --- a/emacs/inits/20-programming.el +++ b/emacs/inits/20-programming.el @@ -1,4 +1,4 @@ -;; Time-stamp: <2023-01-18 20h59 CET (anker)> +;; Time-stamp: <2023-08-29 09h09 CEST (anker)> ;; ----------------------------------------------------------------------------- ;; General setup @@ -15,17 +15,6 @@ ;; (when (< ww (+ 5 fill-column)) ;; (enlarge-window-horizontally (- (+ 5 fill-column) ww))))) -(defun programming-setup () - (subword-mode 1) - (electric-pair-local-mode) - (set-fill-column 80) - (hs-minor-mode) - (display-line-numbers-mode 1) - (setq auto-hscroll-mode t) - (yas-minor-mode-on)) - -(add-hook 'prog-mode-hook #'programming-setup) - (defun align-to-equals (begin end) "Align region to equal signs" (interactive "r") @@ -34,9 +23,6 @@ (use-package centered-window :ensure t) -(use-package hideshow - :bind (("C-c C-f C-f" . hs-toggle-hiding))) - ;; (use-package origami ;; :ensure t ;; :bind (("C-c C-f C-f" . origami-recursively-toggle-node) @@ -46,6 +32,25 @@ ;; :config ;; (global-origami-mode -1)) +(use-package hideshow + :bind (("C-c C-f C-f" . hs-toggle-hiding))) + +(use-package treesit-auto + :ensure t + :config + (global-treesit-auto-mode) + (setq treesit-auto-install t)) + +(defun programming-setup () + (subword-mode 1) + (electric-pair-local-mode) + (set-fill-column 80) + (hs-minor-mode) + (display-line-numbers-mode 1) + (setq auto-hscroll-mode t) + (yas-minor-mode-on)) + +(add-hook 'prog-mode-hook #'programming-setup) ;; ----------------------------------------------------------------------------- ;; Specific packages @@ -53,17 +58,19 @@ (use-package shift-number :ensure t :bind (("C-c s p" . shift-number-up) - ("C-c s n" . shift-number-down))) + ("C-c s n" . shift-number-down))) (use-package comment-dwim-2 :ensure t :bind (("M-;" . comment-dwim-2)) :config (setq comment-multi-line t - comment-style 'extra-line)) + comment-style 'extra-line)) (use-package aggressive-indent :ensure t - :defer t) + :defer t + :config + (setq aggressive-indent-sit-for-time 1)) (use-package yasnippet :ensure t @@ -74,20 +81,26 @@ :defer t :config (setq electric-pair-delete-adjacent-pairs t - electric-pair-skip-self 'electric-pair-default-skip-self - electric-pair-preserve-balance t - electric-pair-skip-whitespace t - electric-pair-inhibit-predicate 'electric-pair-default-inhibit)) + electric-pair-skip-self 'electric-pair-default-skip-self + electric-pair-preserve-balance t + electric-pair-skip-whitespace t + electric-pair-inhibit-predicate 'electric-pair-default-inhibit)) (use-package lsp-mode :ensure t :defer t :init - (setq lsp-keymap-prefix "M-l")) + (setq lsp-keymap-prefix "M-l" + lsp-warn-no-matched-clients nil)) ;; ----------------------------------------------------------------------------- ;; C +;; What are these? +;; (setq gdb-show-threads-by-default nil +;; gdb-many-windows nil +;; gdb-show-main nil) + (use-package clang-format :ensure t :defer @@ -98,15 +111,17 @@ :defer t :bind (:map c-mode-map ("M-/" . lh-matching-delim)) - :hook (c-mode . (lambda () - (auto-fill-mode) - (set-fill-column 80) - (abbrev-mode 0) - (flycheck-mode 1) - (lsp) ;; clangd seems pretty good! - (c-toggle-hungry-state 1) - (c-toggle-electric-state 1) - (c-toggle-syntactic-indentation 1))) + :hook ((c-mode c++-mode) . (lambda () + (when (string-match-p (regexp-quote "rdx-code") (buffer-file-name)) + (c-set-style "radix")) + (auto-fill-mode) + ;; (aggressive-indent-mode) + (set-fill-column 80) + (abbrev-mode 0) + (lsp) ;; clangd seems pretty good! + (c-toggle-hungry-state 1) + (c-toggle-electric-state 1) + (c-toggle-syntactic-indentation 1))) :config (c-add-style "gnu-mod" '("gnu" @@ -184,11 +199,49 @@ (substatement-open . +) (template-args-cont c-lineup-template-args +) (topmost-intro-cont . c-lineup-topmost-intro-cont)))) + (c-add-style "radix" + '("gnu-mod" (c-basic-offset . 4))) (setq c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu-mod")))) +;; ----------------------------------------------------------------------------- +;; Python + +;; (use-package yapfify +;; :ensure t +;; :defer t +;; :config +;; (setq yapfify-executable "yapf3")) + +(use-package python-black + :ensure t + :after python + :config + (setq python-black-extra-args '("-l120")) + ;; :hook (python-mode . python-black-on-save-mode-enable-dwim) + ) + +(use-package highlight-indent-guides + :ensure t + :defer t + :config + (setq highlight-indent-guides-auto-odd-face-perc 1.5 ;; 10 + highlight-indent-guides-auto-even-face-perc 3 ;; 15 + )) + +(use-package python + :hook (python-mode . (lambda () + (highlight-indent-guides-mode) + (visual-line-mode) + ;; (yapf-mode) + )) + :bind (:map python-mode-map + ("C-c C-f" . nil)) + ;; :config + ;; (setq python-shell-interpreter "python3") + ) ;; ----------------------------------------------------------------------------- ;; Rust @@ -210,8 +263,8 @@ ("M-/" . lh-matching-delim) ("M-p" . beginning-of-defun) ("M-n" . end-of-defun) - ("C-c C-c" . rust-compile) - ("C-c C-r" . rust-run)) + ("C-c r c" . rust-compile) + ("C-c r r" . rust-run)) :hook (rust-mode . (lambda () (cargo-minor-mode) ;; For some reason this is not automatic @@ -230,37 +283,36 @@ (setq lsp-rust-server 'rust-analyzer lsp-rust-analyzer-call-info-full nil)) -;; ----------------------------------------------------------------------------- -;; Python -(use-package python-black - :ensure t - :after python - ;; :hook (python-mode . python-black-on-save-mode-enable-dwim) - ) +;; ------------------------------------------------------------------- +;; Misc languages -(use-package highlight-indent-guides +(use-package json-mode :ensure t :defer t - :config - (setq highlight-indent-guides-auto-odd-face-perc 1.5 ;; 10 - highlight-indent-guides-auto-even-face-perc 3 ;; 15 - )) + :mode (("\\.json\\.jinja\\'" . json-mode) + ("\\.jinja" . json-mode)) + :hook (json-mode . (lambda () + (programming-setup) + (setq standard-indent 2) + (setq js-indent-level 2) + (setq tab-width 2 + indent-tabs-mode nil))) + :bind (:map json-mode-map + ("C-c C-f" . nil))) -(use-package python - :hook (python-mode . (lambda () +(use-package jinja2-mode + :ensure t + :defer t + :mode ("\\.jinja\\'" . jinja2-mode) + :hook (jinja2-mode . (lambda () + (setq indent-line-function 'indent-relative) (highlight-indent-guides-mode) - (visual-line-mode) - ;; (yapf-mode) - )) - :bind (:map python-mode-map - ("C-c C-f" . nil)) - ;; :config - ;; (setq python-shell-interpreter "python3") - ) - -;; ----------------------------------------------------------------------------- -;; Zig + (programming-setup) + (spell-fu-mode -1) + (auto-fill-mode -1))) + :bind (:map jinja2-mode-map + ("C-c C-f" . nil))) (use-package zig-mode :ensure t @@ -282,138 +334,53 @@ :config (require 'lsp) (setq zig-format-on-save nil - lsp-zig-zls-executable "~/.local/bin/zls")) + lsp-zig-zls-executable "/usr/bin/zls")) -;; ------------------------------------------------------------------- -;; OCaml - -;; (use-package utop +;; (use-package js-comint ;; :ensure t ;; :defer t ;; :config -;; (setq utop-command "opam config exec -- utop -emacs")) +;; (setq js-comint-program-command "node" +;; js-comint-program-arguments nil)) -;; (use-package tuareg +;; (use-package js2-mode ;; :ensure t ;; :defer t -;; :hook (tuareg-mode . (lambda () -;; (utop-minor-mode)))) - -;; ------------------------------------------------------------------- -;; Misc languages - -(use-package js-comint - :ensure t - :defer t - :config - (setq js-comint-program-command "node" - js-comint-program-arguments nil)) - -(use-package js2-mode - :ensure t - :defer t - :after js-comint - :mode "\\.js$" - :bind (:map js2-mode-map - ("TAB" . js2-indent-line) - ("C-x C-e" . js-send-last-sexp) - ("C-c C-b" . js-send-buffer) - ("C-c C-l" . js-load-file)) - :hook (js2-mode . (lambda () - (auto-revert-mode -1) - (yas-minor-mode-on)))) - -(use-package nodemcu-mode - :ensure t - :defer t - :config - (setq nodemcu-default-keybindings t - nodemcu-port "/dev/ttyUSB0" - nodemcu-backend "nodemcu-uploader") - - (defun nodemcu-better-upload-current-file (&optional noreset) - (interactive "P") - (let ((proc (get-process "nodemcu-terminal"))) - (when proc - (delete-process proc)) - (shell-command - (nodemcu--get-command "upload" (file-name-nondirectory (buffer-file-name)))) - (unless noreset - (shell-command - (nodemcu--get-command "node restart")) - (when proc - (nodemcu-terminal)))))) - -(use-package lua-mode - :after nodemcu-mode - :ensure t - :defer t - :bind (:map lua-mode-map - ("C-x C-e" . lua-send-current-line) - ("C-c C-d" . lua-send-defun) - ("C-c C-e" . lua-send-region) - ("C-c C-u" . nodemcu-better-upload-current-file) - ("C-c C-t" . nodemcu-terminal) - ("M-n" . lua-forward-sexp) - ("M-p" . lua-backwards-to-block-begin-or-end)) - :hook (lua-mode . (lambda () - (require 'nodemcu-mode) - (nodemcu-mode 1)))) - -(use-package verilog-mode - :ensure t - :defer t - :mode "\\.vl$" - :hook (verilog-mode . (lambda () - (setq verilog-tool 'verilog-compiler) - (verilog-set-compile-command))) - :config - (setq verilog-compiler "iverilog" - verilog-tool 'verilog-compiler)) - -(use-package gforth - :commands forth-mode - :mode (("\\.fs$" . forth-mode) - ("\\.fb$" . forth-block-mode) - ("\\.4th$" . forth-mode))) - -;; (use-package clojure-mode +;; :after js-comint +;; :mode "\\.js$" +;; :bind (:map js2-mode-map +;; ("TAB" . js2-indent-line) +;; ("C-x C-e" . js-send-last-sexp) +;; ("C-c C-b" . js-send-buffer) +;; ("C-c C-l" . js-load-file)) +;; :hook (js2-mode . (lambda () +;; (auto-revert-mode -1) +;; (yas-minor-mode-on)))) + +;; (use-package lua-mode +;; :after nodemcu-mode ;; :ensure t -;; :defer t) +;; :defer t +;; :bind (:map lua-mode-map +;; ("C-x C-e" . lua-send-current-line) +;; ("C-c C-d" . lua-send-defun) +;; ("C-c C-e" . lua-send-region) +;; ("C-c C-u" . nodemcu-better-upload-current-file) +;; ("C-c C-t" . nodemcu-terminal) +;; ("M-n" . lua-forward-sexp) +;; ("M-p" . lua-backwards-to-block-begin-or-end)) +;; :hook (lua-mode . (lambda () +;; (require 'nodemcu-mode) +;; (nodemcu-mode 1)))) + +;; (use-package gforth +;; :commands forth-mode +;; :mode (("\\.fs$" . forth-mode) +;; ("\\.fb$" . forth-block-mode) +;; ("\\.4th$" . forth-mode))) (use-package uxntal-mode :ensure t :defer t :config (setq uxntal-mode-strict-comments t)) - - -;; ------------------------------------------------------------------- -;; JSON and related - -(use-package json-mode - :ensure t - :defer t - :mode (("\\.json\\.jinja\\'" . json-mode) - ("\\.jinja" . json-mode)) - :hook (json-mode . (lambda () - (programming-setup) - (setq standard-indent 2) - (setq js-indent-level 2) - (setq tab-width 2 - indent-tabs-mode nil))) - :bind (:map json-mode-map - ("C-c C-f" . nil))) - -(use-package jinja2-mode - :ensure t - :defer t - :mode ("\\.jinja\\'" . jinja2-mode) - :hook (jinja2-mode . (lambda () - (setq indent-line-function 'indent-relative) - (highlight-indent-guides-mode) - (programming-setup) - (spell-fu-mode -1) - (auto-fill-mode -1))) - :bind (:map jinja2-mode-map - ("C-c C-f" . nil))) |
