Move programming language related packages from configuration.org to init.el

This commit is contained in:
Gergely Polonkai 2025-06-03 17:58:49 +02:00
parent f724ba27c7
commit e23fb67b30
No known key found for this signature in database
GPG Key ID: 38F402C8471DDE93
2 changed files with 183 additions and 332 deletions

View File

@ -1,335 +1,3 @@
* 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 thats 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
:mode ("\\.\\(?:automount\\|mount\\|path\\|s\\(?:ervice\\|lice\\|ocket\\)\\|t\\(?:arget\\|imer\\)\\|wants\\)\\'" . systemd-mode))
#+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)))
:mode "\\.fish\\'")
#+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
*** ~rust-mode~
#+begin_src emacs-lisp
(use-package rust-mode
:mode "\\.rs\\'")
#+end_src
*** ~cargo~ and ~cargo-mode~ for Cargo usage
#+begin_src emacs-lisp
(use-package cargo)
(use-package cargo-mode
:mode "Cargo\\.toml\\'")
#+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
** ~yuck-mode~
#+begin_src emacs-lisp
(use-package yuck-mode
:mode "\\.yuck\\'")
#+end_src
** ~ebnf-mode~
#+begin_src emacs-lisp
(use-package ebnf-mode
:commands (ebnf-mode))
#+end_src
** ~ansible-vault-mode~
#+begin_src emacs-lisp
(use-package ansible-vault)
#+end_src
* Key bindings
#+begin_src emacs-lisp

183
init.el
View File

@ -1661,6 +1661,189 @@ Intended as a value for `bug-referecne-url-format'."
(use-package tidal
:mode "\\.tidal\\'")
;; Programming-language specific packages
;; Python
(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" . ?≍))
))
(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)))
(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)
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)
(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)))
(use-package web-mode
:mode "\\.html?\\'"
:custom
(web-mode-enable-auto-indentation nil)
(web-mode-enable-engine-detection t))
(use-package emmet-mode
:custom
(emmet-self-closing-tag-style "")
:hook
(web-mode . emmet-mode)
(css-mode . emmet-mode))
(use-package enlive)
(use-package json-mode
:mode "\\.json\\'")
(use-package yaml-mode
:mode (("\\.yml\\'" . yaml-mode)
("\\.yaml\\'" . yaml-mode))
:init
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)))
(use-package dockerfile-mode)
(use-package systemd
:mode ("\\.\\(?:automount\\|mount\\|path\\|s\\(?:ervice\\|lice\\|ocket\\)\\|t\\(?:arget\\|imer\\)\\|wants\\)\\'" . systemd-mode))
(use-package terraform-mode
:mode "\\.tf\\'")
(use-package bats-mode
:mode "\\.bats\\'")
(use-package fish-mode
:hook
(fish-mode . (lambda () (add-hook 'before-save-hook 'fish_indent-before-save)))
:mode "\\.fish\\'")
(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))
(use-package csv-mode
:mode "\\.csv\\'")
(use-package rust-mode
:mode "\\.rs\\'")
(use-package cargo)
(use-package cargo-mode
:mode "Cargo\\.toml\\'")
(use-package arduino-mode
:mode "\\.ino\\'")
(use-package nginx-mode)
(use-package js2-mode
:pin melpa-stable
:mode "\\.js\\'")
(use-package typescript-mode
:mode "\\.ts\\'")
(use-package less-css-mode
:mode "\\.less\\'")
(use-package sass-mode
:mode "\\.sass\\'")
(use-package vue-html-mode
:mode "\\.vue\\'")
(use-package jinja2-mode
:mode "\\.j2\\'")
(use-package markdown-mode
:mode (("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode)))
(use-package vala-mode
:mode "\\.vala\\'")
(use-package po-mode
:ensure nil
:mode "\\.po\\'")
(use-package meson-mode
:mode "\\.meson\\'")
(defun gpolonkai/cond-enable-ggtags-mode ()
"Conditionally 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))
(use-package yuck-mode
:mode "\\.yuck\\'")
(use-package ebnf-mode
:commands (ebnf-mode))
(use-package ansible-vault)
;; I started moving my configuration to this Org file. Its easier to document this way.
(org-babel-load-file (expand-file-name "configuration.org" user-emacs-directory))