diff --git a/configuration.org b/configuration.org index 44994bb..1ca5350 100644 --- a/configuration.org +++ b/configuration.org @@ -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 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 - :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 diff --git a/init.el b/init.el index e5adea1..96cc88b 100644 --- a/init.el +++ b/init.el @@ -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. It’s easier to document this way. (org-babel-load-file (expand-file-name "configuration.org" user-emacs-directory))