Move programming related packages to their own section
This commit is contained in:
		| @@ -2649,6 +2649,22 @@ Intended as a value for `bug-referecne-url-format'." | ||||
|   (python-mode . highlight-indentation-mode)) | ||||
| #+end_src | ||||
|  | ||||
| ** ~flycheck~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package flycheck | ||||
|   :config | ||||
|   (global-flycheck-mode) | ||||
|   :custom | ||||
|   (flycheck-python-pylint-executable "python3")) | ||||
| #+end_src | ||||
|  | ||||
| ** ~flycheck-pkg-config~ to aid FlyCheck using ~pkg-config~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package flycheck-pkg-config) | ||||
| #+end_src | ||||
|  | ||||
| * Utilities | ||||
|  | ||||
| ** ~kubernetes~, a kubernetes dashboard | ||||
| @@ -2709,6 +2725,307 @@ I don’t always use the package menu, but when i do, i want to do it in style | ||||
| (use-package tidal) | ||||
| #+end_src | ||||
|  | ||||
| * Programming-language specific packages | ||||
|  | ||||
| ** Python | ||||
|  | ||||
| *** Set up pretty symbols | ||||
|  | ||||
| Because they are fancy. | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (add-hook 'python-mode-hook | ||||
|           (lambda () | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("not in" . ?∉)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("in" . ?∈)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("def" . ?ƒ)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("is not" . ?≭)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("is" . ?≍)) | ||||
|             )) | ||||
| #+end_src | ||||
|  | ||||
| *** ~poetry~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package poetry | ||||
|   :config | ||||
|   (poetry-tracking-mode) | ||||
|   (remove-hook 'post-command-hook 'poetry-track-virtualenv) | ||||
|   :hook | ||||
|   (poetry-tracking-mode . (lambda () (remove-hook 'post-command-hook 'poetry-track-virtualenv))) | ||||
|   (python-mode . poetry-track-virtualenv) | ||||
|   (projectile-after-switch-project-hook . poetry-track-virtualenv) | ||||
|   :bind (:map gpolonkai/pers-map | ||||
|          ("pp" . poetry))) | ||||
| #+end_src | ||||
|  | ||||
| ** C | ||||
|  | ||||
| Because that’s still my favourite language. | ||||
|  | ||||
| *** Set up my indentation style | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (defconst my-c-style | ||||
|   '((c-tab-always-indent        . t) | ||||
|     (c-comment-only-line-offset . 4) | ||||
|     (c-hanging-braces-alist     . ((substatement-open after) | ||||
|                                    (brace-list-open))) | ||||
|     (c-hanging-colons-alist     . ((member-init-intro before) | ||||
|                                    (inher-intro) | ||||
|                                    (case-label after) | ||||
|                                    (label after) | ||||
|                                    (access-label after))) | ||||
|     (c-cleanup-list             . (scope-operator | ||||
|                                    empty-defun-braces | ||||
|                                    defun-close-semi)) | ||||
|     (c-offsets-alist             . ((arglist-close . +) | ||||
|                                     (arglist-intro . +) | ||||
|                                     (substatement-open . 0) | ||||
|                                     (case-label . 4) | ||||
|                                     (block-open . 0) | ||||
|                                     (knr-argdecl-intro . -) | ||||
|                                     (comment-intro . 0) | ||||
|                                     (member-init-intro . ++))) | ||||
|     (c-echo-syntactic-information-p . t)) | ||||
|   "My C Programming Style.") | ||||
| (c-add-style "PERSONAL" my-c-style) | ||||
| #+end_src | ||||
|  | ||||
| *** Set indentation levels to the same as the tab width | ||||
|  | ||||
| #+begin_src emacs-lisp :tangle no | ||||
| (defvaralias 'c-basic-offset 'tab-width) | ||||
| (defvaralias 'cperl-indent-level 'tab-width) | ||||
| #+end_src | ||||
|  | ||||
| *** Some common initialisation for C mode | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (add-hook 'c-mode-common-hook | ||||
|           (lambda () | ||||
|             (local-set-key (kbd "C-c o") 'ff-find-other-file) | ||||
|             (c-set-style "PERSONAL") | ||||
|             (customize-set-variable 'c-basic-offset 4) | ||||
|             (customize-set-variable 'tab-width 4) | ||||
|             (customize-set-variable 'indent-tabs-mode nil) | ||||
|             (c-toggle-auto-newline 1))) | ||||
| (add-hook 'c-initialization-hook | ||||
|           (lambda () | ||||
|             (define-key c-mode-base-map (kbd "C-m") 'c-context-line-break))) | ||||
| #+end_src | ||||
|  | ||||
| ** Web | ||||
|  | ||||
| *** ~web-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package web-mode | ||||
|   :mode "\\.html?\\'" | ||||
|   :custom | ||||
|   (web-mode-enable-auto-indentation nil) | ||||
|   (web-mode-enable-engine-detection t)) | ||||
| #+end_src | ||||
|  | ||||
| *** ~emmet-mode~ for easier HTML/CSS writing | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package emmet-mode | ||||
|   :custom | ||||
|   (emmet-self-closing-tag-style "") | ||||
|   :hook | ||||
|   (web-mode . emmet-mode) | ||||
|   (css-mode . emmet-mode)) | ||||
| #+end_src | ||||
|  | ||||
| *** ~enlive~, to query HTML tags by CSS selectors | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package enlive) | ||||
| #+end_src | ||||
|  | ||||
| ** ~json-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package json-mode | ||||
|   :mode "\\.json\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~yaml-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package yaml-mode | ||||
|   :mode (("\\.yml\\'" . yaml-mode) | ||||
|          ("\\.yaml\\'" . yaml-mode)) | ||||
|   :init | ||||
|   (add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))) | ||||
| #+end_src | ||||
|  | ||||
| ** ~dockerfile-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package dockerfile-mode) | ||||
| #+end_src | ||||
|  | ||||
| ** ~systemd~, for editing systemd unit files | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package systemd) | ||||
| #+end_src | ||||
|  | ||||
| ** ~terraform-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package terraform-mode | ||||
|   :mode "\\.tf\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~bats-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package bats-mode | ||||
|   :mode "\\.bats\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~fish-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package fish-mode | ||||
|   :hook | ||||
|   (fish-mode . (lambda () (add-hook 'before-save-hook 'fish_indent-before-save)))) | ||||
| #+end_src | ||||
|  | ||||
| ** ~gitlab-ci-mode~ and ~gitlab-ci-mode-flycheck~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package gitlab-ci-mode | ||||
|   :mode "\\.gitlab-ci.yml\\'") | ||||
|  | ||||
| (use-package gitlab-ci-mode-flycheck | ||||
|   :after flycheck gitlab-ci-mode | ||||
|   :init | ||||
|   (gitlab-ci-mode-flycheck-enable)) | ||||
| #+end_src | ||||
|  | ||||
| ** ~csv-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package csv-mode | ||||
|   :mode "\\.csv\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~rust-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package rust-mode | ||||
|   :mode "\\.rs\\'") | ||||
| (use-package cargo) | ||||
| (use-package flycheck-rust) | ||||
| #+end_src | ||||
|  | ||||
| ** ~arduino-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package arduino-mode | ||||
|   :mode "\\.ino\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~nginx-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package nginx-mode) | ||||
| #+end_src | ||||
|  | ||||
| ** ~js2-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package js2-mode | ||||
|   :pin melpa-stable | ||||
|   :mode "\\.js\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~typescript-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package typescript-mode | ||||
|   :mode "\\.ts\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~less-css-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package less-css-mode | ||||
|   :mode "\\.less\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~sass-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package sass-mode | ||||
|   :mode "\\.sass\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~vue-html-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package vue-html-mode | ||||
|   :mode "\\.vue\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~jinja2-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package jinja2-mode | ||||
|   :mode "\\.j2\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~markdown-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package markdown-mode | ||||
|   :mode (("\\.md\\'" . markdown-mode) | ||||
|          ("\\.markdown\\'" . markdown-mode))) | ||||
| #+end_src | ||||
|  | ||||
| ** ~vala-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package vala-mode | ||||
|   :mode "\\.vala\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~po-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package po-mode | ||||
|   :ensure nil | ||||
|   :mode "\\.po\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~meson-mode~ | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package meson-mode | ||||
|   :mode "\\.meson\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** ~ggtags~, an interfaco for GNU Globals | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (defun gpolonkai/cond-enable-ggtags-mode () | ||||
|   (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) | ||||
|     (ggtags-mode t))) | ||||
|  | ||||
| (use-package ggtags | ||||
|   :hook | ||||
|   (c-mode-common . gpolonkai/cond-enable-ggtags-mode)) | ||||
| #+end_src | ||||
|  | ||||
| * Custom commands and functions | ||||
|  | ||||
| ** Frame manipulation | ||||
| @@ -2745,332 +3062,6 @@ To temporarily hide the mode line. | ||||
|              "Use M-x hidden-mode-line-mode to make mode-line appear.")))) | ||||
| #+END_SRC | ||||
|  | ||||
| * ~use-package~ packages | ||||
|  | ||||
| ** GNU Globals | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (defun gpolonkai/cond-enable-ggtags-mode () | ||||
|   (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) | ||||
|     (ggtags-mode t))) | ||||
|  | ||||
| (use-package ggtags | ||||
|   :hook | ||||
|   (c-mode-common . gpolonkai/cond-enable-ggtags-mode)) | ||||
| #+END_SRC | ||||
|  | ||||
| * Python related setup and ~use-package~ calls | ||||
|  | ||||
| Because, well, that’s my job now.  Of course it gets a dedicated section. | ||||
|  | ||||
| ** Set up pretty symbols for Python | ||||
|  | ||||
| Because they are fancy. | ||||
|  | ||||
| - not: ¬ | ||||
| - in: ∈ | ||||
| - def: ƒ | ||||
|  | ||||
| Maybe add ∉ for ~not in~ later, if possible. | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (add-hook 'python-mode-hook | ||||
|           (lambda () | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("not in" . ?∉)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("in" . ?∈)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("def" . ?ƒ)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("is not" . ?≭)) | ||||
|             (add-to-list 'prettify-symbols-alist | ||||
|                          '("is" . ?≍)) | ||||
|             )) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Poetry | ||||
|  | ||||
| Because it’s also great. | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package poetry | ||||
|   :config | ||||
|   (poetry-tracking-mode) | ||||
|   (remove-hook 'post-command-hook 'poetry-track-virtualenv) | ||||
|   :hook | ||||
|   (poetry-tracking-mode . (lambda () (remove-hook 'post-command-hook 'poetry-track-virtualenv))) | ||||
|   (python-mode . poetry-track-virtualenv) | ||||
|   (projectile-after-switch-project-hook . poetry-track-virtualenv)) | ||||
| #+END_SRC | ||||
|  | ||||
| * C mode | ||||
|  | ||||
| Because that’s still my favourite language. | ||||
|  | ||||
| ** Set up my own C style | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (defconst my-c-style | ||||
|   '((c-tab-always-indent        . t) | ||||
|     (c-comment-only-line-offset . 4) | ||||
|     (c-hanging-braces-alist     . ((substatement-open after) | ||||
|                                    (brace-list-open))) | ||||
|     (c-hanging-colons-alist     . ((member-init-intro before) | ||||
|                                    (inher-intro) | ||||
|                                    (case-label after) | ||||
|                                    (label after) | ||||
|                                    (access-label after))) | ||||
|     (c-cleanup-list             . (scope-operator | ||||
|                                    empty-defun-braces | ||||
|                                    defun-close-semi)) | ||||
|     (c-offsets-alist             . ((arglist-close . +) | ||||
|                                     (arglist-intro . +) | ||||
|                                     (substatement-open . 0) | ||||
|                                     (case-label . 4) | ||||
|                                     (block-open . 0) | ||||
|                                     (knr-argdecl-intro . -) | ||||
|                                     (comment-intro . 0) | ||||
|                                     (member-init-intro . ++))) | ||||
|     (c-echo-syntactic-information-p . t)) | ||||
|   "My C Programming Style.") | ||||
| (c-add-style "PERSONAL" my-c-style) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Some common initialisation for C mode | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (add-hook 'c-mode-common-hook | ||||
|           (lambda () | ||||
|             (local-set-key (kbd "C-c o") 'ff-find-other-file) | ||||
|             (c-set-style "PERSONAL") | ||||
|             (customize-set-variable 'c-basic-offset 4) | ||||
|             (customize-set-variable 'tab-width 4) | ||||
|             (customize-set-variable 'indent-tabs-mode nil) | ||||
|             (c-toggle-auto-newline 1))) | ||||
| (add-hook 'c-initialization-hook | ||||
|           (lambda () | ||||
|             (define-key c-mode-base-map (kbd "C-m") 'c-context-line-break))) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Set indentation levels to the same as the tab width | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp :tangle no | ||||
| (defvaralias 'c-basic-offset 'tab-width) | ||||
| (defvaralias 'cperl-indent-level 'tab-width) | ||||
| #+END_SRC | ||||
|  | ||||
| * Web development | ||||
|  | ||||
| ** Web mode | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package web-mode | ||||
|   :mode "\\.html?\\'" | ||||
|   :custom | ||||
|   (web-mode-enable-auto-indentation nil) | ||||
|   (web-mode-enable-engine-detection t)) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Emmet mode | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package emmet-mode | ||||
|   :custom | ||||
|   (emmet-self-closing-tag-style "") | ||||
|   :hook | ||||
|   (web-mode . emmet-mode) | ||||
|   (css-mode . emmet-mode)) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Query HTML tags by CSS selectors | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package enlive) | ||||
| #+END_SRC | ||||
|  | ||||
| * FlyCheck | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package flycheck | ||||
|   :config | ||||
|   (global-flycheck-mode) | ||||
|   :custom | ||||
|   (flycheck-python-pylint-executable "python3")) | ||||
| #+END_SRC | ||||
|  | ||||
| ** FlyCheck for pkg-config files | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package flycheck-pkg-config) | ||||
| #+END_SRC | ||||
|  | ||||
| * Mode specific ~use-package~ calls | ||||
|  | ||||
| ** JavaScript | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package js2-mode | ||||
|   :pin melpa-stable | ||||
|   :mode "\\.js\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Jinja templates | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package jinja2-mode | ||||
|   :mode "\\.j2\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** TypeScript | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package typescript-mode | ||||
|   :mode "\\.ts\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** JSON | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package json-mode | ||||
|   :mode "\\.json\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** YAML | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package yaml-mode | ||||
|   :mode (("\\.yml\\'" . yaml-mode) | ||||
|          ("\\.yaml\\'" . yaml-mode)) | ||||
|   :init | ||||
|   (add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Markdown | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package markdown-mode | ||||
|   :mode (("\\.md\\'" . markdown-mode) | ||||
|          ("\\.markdown\\'" . markdown-mode))) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Less | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package less-css-mode | ||||
|   :mode "\\.less\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Sass | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package sass-mode | ||||
|   :mode "\\.sass\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Vala | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package vala-mode | ||||
|   :mode "\\.vala\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Dockerfile | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package dockerfile-mode) | ||||
| #+END_SRC | ||||
|  | ||||
| ** ~po-mode~ | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package po-mode | ||||
|   :ensure nil | ||||
|   :mode "\\.po\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** For editing CSV files | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package csv-mode | ||||
|   :mode "\\.csv\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Meson build system | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package meson-mode | ||||
|   :mode "\\.meson\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Gitlab-CI | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package gitlab-ci-mode | ||||
|   :mode "\\.gitlab-ci.yml\\'") | ||||
| (use-package gitlab-ci-mode-flycheck | ||||
|   :after flycheck gitlab-ci-mode | ||||
|   :init | ||||
|   (gitlab-ci-mode-flycheck-enable)) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Arduino | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package arduino-mode | ||||
|   :mode "\\.ino\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Vue templates | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package vue-html-mode | ||||
|   :mode "\\.vue\\'") | ||||
| #+END_SRC | ||||
|  | ||||
| ** Rust | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package rust-mode | ||||
|   :mode "\\.rs\\'") | ||||
| (use-package cargo) | ||||
| (use-package flycheck-rust) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Fish shell | ||||
|  | ||||
| #+BEGIN_SRC emacs-lisp | ||||
| (use-package fish-mode | ||||
|   :hook | ||||
|   (fish-mode . (lambda () (add-hook 'before-save-hook 'fish_indent-before-save)))) | ||||
| #+END_SRC | ||||
|  | ||||
| ** Bats, for testing shell scripts | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package bats-mode | ||||
|   :mode "\\.bats\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** Terraform | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package terraform-mode | ||||
|   :mode "\\.tf\\'") | ||||
| #+end_src | ||||
|  | ||||
| ** Systemd editing | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package systemd) | ||||
| #+end_src | ||||
|  | ||||
| ** NGinX | ||||
|  | ||||
| #+begin_src emacs-lisp | ||||
| (use-package nginx-mode) | ||||
| #+end_src | ||||
|  | ||||
| * Last, but not least, key bindings! | ||||
|  | ||||
| ** The actual key bindings | ||||
|   | ||||
		Reference in New Issue
	
	Block a user