summaryrefslogtreecommitdiff
path: root/emacs/inits/20-programming.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/inits/20-programming.el')
-rw-r--r--emacs/inits/20-programming.el327
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)))