From 18fd0fa12951e010ed6fce9f25f6dbf39c09455b Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Tue, 17 Mar 2026 11:50:59 +0100 Subject: [PATCH] Add Emacs desktop provisioning and dev toolchain packages Install Emacs and copy the desktop .emacs.d config so the editor setup is managed with the rest of desktop dotfiles. Add vterm/build/debug dependencies plus C/C++ and Go tooling needed by the configured workflow. --- ansible/inventory/group_vars/desktop.yml | 13 ++ dotfiles/desktop/.emacs.d/.gitignore | 65 +++++++ dotfiles/desktop/.emacs.d/early-init.el | 23 +++ dotfiles/desktop/.emacs.d/elfeed.org | 20 +++ dotfiles/desktop/.emacs.d/init.el | 48 ++++++ dotfiles/desktop/.emacs.d/lisp/core/buffer.el | 21 +++ dotfiles/desktop/.emacs.d/lisp/core/editor.el | 14 ++ .../desktop/.emacs.d/lisp/core/keybindings.el | 161 ++++++++++++++++++ .../desktop/.emacs.d/lisp/core/packages.el | 15 ++ .../desktop/.emacs.d/lisp/core/performance.el | 22 +++ dotfiles/desktop/.emacs.d/lisp/core/ui.el | 82 +++++++++ dotfiles/desktop/.emacs.d/lisp/lang/c.el | 39 +++++ dotfiles/desktop/.emacs.d/lisp/lang/docker.el | 8 + dotfiles/desktop/.emacs.d/lisp/lang/golang.el | 89 ++++++++++ dotfiles/desktop/.emacs.d/lisp/lang/json.el | 7 + .../desktop/.emacs.d/lisp/lang/markdown.el | 8 + dotfiles/desktop/.emacs.d/lisp/lang/org.el | 46 +++++ dotfiles/desktop/.emacs.d/lisp/lang/shell.el | 11 ++ dotfiles/desktop/.emacs.d/lisp/lang/yaml.el | 8 + .../.emacs.d/lisp/misc/custom-functions.el | 89 ++++++++++ .../desktop/.emacs.d/lisp/misc/dashboard.el | 17 ++ .../.emacs.d/lisp/misc/doom-modeline.el | 9 + dotfiles/desktop/.emacs.d/lisp/misc/epub.el | 3 + .../desktop/.emacs.d/lisp/misc/i3-config.el | 2 + dotfiles/desktop/.emacs.d/lisp/misc/pdf.el | 4 + dotfiles/desktop/.emacs.d/lisp/misc/rss.el | 43 +++++ .../desktop/.emacs.d/lisp/misc/terminal.el | 4 + dotfiles/desktop/.emacs.d/lisp/misc/vcs.el | 16 ++ .../desktop/.emacs.d/lisp/misc/which-key.el | 161 ++++++++++++++++++ .../desktop/.emacs.d/lisp/tools/completion.el | 63 +++++++ dotfiles/desktop/.emacs.d/lisp/tools/dap.el | 24 +++ dotfiles/desktop/.emacs.d/lisp/tools/lsp.el | 49 ++++++ .../desktop/.emacs.d/lisp/tools/project.el | 25 +++ .../desktop/.emacs.d/lisp/tools/treesitter.el | 29 ++++ .../desktop/.emacs.d/scripts/email_sync.sh | 7 + .../desktop/.emacs.d/snippets/go-mode/main | 3 + dotfiles/desktop/.emacs.d/snippets/go-mode/pr | 1 + dotfiles/desktop/.emacs.d/snippets/go-mode/tt | 23 +++ .../.emacs.d/snippets/java-mode/author | 3 + .../desktop/.emacs.d/snippets/java-mode/debug | 6 + .../.emacs.d/snippets/java-mode/dwmain | 31 ++++ .../desktop/.emacs.d/snippets/java-mode/fn | 5 + .../desktop/.emacs.d/snippets/java-mode/for | 5 + .../desktop/.emacs.d/snippets/java-mode/fori | 5 + .../desktop/.emacs.d/snippets/java-mode/gse | 13 ++ .../desktop/.emacs.d/snippets/java-mode/if | 6 + .../.emacs.d/snippets/java-mode/iisblank | 4 + .../snippets/java-mode/junitwrapperfns | 21 +++ .../desktop/.emacs.d/snippets/java-mode/main | 5 + .../desktop/.emacs.d/snippets/java-mode/np | 3 + .../desktop/.emacs.d/snippets/java-mode/ol | 3 + .../desktop/.emacs.d/snippets/java-mode/req | 6 + .../desktop/.emacs.d/snippets/java-mode/res | 3 + .../desktop/.emacs.d/snippets/java-mode/sf | 3 + .../desktop/.emacs.d/snippets/java-mode/sop | 3 + .../desktop/.emacs.d/snippets/java-mode/test | 4 + .../desktop/.emacs.d/snippets/java-mode/tryf | 12 ++ .../desktop/.emacs.d/snippets/java-mode/tyc | 8 + dotfiles/desktop/.emacs.d/snippets/js2-mode/a | 4 + .../desktop/.emacs.d/snippets/js2-mode/fn | 6 + .../desktop/.emacs.d/snippets/js2-mode/for | 5 + .../desktop/.emacs.d/snippets/js2-mode/if | 6 + .../desktop/.emacs.d/snippets/js2-mode/log | 3 + .../desktop/.emacs.d/snippets/markdown-mode/a | 3 + .../.emacs.d/snippets/markdown-mode/img | 9 + .../.emacs.d/snippets/markdown-mode/me | 3 + .../.emacs.d/snippets/markdown-mode/pa | 17 ++ .../.emacs.d/snippets/markdown-mode/src | 6 + .../.emacs.d/snippets/markdown-mode/st | 4 + .../desktop/.emacs.d/snippets/nxml-mode/cdata | 3 + .../desktop/.emacs.d/snippets/nxml-mode/cha | 8 + .../desktop/.emacs.d/snippets/nxml-mode/dep | 7 + .../desktop/.emacs.d/snippets/nxml-mode/diary | 10 ++ .../.emacs.d/snippets/nxml-mode/exclusion | 6 + .../.emacs.d/snippets/nxml-mode/exclusions | 8 + .../.emacs.d/snippets/nxml-mode/incvar | 3 + .../desktop/.emacs.d/snippets/nxml-mode/list | 10 ++ .../desktop/.emacs.d/snippets/nxml-mode/listi | 4 + .../desktop/.emacs.d/snippets/nxml-mode/lit | 3 + .../desktop/.emacs.d/snippets/nxml-mode/oli | 5 + .../desktop/.emacs.d/snippets/nxml-mode/para | 5 + .../desktop/.emacs.d/snippets/nxml-mode/prog | 4 + .../desktop/.emacs.d/snippets/nxml-mode/scr | 5 + .../desktop/.emacs.d/snippets/nxml-mode/scri | 4 + .../desktop/.emacs.d/snippets/nxml-mode/sec | 8 + .../desktop/.emacs.d/snippets/nxml-mode/uli | 5 + .../.emacs.d/snippets/nxml-mode/varece | 3 + .../desktop/.emacs.d/snippets/nxml-mode/xlink | 4 + .../desktop/.emacs.d/snippets/org-mode/code | 5 + .../desktop/.emacs.d/snippets/org-mode/daily | 21 +++ .../desktop/.emacs.d/snippets/org-mode/gr | 1 + dotfiles/desktop/.emacs.d/snippets/org-mode/q | 5 + .../desktop/.emacs.d/snippets/org-mode/src | 5 + .../desktop/.emacs.d/snippets/org-mode/title | 1 + .../desktop/.emacs.d/snippets/python-mode/app | 4 + .../desktop/.emacs.d/snippets/python-mode/def | 4 + .../desktop/.emacs.d/snippets/python-mode/im | 4 + .../.emacs.d/snippets/python-mode/imflask | 6 + .../.emacs.d/snippets/python-mode/main | 4 + .../desktop/.emacs.d/snippets/python-mode/p | 6 + .../desktop/.emacs.d/snippets/python-mode/pr | 4 + .../desktop/.emacs.d/snippets/python-mode/prx | 4 + .../.emacs.d/snippets/python-mode/render | 3 + .../.emacs.d/snippets/python-mode/route | 5 + .../.emacs.d/snippets/python-mode/route2 | 5 + .../.emacs.d/snippets/rego-mode/package | 1 + .../desktop/.emacs.d/snippets/rego-mode/pr | 1 + .../desktop/.emacs.d/snippets/sh-mode/args | 44 +++++ dotfiles/desktop/.emacs.d/snippets/sh-mode/aw | 3 + .../desktop/.emacs.d/snippets/sh-mode/cmd | 18 ++ .../desktop/.emacs.d/snippets/sh-mode/cwd | 5 + .../desktop/.emacs.d/snippets/sh-mode/eof | 5 + dotfiles/desktop/.emacs.d/snippets/sh-mode/fn | 5 + .../desktop/.emacs.d/snippets/sh-mode/fnae | 7 + dotfiles/desktop/.emacs.d/snippets/sh-mode/fo | 6 + .../desktop/.emacs.d/snippets/sh-mode/help | 19 +++ dotfiles/desktop/.emacs.d/snippets/sh-mode/if | 5 + .../desktop/.emacs.d/snippets/sh-mode/iif | 5 + .../desktop/.emacs.d/snippets/sh-mode/main | 7 + dotfiles/desktop/.emacs.d/snippets/sh-mode/pr | 3 + .../desktop/.emacs.d/snippets/sh-mode/shunit | 27 +++ .../desktop/.emacs.d/snippets/sh-mode/test | 21 +++ .../desktop/.emacs.d/snippets/sh-mode/tmpdir | 8 + dotfiles/desktop/.emacs.d/snippets/sh-mode/v | 3 + dotfiles/desktop/.emacs.d/snippets/sh-mode/va | 4 + dotfiles/desktop/.emacs.d/snippets/sh-mode/vd | 3 + dotfiles/desktop/.emacs.d/snippets/sh-mode/wh | 6 + dotfiles/desktop/.emacs.d/snippets/web-mode/a | 5 + .../desktop/.emacs.d/snippets/web-mode/div | 5 + .../desktop/.emacs.d/snippets/web-mode/divv | 5 + .../desktop/.emacs.d/snippets/web-mode/for | 5 + .../desktop/.emacs.d/snippets/web-mode/h1 | 4 + .../desktop/.emacs.d/snippets/web-mode/h2 | 4 + .../desktop/.emacs.d/snippets/web-mode/h3 | 4 + .../desktop/.emacs.d/snippets/web-mode/h4 | 4 + .../desktop/.emacs.d/snippets/web-mode/if | 5 + .../desktop/.emacs.d/snippets/web-mode/img | 3 + .../desktop/.emacs.d/snippets/web-mode/incl | 3 + .../.emacs.d/snippets/web-mode/itemthumb | 13 ++ .../.emacs.d/snippets/web-mode/linkcss | 4 + dotfiles/desktop/.emacs.d/snippets/web-mode/p | 5 + .../desktop/.emacs.d/snippets/web-mode/style | 5 + .../desktop/.emacs.d/snippets/web-mode/with | 5 + .../desktop/.emacs.d/snippets/web-mode/{{ | 3 + .../.emacs.d/snippets/yaml-mode/k8-kustom | 5 + .../.emacs.d/snippets/yaml-mode/k8deployment | 44 +++++ .../.emacs.d/snippets/yaml-mode/k8ingress | 18 ++ .../.emacs.d/snippets/yaml-mode/k8service | 14 ++ 148 files changed, 2048 insertions(+) create mode 100644 dotfiles/desktop/.emacs.d/.gitignore create mode 100644 dotfiles/desktop/.emacs.d/early-init.el create mode 100644 dotfiles/desktop/.emacs.d/elfeed.org create mode 100644 dotfiles/desktop/.emacs.d/init.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/buffer.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/editor.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/keybindings.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/packages.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/performance.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/core/ui.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/c.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/docker.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/golang.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/json.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/markdown.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/org.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/shell.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/lang/yaml.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/custom-functions.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/dashboard.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/doom-modeline.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/epub.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/i3-config.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/pdf.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/rss.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/terminal.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/vcs.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/misc/which-key.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/tools/completion.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/tools/dap.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/tools/lsp.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/tools/project.el create mode 100644 dotfiles/desktop/.emacs.d/lisp/tools/treesitter.el create mode 100644 dotfiles/desktop/.emacs.d/scripts/email_sync.sh create mode 100644 dotfiles/desktop/.emacs.d/snippets/go-mode/main create mode 100644 dotfiles/desktop/.emacs.d/snippets/go-mode/pr create mode 100644 dotfiles/desktop/.emacs.d/snippets/go-mode/tt create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/author create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/debug create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/dwmain create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/fn create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/for create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/fori create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/gse create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/if create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/iisblank create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/junitwrapperfns create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/main create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/np create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/ol create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/req create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/res create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/sf create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/sop create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/test create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/tryf create mode 100644 dotfiles/desktop/.emacs.d/snippets/java-mode/tyc create mode 100644 dotfiles/desktop/.emacs.d/snippets/js2-mode/a create mode 100644 dotfiles/desktop/.emacs.d/snippets/js2-mode/fn create mode 100644 dotfiles/desktop/.emacs.d/snippets/js2-mode/for create mode 100644 dotfiles/desktop/.emacs.d/snippets/js2-mode/if create mode 100644 dotfiles/desktop/.emacs.d/snippets/js2-mode/log create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/a create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/img create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/me create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/pa create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/src create mode 100644 dotfiles/desktop/.emacs.d/snippets/markdown-mode/st create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/cdata create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/cha create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/dep create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/diary create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusion create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusions create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/incvar create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/list create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/listi create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/lit create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/oli create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/para create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/prog create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/scr create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/scri create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/sec create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/uli create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/varece create mode 100644 dotfiles/desktop/.emacs.d/snippets/nxml-mode/xlink create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/code create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/daily create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/gr create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/q create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/src create mode 100644 dotfiles/desktop/.emacs.d/snippets/org-mode/title create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/app create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/def create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/im create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/imflask create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/main create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/p create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/pr create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/prx create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/render create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/route create mode 100644 dotfiles/desktop/.emacs.d/snippets/python-mode/route2 create mode 100644 dotfiles/desktop/.emacs.d/snippets/rego-mode/package create mode 100644 dotfiles/desktop/.emacs.d/snippets/rego-mode/pr create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/args create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/aw create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/cmd create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/cwd create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/eof create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/fn create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/fnae create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/fo create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/help create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/if create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/iif create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/main create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/pr create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/shunit create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/test create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/tmpdir create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/v create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/va create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/vd create mode 100644 dotfiles/desktop/.emacs.d/snippets/sh-mode/wh create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/a create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/div create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/divv create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/for create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/h1 create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/h2 create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/h3 create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/h4 create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/if create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/img create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/incl create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/itemthumb create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/linkcss create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/p create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/style create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/with create mode 100644 dotfiles/desktop/.emacs.d/snippets/web-mode/{{ create mode 100644 dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8-kustom create mode 100644 dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8deployment create mode 100644 dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8ingress create mode 100644 dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8service diff --git a/ansible/inventory/group_vars/desktop.yml b/ansible/inventory/group_vars/desktop.yml index 87812b7..263dd5f 100644 --- a/ansible/inventory/group_vars/desktop.yml +++ b/ansible/inventory/group_vars/desktop.yml @@ -27,6 +27,15 @@ profile_packages: - nerd-fonts-symbols-ttf - network-manager-applet - chromium + - emacs + - libtool + - libvterm-devel + - cmake + - gcc + - gdb + - go + - clang + - clang-tools-extra - mpv - yt-dlp - libreoffice @@ -93,6 +102,10 @@ desktop_dotfiles: src: .themes.gitignore dest: .themes.gitignore mode: "0644" + - name: Emacs config + src: .emacs.d/ + dest: .emacs.d/ + mode: preserve desktop_flatpak_packages: - ch.protonmail.protonmail-bridge diff --git a/dotfiles/desktop/.emacs.d/.gitignore b/dotfiles/desktop/.emacs.d/.gitignore new file mode 100644 index 0000000..5d480c3 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/.gitignore @@ -0,0 +1,65 @@ +# Created by https://www.toptal.com/developers/gitignore/api/emacs +# Edit at https://www.toptal.com/developers/gitignore?templates=emacs + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* +eln-cache +projects +transient/ +.dap-breakpoints +.lsp-session-v1 +/.extension/** +url/** +**/*.bak +**/recentf + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile +/projectile-bookmarks.eld + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +# End of https://www.toptal.com/developers/gitignore/api/emacs diff --git a/dotfiles/desktop/.emacs.d/early-init.el b/dotfiles/desktop/.emacs.d/early-init.el new file mode 100644 index 0000000..d887ee9 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/early-init.el @@ -0,0 +1,23 @@ +;;===================================================================================== +;; Define loader functions +;;===================================================================================== +(defconst fscotto/modules-dir + (expand-file-name "lisp" user-emacs-directory)) + +(defun fscotto/load-module (module) + "Load a MODULE from symbol." + (let* ((module-name (symbol-name module)) + (path (expand-file-name + (concat (replace-regexp-in-string "/" "/" module-name) + ".el") + fscotto/modules-dir))) + (unless (file-exists-p path) + (error "Module not found: %s" path)) + (load path nil 'nomessage))) + +(defun fscotto/load-modules (&rest modules) + "Load MODULES." + (mapc #'fscotto/load-module modules)) + +(defvar fscotto/emacs-profile + (or (getenv "EMACS_PROFILE") "full")) diff --git a/dotfiles/desktop/.emacs.d/elfeed.org b/dotfiles/desktop/.emacs.d/elfeed.org new file mode 100644 index 0000000..670f58c --- /dev/null +++ b/dotfiles/desktop/.emacs.d/elfeed.org @@ -0,0 +1,20 @@ +#+TITLE: RSS Urls +#+AUTHOR: Fabio Scotto di Santolo +#+DATE: <2025-10-25 Sat> + +* root :elfeed: +** Programming :programming: +*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security: +*** [[https://lewboski.dev/rss.xml][Lewboski Blog]] :linux: :kernel: +** FOSS News :news: +*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint: +*** [[https://archlinux.org/feeds/news][Archlinux News]] :linux: :arch: +*** [[https://security.archlinux.org/advisory/feed.atom][Arch Security]] :linux: :arch: :security: +*** [[https://lwn.net/headlines/rss][LWN News]] :linux: :kernel: :programming: :security: +** Youtube :youtube: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming: :security: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming: +*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming: diff --git a/dotfiles/desktop/.emacs.d/init.el b/dotfiles/desktop/.emacs.d/init.el new file mode 100644 index 0000000..b6bdd10 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/init.el @@ -0,0 +1,48 @@ +(message "Welcome to Emacs") +(message "Loading user configuration...") +(message "Emacs profile: %s" fscotto/emacs-profile) + +;;===================================================================================== +;; Load modules +;;===================================================================================== +(fscotto/load-modules + ;; Core + 'core/packages + 'core/ui + 'core/performance + 'core/editor + 'core/keybindings + 'core/buffer + + ;; Tools + 'tools/completion + 'tools/project + 'tools/lsp + 'tools/dap + 'tools/treesitter + + ;; Languages + 'lang/c + 'lang/docker + 'lang/golang + 'lang/json + 'lang/markdown + 'lang/org + 'lang/shell + 'lang/yaml + + ;; Misc + 'misc/dashboard + 'misc/custom-functions + 'misc/doom-modeline + 'misc/which-key + 'misc/email + 'misc/rss + 'misc/terminal + 'misc/vcs + ;; FIXME PDF viewer with annotations + ;; 'misc/pdf + 'misc/epub + 'misc/i3-config) + +(message "...user configuration loaded") diff --git a/dotfiles/desktop/.emacs.d/lisp/core/buffer.el b/dotfiles/desktop/.emacs.d/lisp/core/buffer.el new file mode 100644 index 0000000..deffdf2 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/buffer.el @@ -0,0 +1,21 @@ +;;; buffer.el -*- lexical-binding: t; -*- + +(use-package ibuffer + :ensure t) + +(use-package ibuffer-tramp + :ensure t) + +(use-package ibuffer-vc + :ensure t) + +(use-package ibuffer-projectile + :ensure t) + +(add-hook 'ibuffer-mode-hook + (lambda () + (ibuffer-projectile-set-filter-groups))) + +(provide 'buffer) + +;;; buffer.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/core/editor.el b/dotfiles/desktop/.emacs.d/lisp/core/editor.el new file mode 100644 index 0000000..f016d69 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/editor.el @@ -0,0 +1,14 @@ +;;; core-editor + +(setq standard-indent 4) +(setq tab-stop-list nil) +(setq indent-tabs-mode nil) + +;; Setting variables +(setq vc-follow-symlinks 't) +(prefer-coding-system 'utf-8-unix) +(setq custom-file (null-device)) + +(provide 'editor) + +;;; editor.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/core/keybindings.el b/dotfiles/desktop/.emacs.d/lisp/core/keybindings.el new file mode 100644 index 0000000..d4d7145 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/keybindings.el @@ -0,0 +1,161 @@ +;;; keybindings.el -*- lexical-binding: t; -*- + +;;;; Global / Core + +(global-set-key (kbd "C-x C-b") #'ibuffer) +(global-set-key (kbd "C-") 'company-complete) + +(defvar fscotto/leader-map (make-sparse-keymap) + "Keymap per comandi sotto C-c.") + +(define-key global-map (kbd "C-c") fscotto/leader-map) + +;;;; Git / Magit +(defun fscotto/enable-magit-keymap () + "Enable Git keybindings if current buffer is inside a Git repository." + (when (and (require 'magit nil 'noerror) + (magit-toplevel)) + (local-set-key (kbd "C-c g") fscotto/git-map))) + +(defvar fscotto/git-map (make-sparse-keymap) + "Keymap for Git commands under C-c g.") + +(add-hook 'find-file-hook #'fscotto/enable-magit-keymap) +(add-hook 'prog-mode-hook #'fscotto/enable-magit-keymap) +(add-hook 'conf-mode-hook #'fscotto/enable-magit-keymap) + +;; autoload: il tasto carica magit +(autoload 'magit-status "magit" nil t) +(autoload 'magit-branch "magit" nil t) +(autoload 'magit-commit "magit" nil t) +(autoload 'magit-push "magit" nil t) +(autoload 'magit-fetch "magit" nil t) + +;; keybinding (sempre definite nella mappa) +(define-key fscotto/git-map (kbd "s") #'magit-status) +(define-key fscotto/git-map (kbd "b") #'magit-branch) +(define-key fscotto/git-map (kbd "c") #'magit-commit) +(define-key fscotto/git-map (kbd "p") #'magit-push) +(define-key fscotto/git-map (kbd "f") #'magit-fetch) + +;;;; Open / Tools +(defvar fscotto/open (make-sparse-keymap)) +(define-key fscotto/leader-map (kbd "o") fscotto/open) + +;; -------- vterm -------- +(autoload 'vterm "vterm" nil t) +(define-key fscotto/open (kbd "T") #'vterm) + +(with-eval-after-load 'vterm + (define-key vterm-mode-map (kbd "C-c C-t") #'vterm-copy-mode)) + +;; -------- mu4e -------- +(autoload 'mu4e "mu4e" nil t) +(define-key fscotto/open (kbd "m") #'mu4e) + +;; -------- elfeed -------- +(autoload 'elfeed "elfeed" nil t) +(define-key fscotto/open (kbd "f") #'elfeed) + +;;;; Elfeed mode maps +(with-eval-after-load 'elfeed + (define-key elfeed-search-mode-map (kbd "w") #'elfeed-search-yank) + (define-key elfeed-search-mode-map (kbd "R") #'elfeed-update) + (define-key elfeed-search-mode-map (kbd "q") #'elfeed-kill-buffer) + + (define-key elfeed-show-mode-map (kbd "S") #'elfeed-show-new-live-search) + (define-key elfeed-show-mode-map (kbd "f") #'elfeed-show-fetch-full-text) + (define-key elfeed-show-mode-map (kbd "w") #'elfeed-show-yank)) + +;;;; hl-todo +(with-eval-after-load 'hl-todo + (define-key hl-todo-mode-map (kbd "C-t p") #'hl-todo-previous) + (define-key hl-todo-mode-map (kbd "C-t n") #'hl-todo-next) + (define-key hl-todo-mode-map (kbd "C-t o") #'hl-todo-occur) + (define-key hl-todo-mode-map (kbd "C-t i") #'hl-todo-insert)) + +;; Projectile keybindings +(define-key fscotto/leader-map (kbd "p") 'projectile-command-map) + +(with-eval-after-load 'projectile + (define-key projectile-command-map (kbd "v") #'fscotto/project-vterm) + (define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status)) + +;;;; LSP +(defvar fscotto/lsp-map (make-sparse-keymap)) + +(autoload 'lsp-find-definition "lsp-mode" nil t) +(autoload 'lsp-find-type-definition "lsp-mode" nil t) +(autoload 'lsp-find-implementation "lsp-mode" nil t) +(autoload 'lsp-execute-code-action "lsp-mode" nil t) +(autoload 'lsp-rename "lsp-mode" nil t) +(autoload 'lsp-format-buffer "lsp-mode" nil t) +(autoload 'lsp-restart-workspace "lsp-mode" nil t) + +(autoload 'consult-lsp-symbols "consult-lsp" nil t) +(autoload 'consult-lsp-diagnostics "consult-lsp" nil t) + +(define-key fscotto/lsp-map (kbd "s") #'consult-lsp-symbols) +(define-key fscotto/lsp-map (kbd "e") #'consult-lsp-diagnostics) +(define-key fscotto/lsp-map (kbd "d") #'lsp-find-definition) +(define-key fscotto/lsp-map (kbd "D") #'lsp-find-type-definition) +(define-key fscotto/lsp-map (kbd "i") #'lsp-find-implementation) +(define-key fscotto/lsp-map (kbd "a") #'lsp-execute-code-action) +(define-key fscotto/lsp-map (kbd "r") #'lsp-rename) +(define-key fscotto/lsp-map (kbd "f") #'lsp-format-buffer) +(define-key fscotto/lsp-map (kbd "R") #'lsp-restart-workspace) + +(defun fscotto/enable-lsp-keymap () + "Enable LSP keybindings if LSP is active in the current buffer." + (when (and (bound-and-true-p lsp-mode) + (lsp-workspaces)) + (local-set-key (kbd "C-c l") fscotto/lsp-map))) + +(add-hook 'lsp-mode-hook #'fscotto/enable-lsp-keymap) +(add-hook 'lsp-after-initialize-hook #'fscotto/enable-lsp-keymap) +(add-hook 'lsp-after-open-hook #'fscotto/enable-lsp-keymap) + +;;;; DAP +(defvar fscotto/dap-map (make-sparse-keymap) + "Keymap for DAP commands under C-c d.") + +(autoload 'dap-debug "dap-mode" nil t) +(autoload 'dap-breakpoint-toggle "dap-mode" nil t) +(autoload 'dap-continue "dap-mode" nil t) +(autoload 'dap-next "dap-mode" nil t) +(autoload 'dap-step-in "dap-mode" nil t) +(autoload 'dap-step-out "dap-mode" nil t) +(autoload 'dap-restart-frame "dap-mode" nil t) +(autoload 'dap-disconnect "dap-mode" nil t) + +(define-key fscotto/dap-map (kbd "d") #'dap-debug) +(define-key fscotto/dap-map (kbd "b") #'dap-breakpoint-toggle) +(define-key fscotto/dap-map (kbd "c") #'dap-continue) +(define-key fscotto/dap-map (kbd "n") #'dap-next) +(define-key fscotto/dap-map (kbd "i") #'dap-step-in) +(define-key fscotto/dap-map (kbd "o") #'dap-step-out) +(define-key fscotto/dap-map (kbd "r") #'dap-restart-frame) +(define-key fscotto/dap-map (kbd "q") #'dap-disconnect) + +(defun fscotto/enable-dap-keymap () + "Enable DAP keybindings if dap-mode is active in the current buffer." + (when (bound-and-true-p dap-mode) + (local-set-key (kbd "C-c d") fscotto/dap-map))) + +(add-hook 'dap-mode-hook #'fscotto/enable-dap-keymap) +(add-hook 'dap-session-created-hook #'fscotto/enable-dap-keymap) +(add-hook 'dap-terminated-hook #'fscotto/enable-dap-keymap) + +;;;; Go + +(with-eval-after-load 'go-ts-mode + (define-key go-ts-mode-map (kbd "C-c m t") #'fscotto/go-mod-tidy) + (define-key go-ts-mode-map (kbd "C-c m d") #'fscotto/go-mod-download) + (define-key go-ts-mode-map (kbd "C-c t p") #'fscotto/go-test-package) + (define-key go-ts-mode-map (kbd "C-c t a") #'fscotto/go-test-module) + (define-key go-ts-mode-map (kbd "C-c t t") #'fscotto/go-test-current-test) + (define-key go-ts-mode-map (kbd "C-c d t") #'dap-debug)) + +(provide 'core/keybindings) + +;;; keybindings.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/core/packages.el b/dotfiles/desktop/.emacs.d/lisp/core/packages.el new file mode 100644 index 0000000..bd14974 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/packages.el @@ -0,0 +1,15 @@ +;; core-packages.el -*- lexical-binding: t; -*- +(require 'use-package) + +(use-package package + :config + ;; Setting repo priorities + (setq package-archive-priorities + '(("melpa-stable" . 2) + ("MELPA" . 1) + ("gnu" . 0))) + ;; Setting repo URL + (setq package-archives + '(("melpa-stable" . "https://stable.melpa.org/packages/") + ("MELPA" . "https://melpa.org/packages/") + ("gnu" . "https://elpa.gnu.org/packages/")))) diff --git a/dotfiles/desktop/.emacs.d/lisp/core/performance.el b/dotfiles/desktop/.emacs.d/lisp/core/performance.el new file mode 100644 index 0000000..eb2b796 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/performance.el @@ -0,0 +1,22 @@ +;;; core-performance.el -*- + +;; --- Startup speed tweaks ---------------------------------------------------- +;; Temporarily increase GC threshold during init +(defvar fscotto/gc-cons-threshold-orig gc-cons-threshold) +(setq gc-cons-threshold (* 50 1000 1000)) ;; 50MB for init + +;; Speedup file-name-handler during init +(defvar fscotto/file-name-handler-alist-orig file-name-handler-alist) +(setq file-name-handler-alist nil) + +;; Restore after init +(add-hook 'emacs-startup-hook + (lambda () + (setq gc-cons-threshold fscotto/gc-cons-threshold-orig) + (setq file-name-handler-alist fscotto/file-name-handler-alist-orig) + (garbage-collect))) + +;; LSP responsiveness +(setq read-process-output-max (* 1024 1024)) ;; 1MB, utile per lsp-mode +(setq lsp-idle-delay 0.5) ;; meno ritardo prima che LSP aggiorni info +(setq inhibit-compacting-font-caches t) diff --git a/dotfiles/desktop/.emacs.d/lisp/core/ui.el b/dotfiles/desktop/.emacs.d/lisp/core/ui.el new file mode 100644 index 0000000..d0d65d9 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/core/ui.el @@ -0,0 +1,82 @@ +;;; core-ui.el -*- lexical-binding: t; -*- + +;; Load default theme +(use-package sublime-themes + :ensure t) + +(use-package soothe-theme + :ensure t) + +(use-package nordic-night-theme + :ensure t) + +(use-package timu-caribbean-theme + :ensure t) + +(load-theme 'nordic-night t) + +;; Setting default font +(set-frame-font "Liberation Mono 14" nil t) + +(add-to-list 'default-frame-alist + '(font . "Liberation Mono-14")) + +;; Remove toolbar +(tool-bar-mode -1) + +;; Remove menu +(menu-bar-mode -1) + +;; Disable startup screen +(setq inhibit-startup-screen t) + +;; Disable splash screen +(setq inhibit-splash-screen t) + +;; Start all frames maximized +(add-to-list 'default-frame-alist '(fullscreen . maximized)) + +;; Remove scrollbar +(scroll-bar-mode -1) + +;; Simple 'y' for 'yes' and 'n' for 'no' +(defalias 'yes-or-no-p 'y-or-n-p) + +;; Set global value for paragraph witdh +(setq-default fill-column 120) + +;; Stop Emacs from losing informations +(setq undo-limit 8000000) +(setq undo-strong-limit 12000000) + +;; Smooth scroll +(setq scroll-step 3) +(setq ring-bell-function 'ignore) + +;; Add column number in the status line +(column-number-mode) + +;; View clock in the status line +(display-time) + +;; Enable line numbers in the programming mode only +(add-hook 'prog-mode-hook 'display-line-numbers-mode) + +;; Enable line numbers in the configuration mode only +(add-hook 'conf-mode-hook 'display-line-numbers-mode) + +;; Highlight keywords to remember the activity when coding. +(use-package hl-todo + :ensure t + :commands (global-hl-todo-mode) + :init (global-hl-todo-mode)) + +(setq hl-todo-keyword-faces + '(("TODO" . "#94e2d5") + ("FIXME" . "#f38ba8") + ("DEBUG" . "#cba6f7") + ("GOTCHA" . "#eba0ac") + ("STUB" . "#89b4fa"))) + +(provide 'ui) +;;; ui.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/c.el b/dotfiles/desktop/.emacs.d/lisp/lang/c.el new file mode 100644 index 0000000..efd138a --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/c.el @@ -0,0 +1,39 @@ +;; c.el -*- lexical-binding: t; -*- + +;; C / C++ fallback style (Linux-like) +(setq c-default-style "linux" + c-basic-offset 4 + tab-width 8) + +(add-hook 'c-mode-common-hook + (lambda () + (setq indent-tabs-mode t))) + +;; Tree-sitter C/C++ +(setq c-ts-mode-indent-offset 4) +(setq c++-ts-mode-indent-offset 4) + +(with-eval-after-load 'lsp + ;; Clangd configurations + (setq lsp-clients-clangd-args + '("--background-index" + "--clang-tidy" + "--completion-style=detailed" + "--header-insertion=never" + "--header-insertion-decorators" + "--pch-storage=memory" + "--log=error" + "--ranking-model=heuristics" + "--malloc-trim" + "--limit-results=500" + "--limit-references=2000"))) + +(with-eval-after-load 'dap-mode + (require 'dap-cpptools)) + +(add-hook 'c-ts-mode-hook #'fscotto/disable-c-formatting) +(add-hook 'c-mode-hook #'fscotto/disable-c-formatting) + +(provide 'c) + +;;; c.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/docker.el b/dotfiles/desktop/.emacs.d/lisp/lang/docker.el new file mode 100644 index 0000000..42b7c98 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/docker.el @@ -0,0 +1,8 @@ +;;; docker.el -*- lexical-binding: t; -*- + +(use-package dockerfile-mode + :ensure t) + +(provide 'docker) + +;;; docker.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/golang.el b/dotfiles/desktop/.emacs.d/lisp/lang/golang.el new file mode 100644 index 0000000..9fddffd --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/golang.el @@ -0,0 +1,89 @@ +;;================================================================= +;; Go Language Support +;;================================================================= + +(use-package go-ts-mode + :ensure nil + :mode "\\.go\\'" + :hook + ((go-ts-mode . lsp-deferred) + (go-ts-mode . fscotto/go-format-on-save))) + +(use-package go-mod-ts-mode + :ensure nil + :mode + (("/go\\.mod\\'" . go-mod-ts-mode) + ("/go\\.sum\\'" . go-mod-ts-mode)) + :hook + ((go-mod-ts-mode . lsp-deferred) + ;; restart gopls only when go.mod/go.sum are saved (buffer-local) + (go-mod-ts-mode . (lambda () + (add-hook 'after-save-hook + (lambda () + (when (lsp-workspaces) + (lsp-restart-workspace))) + nil t))))) + +(with-eval-after-load 'project + (add-to-list 'project-vc-extra-root-markers "go.mod")) + +(with-eval-after-load 'lsp-mode + ;; gopls settings (single source of truth) + (lsp-register-custom-settings + '(("gopls.staticcheck" t) + ("gopls.gofumpt" t) + ;; ("gopls.experimentalWorkspaceModule" t) + ("gopls.expandWorkspaceToModule" t) + ("gopls.directoryFilters" ["-vendor"]) + ("gopls.analyses.unusedparams" t) + ("gopls.analyses.shadow" t) + ("gopls.analyses.nilness" t) + ("gopls.analyses.useany" t) + ("gopls.env" ((GO111MODULE . "on")))))) + +(with-eval-after-load 'flycheck + ;; Usa golangci-lint in Go + (add-hook 'go-ts-mode-hook + (lambda () + (setq-local flycheck-checker 'golangci-lint) + (setq-local flycheck-check-syntax-automatically '(save mode-enabled)) + (flycheck-mode 1)))) + +(use-package dap-dlv-go + :after (dap-mode go-ts-mode)) + +(with-eval-after-load 'dap-dlv-go + ;; Debug all tests in module + (dap-register-debug-template + "Go :: Debug all tests" + (list :type "go" + :request "launch" + :name "Go :: Debug all tests" + :mode "test" + :program "${workspaceFolder}" + :cwd "${workspaceFolder}")) + + ;; Debug tests in current package + (dap-register-debug-template + "Go :: Debug package tests" + (list :type "go" + :request "launch" + :name "Go :: Debug package tests" + :mode "test" + :program "${fileDirname}" + :cwd "${fileDirname}")) + + ;; Debug test at point + (dap-register-debug-template + "Go :: Debug test at point" + (list :type "go" + :request "launch" + :name "Go :: Debug test at point" + :mode "test" + :program "${fileDirname}" + :cwd "${fileDirname}" + :args (list "-test.run" "${input:testName}")))) + +(add-hook 'dap-terminated-hook + (lambda (_) + (delete-other-windows))) diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/json.el b/dotfiles/desktop/.emacs.d/lisp/lang/json.el new file mode 100644 index 0000000..a5efc6e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/json.el @@ -0,0 +1,7 @@ +;;; json.el -*- lexical-binding: t -*- +(use-package json-mode + :ensure t) + +(provide 'json) + +;;; json.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/markdown.el b/dotfiles/desktop/.emacs.d/lisp/lang/markdown.el new file mode 100644 index 0000000..03c23df --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/markdown.el @@ -0,0 +1,8 @@ +;;; markdown.el -*- lexical-binding: t; -*- +(use-package markdown-mode + :ensure t + :mode ("README\\.md\\'" . gfm-mode) + :init (setq markdown-command "multimarkdown")) + +(provide 'markdown) +;;; markdown.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/org.el b/dotfiles/desktop/.emacs.d/lisp/lang/org.el new file mode 100644 index 0000000..4bb8e98 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/org.el @@ -0,0 +1,46 @@ +;;; org.el -*- lexical-binding: t; -*- + +(use-package htmlize + :ensure t) + +(use-package org + :init + (setq org-clock-mode-line-total 'today + org-fontify-quote-and-verse-blocks t + org-indent-mode t + org-return-follows-link t + org-startup-folded 'content + org-todo-keywords '((sequence "🆕(t)" "▶️(s)" "⏳(w)" "🔎(p)" "|" "✅(d)" "🗑(c)" "👨(g)"))) + :config + (add-hook 'org-mode-hook 'org-indent-mode) + (add-hook 'org-mode-hook 'flyspell-mode)) + +(use-package org-bullets + :ensure t + :init + (setq org-bullets-bullet-list '("❯" "❯❯" "❯❯❯" "❯❯❯❯" "❯❯❯❯❯")) + :config + (add-hook 'org-mode-hook 'org-bullets-mode)) + +(use-package org-re-reveal + :ensure t + :init + (setq org-re-reveal-transition 'none + org-re-reveal-theme "dracula")) + +(use-package ob-mermaid + :ensure t + :init + (setq ob-mermaid-cli-path "mmdc") + (org-babel-do-load-languages + 'org-babel-load-languages + '((mermaid . t) + (scheme . t)))) + + +;; Setting default directory for Org files +(setq org-directory "~/Remotes/pCloud/Org") + +(provide 'org) + +;;; org.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/shell.el b/dotfiles/desktop/.emacs.d/lisp/lang/shell.el new file mode 100644 index 0000000..11ccff9 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/shell.el @@ -0,0 +1,11 @@ +(with-eval-after-load 'flycheck + (add-hook 'bash-ts-mode-hook 'flycheck-mode)) + +(use-package reformatter + :ensure t + :config + (reformatter-define shfmt-format + :program "shfmt" + :args '("-i" "2" "-ci"))) + +(add-hook 'bash-ts-mode-hook #'shfmt-format-on-save-mode) diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/yaml.el b/dotfiles/desktop/.emacs.d/lisp/lang/yaml.el new file mode 100644 index 0000000..35f3f5a --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/lang/yaml.el @@ -0,0 +1,8 @@ +;;; yaml.el -*- lexical-binding: t; -*- + +(use-package yaml-mode + :ensure t) + +(provide 'yaml) + +;;; yaml.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/custom-functions.el b/dotfiles/desktop/.emacs.d/lisp/misc/custom-functions.el new file mode 100644 index 0000000..0080e00 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/custom-functions.el @@ -0,0 +1,89 @@ +;;functions to support syncing .elfeed between machines +;;makes sure elfeed reads index from disk before launching +(defun fscotto/elfeed-load-db-and-open () + "Wrapper to load the elfeed db from disk before opening URL https://pragmaticemacs.wordpress.com/2016/08/17/read-your-rss-feeds-in-emacs-with-elfeed/ + Created: 2016-08-17 + Updated: 2025-06-13" + (interactive) + (elfeed) + (elfeed-db-load) + ;; (elfeed-search-update--force) + (elfeed-update) + (elfeed-db-save)) + +(defun fscotto/project-root () + "Return projectile project root or fallback to default-directory." + (if (featurep 'projectile) + (or (projectile-project-root) default-directory) + default-directory)) + +(defun fscotto/project-vterm () + "Open vterm in project root." + (interactive) + (let ((default-directory (fscotto/project-root))) + (vterm))) + +(defun fscotto/project-magit-status () + "Open magit-status in project root." + (interactive) + (let ((default-directory (fscotto/project-root))) + (magit-status))) + +(defun fscotto/magit-dispatch () + "Load Magit if necessary and open magit-dispatch." + (interactive) + (require 'magit) + (call-interactively #'magit-dispatch)) + +(defun fscotto/disable-c-formatting () + (setq-local lsp-enable-on-type-formatting nil)) + +;; Golang development support functions +(defun fscotto/go-format-on-save () + "Format Go buffers on save using gofmt." + (add-hook 'before-save-hook #'lsp-format-buffer nil t)) + +(defun fscotto/go-mod-tidy () + "Esegue go mod tidy nella root del progetto." + (interactive) + (let ((default-directory (project-root (project-current t)))) + (compile "go mod tidy"))) + +(defun fscotto/go-mod-download () + "Scarica i moduli Go." + (interactive) + (let ((default-directory (project-root (project-current t)))) + (compile "go mod download"))) + +(defun fscotto/go-mod-after-save () + (when (and (eq major-mode 'go-mod-ts-mode) + (lsp-workspaces)) + (lsp-restart-workspace))) + +(defun fscotto/go-test-package () + "Run `go test` in the current package." + (interactive) + (let ((default-directory (project-root (project-current t)))) + (compile "go test"))) + +(defun fscotto/go-test-module () + "Run `go test ./...` in the current Go module." + (interactive) + (let ((default-directory (project-root (project-current t)))) + (compile "go test ./..."))) + +(defun fscotto/go-test-current-test () + "Run `go test -run` for the test at point." + (interactive) + (let* ((test-name (thing-at-point 'symbol t)) + (default-directory (project-root (project-current t)))) + (unless test-name + (user-error "No test name at point")) + (compile (format "go test -run '^%s$'" test-name)))) + +(defun fscotto/go-test-at-point () + "Return Go test name at point." + (let ((sym (thing-at-point 'symbol t))) + (unless (and sym (string-prefix-p "Test" sym)) + (user-error "No Go test at point")) + sym)) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/dashboard.el b/dotfiles/desktop/.emacs.d/lisp/misc/dashboard.el new file mode 100644 index 0000000..04cebf3 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/dashboard.el @@ -0,0 +1,17 @@ +;;; dashboard.el --- Startup dashboard -*- lexical-binding: t; -*- + +(use-package dashboard + :ensure t + :init + (setq dashboard-startup-banner 'logo + dashboard-center-content t + dashboard-set-heading-icons t + dashboard-set-file-icons t + dashboard-items '((recents . 8) + (projects . 5))) + :config + (dashboard-setup-startup-hook)) + +(provide 'dashboard) + +;;; misc-dashboard.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/doom-modeline.el b/dotfiles/desktop/.emacs.d/lisp/misc/doom-modeline.el new file mode 100644 index 0000000..6c3ef62 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/doom-modeline.el @@ -0,0 +1,9 @@ +;;; doom-modeline.el -*- + +(use-package doom-modeline + :ensure t + :config + (setq doom-modeline-height 25 + doom-modeline-bar-width 3 + doom-modeline-project-detection 'projectile) + :init (doom-modeline-mode 1)) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/epub.el b/dotfiles/desktop/.emacs.d/lisp/misc/epub.el new file mode 100644 index 0000000..edbc0e0 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/epub.el @@ -0,0 +1,3 @@ +(use-package nov + :ensure t + :mode ("\\.epub\\'" . nov-mode)) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/i3-config.el b/dotfiles/desktop/.emacs.d/lisp/misc/i3-config.el new file mode 100644 index 0000000..fc3b569 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/i3-config.el @@ -0,0 +1,2 @@ +(use-package i3wm-config-mode + :ensure t) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/pdf.el b/dotfiles/desktop/.emacs.d/lisp/misc/pdf.el new file mode 100644 index 0000000..ccd6311 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/pdf.el @@ -0,0 +1,4 @@ +(use-package pdf-tools + :ensure t + :config + (pdf-tools-install)) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/rss.el b/dotfiles/desktop/.emacs.d/lisp/misc/rss.el new file mode 100644 index 0000000..24c9bfc --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/rss.el @@ -0,0 +1,43 @@ +;;; rss.el -*- + +(use-package elfeed + :ensure t + :config + (defun elfeed-play-with-mpv () + "Open the current elfeed entry link with mpv." + (interactive) + (let* ((entry (if (eq major-mode 'elfeed-show-mode) + elfeed-show-entry + (elfeed-search-selected :ignore-region))) + (url (and entry (elfeed-entry-link entry)))) + (if url + (progn + (message "Opening with mpv: %s" url) + (start-process "mpv" nil "mpv" url)) + (message "No URL found")))) + (define-key elfeed-search-mode-map (kbd "v") #'elfeed-play-with-mpv) + (define-key elfeed-show-mode-map (kbd "v") #'elfeed-play-with-mpv) + :custom + (elfeed-enclosure-default-dir "~/Downloads/") + (elfeed-search-remain-on-entry t) + (elfeed-search-title-max-width 100) + (elfeed-search-title-min-width 30) + (elfeed-search-trailing-width 25) + (elfeed-show-truncate-long-urls t) + (elfeed-sort-order 'descending) + (elfeed-search-filter "+unread") + :hook + (elfeed-show-mode . visual-line-mode)) + +(use-package elfeed-org + :ensure t + :after elfeed + :custom + ;; Optionally specify a number of files containing elfeed + ;; configuration. If not set then the location below is used. + ;; Note: The customize interface is also supported. + (rmh-elfeed-org-files (list "~/.emacs.d/elfeed.org"))) + +(with-eval-after-load 'elfeed + (elfeed-org)) + diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/terminal.el b/dotfiles/desktop/.emacs.d/lisp/misc/terminal.el new file mode 100644 index 0000000..814c325 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/terminal.el @@ -0,0 +1,4 @@ +;;; terminal.el -*- + +(use-package vterm + :ensure t) diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/vcs.el b/dotfiles/desktop/.emacs.d/lisp/misc/vcs.el new file mode 100644 index 0000000..ff450a7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/vcs.el @@ -0,0 +1,16 @@ +(use-package magit + :ensure t + :commands (magit-status magit-log) + :init + ;; Entry point principale + (setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1) + :config + ;; Performance & UX + (setq magit-refresh-status-buffer nil) + (setq magit-repository-directories + '(("~/Projects" . 2) + ("~/Work" . 2)))) + +(provide 'vcs) + +;;; vcs.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/misc/which-key.el b/dotfiles/desktop/.emacs.d/lisp/misc/which-key.el new file mode 100644 index 0000000..49706c0 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/misc/which-key.el @@ -0,0 +1,161 @@ +;;; which-key.el -*- + +(use-package which-key + :ensure t + :defer 1 + :config + (which-key-mode) + (setq which-key-idle-delay 0.45 + which-key-idle-secondary-delay 0.05 + which-key-max-display-columns 3 + which-key-max-description-length 45)) + +(with-eval-after-load 'which-key + ;; -------------------------------------------------------------------------- + ;; Top-level prefixes + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-c !" "Analyze" + "C-c o" "Open" + "C-c v" "Version control" + "C-c l" "LSP" + "C-c t" "TODO / Annotations" + "C-c b" "Buffers" + "C-c p" "Project" + "C-c d" "Debug" + "C-c g" "Git" + "C-c e" "Email / Elfeed") + + ;; -------------------------------------------------------------------------- + ;; Open (C-c o …) + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-c o f" "RSS (Elfeed)" + "C-c o m" "mu4e (Email Client)" + "C-c o T" "Terminal (vterm)") + + ;; -------------------------------------------------------------------------- + ;; Version control + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-c v g" "Magit status (legacy)") + + (which-key-add-key-based-replacements + ;; Core + "C-c g g" "Status" + "C-c g s" "Status" + ;; "C-c g b" "Branch" + ;; "C-c g c" "Commit" + "C-c g p" "Push / Pull" + "C-c g f" "Fetch" + "C-c g l" "Log" + "C-c g S" "Stash" + + ;; Files + "C-c g d" "Diff" + "C-c g D" "Diff (cached)" + "C-c g B" "Blame" + + ;; Rebase / Reset + "C-c g r" "Rebase" + "C-c g R" "Reset" + + ;; Remote + "C-c g y" "Show refs" + "C-c g o" "Browse remote") + + ;; -------------------------------------------------------------------------- + ;; Buffers + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-x C-b" "ibuffer") + + ;; -------------------------------------------------------------------------- + ;; TODO / hl-todo + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-t" "hl-todo" + "C-t p" "Previous TODO" + "C-t n" "Next TODO" + "C-t o" "Occur (list)" + "C-t i" "Insert TODO") + + ;; -------------------------------------------------------------------------- + ;; LSP (C-c l …) + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + ;; Navigation + "C-c l d" "Go to definition" + "C-c l D" "Go to type definition" + "C-c l i" "Go to implementation" + + ;; Symbols / diagnostics + "C-c l s" "Workspace symbols" + "C-c l e" "Diagnostics" + + ;; Actions + "C-c l a" "Code actions" + "C-c l r" "Rename symbol" + "C-c l f" "Format buffer" + + ;; Control + "C-c l R" "Restart workspace") + + ;; -------------------------------------------------------------------------- + ;; Elfeed modes + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "w" "Yank" + "R" "Update feeds" + "q" "Quit") + + ;; -------------------------------------------------------------------------- + ;; Debug / DAP + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "C-c d d" "Start debug session" + "C-c d b" "Toggle breakpoint") + ;; "C-c d c" "Continue" + ;; "C-c d n" "Next" + ;; "C-c d i" "Step in" + ;; "C-c d o" "Step out") + + ;; -------------------------------------------------------------------------- + ;; Project (future) + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + ;; Core + "C-c p p" "Switch project" + "C-c p f" "Find file" + "C-c p d" "Find directory" + "C-c p b" "Switch buffer" + "C-c p k" "Kill project buffers" + "C-c p r" "Recent files" + + ;; Search + "C-c p s" "Search" + "C-c p s g" "Grep (ripgrep)" + "C-c p s r" "Replace in project" + + ;; Actions + "C-c p c" "Compile" + "C-c p t" "Test" + "C-c p v" "Open term in project" + "C-c p e" "Edit project config" + "C-c p g" "Project Git status" + "C-c p x" "Open Terminal" + "C-c p 4" "Other Window" + "C-c p 5" "Other Frame" + "C-c p x 4" "Other Window" + + ;; Cache + "C-c p i" "Invalidate cache") + + ;; -------------------------------------------------------------------------- + ;; Cleanup annoying +prefix + ;; -------------------------------------------------------------------------- + (which-key-add-key-based-replacements + "+prefix" "Prefix" + "+lsp" "LSP" + "+debug" "Debug" + "+project" "Project")) diff --git a/dotfiles/desktop/.emacs.d/lisp/tools/completion.el b/dotfiles/desktop/.emacs.d/lisp/tools/completion.el new file mode 100644 index 0000000..413b0ed --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/tools/completion.el @@ -0,0 +1,63 @@ +;;; completion.el -*- lexical-binding: t; -*- + +(use-package ivy + :ensure t + :config + (ivy-mode 1)) + +(use-package consult + :ensure t + :defer t) + +(use-package company + :ensure t + :custom + (company-tooltip-align-annotations 't) + (company-minimum-prefix-length 1) + (company-idle-delay 0.1) + :hook (prog-mode . company-mode)) + +(with-eval-after-load 'company + (add-hook 'bash-ts-mode-hook 'company-mode)) + +;; Static analysis for code base +(use-package flycheck + :ensure t + :hook (prog-mode . flycheck-mode) + :config + (setq flycheck-check-syntax-automatically '(save mode-enabled))) + +;; Snippets +(use-package yasnippet + :ensure t + :config + (setq yas/root-directory + (list "~/.emacs.d/snippets") yas-indent-line 'fixed) + (yas-global-mode)) + +(use-package orderless + :ensure t + :custom + (completion-styles '(orderless basic)) + (completion-category-overrides '((file (styles partial-completion)))) + (completion-pcm-leading-wildcard t) + :config + (setq ivy-re-builders-alist '((t . orderless-ivy-re-builder))) + (add-to-list 'ivy-highlight-functions-alist '(orderless-ivy-re-builder . orderless-ivy-highlight))) + +(defun just-one-face (fn &rest args) + (let ((orderless-match-faces [completions-common-part])) + (apply fn args))) + +(advice-add 'company-capf--candidates :around #'just-one-face) + +(use-package smartparens + :ensure smartparens ;; install the package + :hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks + :config + ;; load default config + (require 'smartparens-config)) + +(provide 'completion) + +;;; completion.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/tools/dap.el b/dotfiles/desktop/.emacs.d/lisp/tools/dap.el new file mode 100644 index 0000000..80c2245 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/tools/dap.el @@ -0,0 +1,24 @@ +(use-package dap-mode + :ensure t + :after lsp-mode + :hook (lsp-mode . dap-mode) + :init + ;; Enabling only some features + (setq dap-auto-configure-features '(sessions locals expressions repl)) + :config + (dap-mode 1) + (dap-ui-mode 1) + (dap-ui-controls-mode 1) + ;; Auto show breakpoints + REPL + (setq dap-ui-buffer-configurations + '(;; RIGHT SIDE — Debug data (like IntelliJ) + (dap-ui-locals . ((side . right) (slot . 1) (window-width . 0.30))) + (dap-ui-sessions . ((side . right) (slot . 2) (window-width . 0.30))) + (dap-ui-expressions . ((side . right) (slot . 3) (window-width . 0.30))) + ;; BOTTOM — Console / REPL + (dap-ui-repl . ((side . bottom) (slot . 1) (window-height . 0.25))) + (dap-ui-console . ((side . bottom) (slot . 2) (window-height . 0.25))))) + ;; Loading DAP adapters + ;; For Python + (require 'dap-python) + (setq dap-python-debugger 'debugpy)) diff --git a/dotfiles/desktop/.emacs.d/lisp/tools/lsp.el b/dotfiles/desktop/.emacs.d/lisp/tools/lsp.el new file mode 100644 index 0000000..a01d03d --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/tools/lsp.el @@ -0,0 +1,49 @@ +;;; lsp.el -*- lexical-binding: t; -*- + +(use-package lsp-mode + :ensure t + :commands (lsp lsp-deferred) + :hook + ((c-mode + c-ts-mode + c++-mode + c++-ts-mode + python-mode + python-ts-mode + sh-mode + bash-ts-mode) . lsp-deferred) + :config + ;; Performance + (setq lsp-enable-symbol-highlighting t + lsp-enable-snippet t + lsp-log-io nil + lsp-modeline-code-actions-enable nil + lsp-modeline-diagnostics-enable nil + lsp-signature-auto-activate nil + lsp-enable-on-type-formatting nil + lsp-completion-provider :capf + lsp-diagnostics-provider :flycheck + lsp-headerline-breadcrumb-enable nil + lsp-enable-indentation nil + ;; Disable for huge projects + lsp-enable-file-watchers nil + lsp-idle-delay 0.5)) + +(use-package lsp-ui + :ensure t + :config + (setq lsp-ui-doc-enable t + lsp-ui-doc-delay 0.3 + lsp-ui-sideline-enable t + lsp-ui-sideline-show-code-actions t)) + +(use-package consult-lsp + :ensure t + :after (consult lsp-mode) + :commands + (consult-lsp-symbols + consult-lsp-diagnostics)) + +(provide 'lsp) + +;;; lsp.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/tools/project.el b/dotfiles/desktop/.emacs.d/lisp/tools/project.el new file mode 100644 index 0000000..dc727a7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/tools/project.el @@ -0,0 +1,25 @@ +;;; project.el - lexical-binding *-* + +(use-package projectile + :ensure t + :defer 1 + :init + ;; Root detection + (setq projectile-project-search-path '("~/Projects" "~/Work" "~/Progetti" "~/.local/src")) + (setq projectile-completion-system 'ivy) + :config + ;; Performance + (setq projectile-enable-caching t) + (setq projectile-indexing-method 'hybrid) + (setq projectile-sort-order 'recently-active) + ;; Projectile as single source of truth + (setq projectile-switch-project-action #'projectile-dired) + ;; Use ripgrep if available + (when (executable-find "rg") + (setq projectile-generic-command "rg --files --hidden --glob '!.git'")) + ;; Enable globally + (projectile-mode 1)) + +(provide 'project) + +;;; project.el ends here diff --git a/dotfiles/desktop/.emacs.d/lisp/tools/treesitter.el b/dotfiles/desktop/.emacs.d/lisp/tools/treesitter.el new file mode 100644 index 0000000..837b2ee --- /dev/null +++ b/dotfiles/desktop/.emacs.d/lisp/tools/treesitter.el @@ -0,0 +1,29 @@ +;;; treesitter.el -*- lexical-binding: t; -*- + +(use-package treesit + :ensure nil + :config + (setq treesit-font-lock-level 4) + (setq treesit-auto-install t) + (setq major-mode-remap-alist + '((c-mode . c-ts-mode) + (c++-mode . c++-ts-mode) + (go-mode . go-ts-mode) + (go-mod-mode . go-mod-ts-mode) + (python-mode . python-ts-mode) + (sh-mode . bash-ts-mode))) + (setq treesit-language-source-alist + '((bash "https://github.com/tree-sitter/tree-sitter-bash") + (c "https://github.com/tree-sitter/tree-sitter-c") + (cpp "https://github.com/tree-sitter/tree-sitter-cpp") + (dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile") + (go "https://github.com/tree-sitter/tree-sitter-go") + (gomod "https://github.com/camdencheek/tree-sitter-go-mod") + (js "https://github.com/tree-sitter/tree-sitter-javascript") + (json "https://github.com/tree-sitter/tree-sitter-json") + (node "https://github.com/tree-sitter/node-tree-sitter") + (python "https://github.com/tree-sitter/tree-sitter-python")))) + +(provide 'treesitter) + +;;; treesitter.el ends here diff --git a/dotfiles/desktop/.emacs.d/scripts/email_sync.sh b/dotfiles/desktop/.emacs.d/scripts/email_sync.sh new file mode 100644 index 0000000..1b4c212 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/scripts/email_sync.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +mbsync -a & pid1=$! +wait $pid1 + +mu index + diff --git a/dotfiles/desktop/.emacs.d/snippets/go-mode/main b/dotfiles/desktop/.emacs.d/snippets/go-mode/main new file mode 100644 index 0000000..9a3ebe5 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/go-mode/main @@ -0,0 +1,3 @@ +func main() { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/go-mode/pr b/dotfiles/desktop/.emacs.d/snippets/go-mode/pr new file mode 100644 index 0000000..ea23f54 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/go-mode/pr @@ -0,0 +1 @@ +fmt.Printf("%v\n", $0) diff --git a/dotfiles/desktop/.emacs.d/snippets/go-mode/tt b/dotfiles/desktop/.emacs.d/snippets/go-mode/tt new file mode 100644 index 0000000..a0ec037 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/go-mode/tt @@ -0,0 +1,23 @@ +func Test$0 { + tests := []struct { + name string + req string + expected string + }{ + { + name: "happy path", + req: "answer to life, the universe and everything" + expected: "42" + } + } + + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + actual := foo(t, tt.req) + assertEquals(t, tt.want, expected) + }) + + } +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/author b/dotfiles/desktop/.emacs.d/snippets/java-mode/author new file mode 100644 index 0000000..5070312 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/author @@ -0,0 +1,3 @@ +#name : author +# -- +@author Torstein Krause Johansen$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/debug b/dotfiles/desktop/.emacs.d/snippets/java-mode/debug new file mode 100644 index 0000000..7d0152e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/debug @@ -0,0 +1,6 @@ +#name : debug +# -- +if (mLogger.isDebugEnabled()) { + mLogger.debug(String.format("${1:result}=%s", ${2:result})); +} +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/dwmain b/dotfiles/desktop/.emacs.d/snippets/java-mode/dwmain new file mode 100644 index 0000000..a229496 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/dwmain @@ -0,0 +1,31 @@ +#name : dwmain +# -- +package ${1:net.skybert.dw}; + +import io.dropwizard.Application; +import io.dropwizard.assets.AssetsBundle; +import io.dropwizard.configuration.SubstitutingSourceProvider; +import io.dropwizard.jetty.ConnectorFactory; +import io.dropwizard.jetty.HttpConnectorFactory; +import io.dropwizard.lifecycle.Managed; +import io.dropwizard.server.DefaultServerFactory; +import io.dropwizard.setup.Bootstrap; +import io.dropwizard.setup.Environment; + +/** + * Main + */ +public class Main extends Application<${2:SkybertConf}> { + + public static void main(final String[] args) throws Exception { + new Main().run(args); + } + + @Override + public void run( + final $2 pConfiguration, + final Environment pEnvironment) + throws Exception { + $0 + } +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/fn b/dotfiles/desktop/.emacs.d/snippets/java-mode/fn new file mode 100644 index 0000000..8fe5cc4 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/fn @@ -0,0 +1,5 @@ +#name : new method/function +# -- +${1:public} ${2:void} ${3:update}(final ${4:String} ${5:pName}) { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/for b/dotfiles/desktop/.emacs.d/snippets/java-mode/for new file mode 100644 index 0000000..c093ba7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/for @@ -0,0 +1,5 @@ +#name : for (...; ...; ...) { ... } +# -- +for (${1:Object} ${downcase-word 1} ; ${2:list}) { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/fori b/dotfiles/desktop/.emacs.d/snippets/java-mode/fori new file mode 100644 index 0000000..a9e4ccc --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/fori @@ -0,0 +1,5 @@ +#name : for loop with index +# -- +for (int ${1:i} = 0; $1 < ${2:args.length}; $1${3:++}) { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/gse b/dotfiles/desktop/.emacs.d/snippets/java-mode/gse new file mode 100644 index 0000000..cd4763f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/gse @@ -0,0 +1,13 @@ +#name : get/set/member variable +# -- +private ${1:String} ${2:name}; + +public void set${2:$(capitalize text)}(final $1 p${2:$(capitalize text)}) { + $2 = p${2:$(capitalize text)}; +} + +public $1 get${2:$(capitalize text)}() { + return $2; +} +$0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/if b/dotfiles/desktop/.emacs.d/snippets/java-mode/if new file mode 100644 index 0000000..59f1d0b --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/if @@ -0,0 +1,6 @@ +#name : if +# -- +if (${1:result} ${2:!=} ${3:null}) { + $0 +} + diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/iisblank b/dotfiles/desktop/.emacs.d/snippets/java-mode/iisblank new file mode 100644 index 0000000..87ee357 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/iisblank @@ -0,0 +1,4 @@ +#name : static import of isBlank +# -- +import static org.apache.commons.lang.StringUtils.isBlank; +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/junitwrapperfns b/dotfiles/desktop/.emacs.d/snippets/java-mode/junitwrapperfns new file mode 100644 index 0000000..6492450 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/junitwrapperfns @@ -0,0 +1,21 @@ +#name : junitwrapperfns +# -- + private void assertTrue(final String pMessage, final boolean pConditition) { + Assertions.assertTrue(pConditition, pMessage); + } + + private void assertFalse(final String pMessage, final boolean pConditition) { + Assertions.assertFalse(pConditition, pMessage); + } + + private void assertNotNull(final String pMessage, final Object pActual) { + Assertions.assertNotNull(pActual, pMessage); + } + + private void assertNull(final String pMessage, final Object pActual) { + Assertions.assertNull(pActual, pMessage); + } + + private void assertEquals(final String pMessage, final Object pExpected, final Object pActual) { + Assertions.assertEquals(pExpected, pActual, pMessage); + } diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/main b/dotfiles/desktop/.emacs.d/snippets/java-mode/main new file mode 100644 index 0000000..c9ab3da --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/main @@ -0,0 +1,5 @@ +#name : main +# -- +public static void main(String[] args) { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/np b/dotfiles/desktop/.emacs.d/snippets/java-mode/np new file mode 100644 index 0000000..c7ea65f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/np @@ -0,0 +1,3 @@ +#name : np +# -- + // NOPMD \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/ol b/dotfiles/desktop/.emacs.d/snippets/java-mode/ol new file mode 100644 index 0000000..18e8e9a --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/ol @@ -0,0 +1,3 @@ +#name : get ObjectLoader +# -- +$0ObjectLoader objectLoader = IOAPI.getAPI().getObjectLoader(); diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/req b/dotfiles/desktop/.emacs.d/snippets/java-mode/req new file mode 100644 index 0000000..fba51a7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/req @@ -0,0 +1,6 @@ +#name : req +# -- +HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create($0)) + .timeout(Duration.ofMillis(getResponseTimeout())) + .build(); diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/res b/dotfiles/desktop/.emacs.d/snippets/java-mode/res new file mode 100644 index 0000000..d41f495 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/res @@ -0,0 +1,3 @@ +#name : res +# -- +HttpResponse response = mHttpClient.send(request, ofString());$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/sf b/dotfiles/desktop/.emacs.d/snippets/java-mode/sf new file mode 100644 index 0000000..08a8196 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/sf @@ -0,0 +1,3 @@ +#name : sf +# -- +String.format("%s", $0) \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/sop b/dotfiles/desktop/.emacs.d/snippets/java-mode/sop new file mode 100644 index 0000000..309282b --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/sop @@ -0,0 +1,3 @@ +#name : System.out.println +# -- +System.out.println($0); \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/test b/dotfiles/desktop/.emacs.d/snippets/java-mode/test new file mode 100644 index 0000000..1f87026 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/test @@ -0,0 +1,4 @@ +@Test +void ${1:can}() throws Exception { + $0 +} \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/tryf b/dotfiles/desktop/.emacs.d/snippets/java-mode/tryf new file mode 100644 index 0000000..da1cf19 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/tryf @@ -0,0 +1,12 @@ +#name : try, catch & finally +# -- +try { + $0 +} +catch (${1:Exception} ${2:e}) { + mLogger.error($2); +} +finally { + +} + diff --git a/dotfiles/desktop/.emacs.d/snippets/java-mode/tyc b/dotfiles/desktop/.emacs.d/snippets/java-mode/tyc new file mode 100644 index 0000000..2faecee --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/java-mode/tyc @@ -0,0 +1,8 @@ +#name : try & catch +# -- +try { + $0 +} +catch (${1:Exception} ${2:e}) { + mLogger.error($2); +} diff --git a/dotfiles/desktop/.emacs.d/snippets/js2-mode/a b/dotfiles/desktop/.emacs.d/snippets/js2-mode/a new file mode 100644 index 0000000..7955bfe --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/js2-mode/a @@ -0,0 +1,4 @@ +#name : new array +# -- +var ${1:myArray} = new Array(); +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/js2-mode/fn b/dotfiles/desktop/.emacs.d/snippets/js2-mode/fn new file mode 100644 index 0000000..7ca699e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/js2-mode/fn @@ -0,0 +1,6 @@ +#name : function +# -- +function ${1:test}(${2:pValue}) { + $0 +} + diff --git a/dotfiles/desktop/.emacs.d/snippets/js2-mode/for b/dotfiles/desktop/.emacs.d/snippets/js2-mode/for new file mode 100644 index 0000000..407bc93 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/js2-mode/for @@ -0,0 +1,5 @@ +#name : for (...; ...; ...) { ... } +# -- +for (var ${1:i} = 0; $1 < ${2:args.length}; $1${3:++}) { + $0 +} diff --git a/dotfiles/desktop/.emacs.d/snippets/js2-mode/if b/dotfiles/desktop/.emacs.d/snippets/js2-mode/if new file mode 100644 index 0000000..71803a5 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/js2-mode/if @@ -0,0 +1,6 @@ +#name : if +# -- +if (${1:s} == ${2:undefined}) { + $0 +} + diff --git a/dotfiles/desktop/.emacs.d/snippets/js2-mode/log b/dotfiles/desktop/.emacs.d/snippets/js2-mode/log new file mode 100644 index 0000000..0cb9cfb --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/js2-mode/log @@ -0,0 +1,3 @@ +#name : log +# -- +console.log("$0"); diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/a b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/a new file mode 100644 index 0000000..381f971 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/a @@ -0,0 +1,3 @@ +#name : a +# -- +[${1}](${2})${0} diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/img b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/img new file mode 100644 index 0000000..2ec7f6d --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/img @@ -0,0 +1,9 @@ +#name : img snippet +# -- + +${2:alt img text} +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/me b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/me new file mode 100644 index 0000000..584a308 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/me @@ -0,0 +1,3 @@ +# name : me +# -- +[@skybert](https://skybert.net) ${1:says:}$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/pa b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/pa new file mode 100644 index 0000000..466db7c --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/pa @@ -0,0 +1,17 @@ +#name : pelican article +# -- +title: ${1:`(s-replace "-" " " (file-name-base (buffer-file-name)))`} +date: ${2:`(format-time-string "%Y-%m-%d" (current-time))`} +category: ${3:`(file-name-nondirectory + (substring + (file-name-directory (buffer-file-name)) + 0 + (- (length (file-name-directory (buffer-file-name))) 1) + ))`} +tags: ${4:`(file-name-nondirectory + (substring + (file-name-directory (buffer-file-name)) + 0 + (- (length (file-name-directory (buffer-file-name))) 1) + ))`} +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/src b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/src new file mode 100644 index 0000000..4743ab2 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/src @@ -0,0 +1,6 @@ +#name : src code snippet +# -- + +\`\`\`${1:text} +$0 +\`\`\` diff --git a/dotfiles/desktop/.emacs.d/snippets/markdown-mode/st b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/st new file mode 100644 index 0000000..7144005 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/markdown-mode/st @@ -0,0 +1,4 @@ +#name : strong element +# -- + +${1:text}$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cdata b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cdata new file mode 100644 index 0000000..457f6a1 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cdata @@ -0,0 +1,3 @@ +#name: cdata +# -- + \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cha b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cha new file mode 100644 index 0000000..3190557 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/cha @@ -0,0 +1,8 @@ +#name : cha +# -- + + ${1:My Title} + + $0 + + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/dep b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/dep new file mode 100644 index 0000000..15c448c --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/dep @@ -0,0 +1,7 @@ +#name : dep +# -- + + $1 + $2 + $0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/diary b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/diary new file mode 100644 index 0000000..83d13b7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/diary @@ -0,0 +1,10 @@ +#name : diary +# -- + +

$1

+
+

+ $0 +

+
+ diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusion b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusion new file mode 100644 index 0000000..2d6c700 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusion @@ -0,0 +1,6 @@ +#name : exclusion +# -- + + $1 + $2 +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusions b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusions new file mode 100644 index 0000000..cb51a7f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/exclusions @@ -0,0 +1,8 @@ +#name : exclusions +# -- + + + $1 + $2 + $0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/incvar b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/incvar new file mode 100644 index 0000000..c287b58 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/incvar @@ -0,0 +1,3 @@ +#name : incvar +# -- +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/list b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/list new file mode 100644 index 0000000..20e0290 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/list @@ -0,0 +1,10 @@ +#name : list +# -- + + + + $0 + + + + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/listi b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/listi new file mode 100644 index 0000000..98a8747 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/listi @@ -0,0 +1,4 @@ +#name : listi +# -- +$0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/lit b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/lit new file mode 100644 index 0000000..3633b6d --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/lit @@ -0,0 +1,3 @@ +#name : lit +# -- +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/oli b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/oli new file mode 100644 index 0000000..7e6ae50 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/oli @@ -0,0 +1,5 @@ +#name : ol with a li +# -- +
    +
  1. $0
  2. +
diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/para b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/para new file mode 100644 index 0000000..e6ad40c --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/para @@ -0,0 +1,5 @@ +#name : para +# -- + + $0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/prog b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/prog new file mode 100644 index 0000000..0a7fc97 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/prog @@ -0,0 +1,4 @@ +#name : prog +# -- + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scr b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scr new file mode 100644 index 0000000..e94e94e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scr @@ -0,0 +1,5 @@ +#name : insert a JS tag without src +# -- + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scri b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scri new file mode 100644 index 0000000..2740be7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/scri @@ -0,0 +1,4 @@ +#name : insert a JS tag with src +# -- + +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/sec b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/sec new file mode 100644 index 0000000..e11eafd --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/sec @@ -0,0 +1,8 @@ +#name : sec +# -- +
+ ${1:My Title} + + $0 + +
diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/uli b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/uli new file mode 100644 index 0000000..7633341 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/uli @@ -0,0 +1,5 @@ +#name : ul with a li +# -- +
    +
  • $0
  • +
diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/varece b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/varece new file mode 100644 index 0000000..9de4812 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/varece @@ -0,0 +1,3 @@ +#name : varece +# -- + diff --git a/dotfiles/desktop/.emacs.d/snippets/nxml-mode/xlink b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/xlink new file mode 100644 index 0000000..17d9f3e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/nxml-mode/xlink @@ -0,0 +1,4 @@ +#name : xlink +# -- +$2 +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/code b/dotfiles/desktop/.emacs.d/snippets/org-mode/code new file mode 100644 index 0000000..2bc8342 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/code @@ -0,0 +1,5 @@ +#name : insert a Confluence code block +# -- +{code} +$0 +{code} diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/daily b/dotfiles/desktop/.emacs.d/snippets/org-mode/daily new file mode 100644 index 0000000..8c0b19e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/daily @@ -0,0 +1,21 @@ +#name: daily +# -- +* ❯ Admin, training & maintenance +** DEVTR-1 Meetings, email, Slack++ +** DEVTR-5 System Maintenance +** DEVTR-6 Software Delivery +** DEVTR-8 Training + +* ❯ Coding + +* ❯ Review + +* ❯ Specification + +* ❯ Support +** DEVTR-3 PSERV Assistance +** DEVTR-5 Helping out colleagues in R&D + +* ❯ Report + #+BEGIN: clocktable :maxlevel 2 + #+END: diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/gr b/dotfiles/desktop/.emacs.d/snippets/org-mode/gr new file mode 100644 index 0000000..d824db0 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/gr @@ -0,0 +1 @@ +** TODO DEVTR-44 Review - $0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/q b/dotfiles/desktop/.emacs.d/snippets/org-mode/q new file mode 100644 index 0000000..cb2985e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/q @@ -0,0 +1,5 @@ +#name : insert a quote +# -- +#+begin_quote +$0 +#+end_quote diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/src b/dotfiles/desktop/.emacs.d/snippets/org-mode/src new file mode 100644 index 0000000..47e85b6 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/src @@ -0,0 +1,5 @@ +#name : insert a source (BASH) declaration +# -- +#+begin_src markdown +$0 +#+end_src diff --git a/dotfiles/desktop/.emacs.d/snippets/org-mode/title b/dotfiles/desktop/.emacs.d/snippets/org-mode/title new file mode 100644 index 0000000..b485156 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/org-mode/title @@ -0,0 +1 @@ +#+title: $0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/app b/dotfiles/desktop/.emacs.d/snippets/python-mode/app new file mode 100644 index 0000000..bb26c08 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/app @@ -0,0 +1,4 @@ +#name : app +# -- +app = $1(__name__) +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/def b/dotfiles/desktop/.emacs.d/snippets/python-mode/def new file mode 100644 index 0000000..a9dea7d --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/def @@ -0,0 +1,4 @@ +#name : def +# -- +def $1($2): + $0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/im b/dotfiles/desktop/.emacs.d/snippets/python-mode/im new file mode 100644 index 0000000..54bb82f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/im @@ -0,0 +1,4 @@ +#name : im +# -- +from $1 import $2 +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/imflask b/dotfiles/desktop/.emacs.d/snippets/python-mode/imflask new file mode 100644 index 0000000..a78d6f0 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/imflask @@ -0,0 +1,6 @@ +#name : imflask +# -- +from flask import Flask +from flask import render_template +from requests import get +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/main b/dotfiles/desktop/.emacs.d/snippets/python-mode/main new file mode 100644 index 0000000..998ffa4 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/main @@ -0,0 +1,4 @@ +#name : main +# -- +if __name__ == "__main__": + $0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/p b/dotfiles/desktop/.emacs.d/snippets/python-mode/p new file mode 100644 index 0000000..1e85585 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/p @@ -0,0 +1,6 @@ +#name : Create @property function +# -- +@property +def $1(self): + return self._$1 +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/pr b/dotfiles/desktop/.emacs.d/snippets/python-mode/pr new file mode 100644 index 0000000..7b56f04 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/pr @@ -0,0 +1,4 @@ +#name : pr +# -- +print($1) +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/prx b/dotfiles/desktop/.emacs.d/snippets/python-mode/prx new file mode 100644 index 0000000..cea39cc --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/prx @@ -0,0 +1,4 @@ +#name : prx +# -- +print(etree.tostring($1, encoding='unicode')) +$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/render b/dotfiles/desktop/.emacs.d/snippets/python-mode/render new file mode 100644 index 0000000..2f96572 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/render @@ -0,0 +1,3 @@ +#name : render +# -- +return render_template("$1", data=$2) diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/route b/dotfiles/desktop/.emacs.d/snippets/python-mode/route new file mode 100644 index 0000000..6cae423 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/route @@ -0,0 +1,5 @@ +#name : route +# -- +@app.route("/<$1>$2") +def $3($1): + $0 diff --git a/dotfiles/desktop/.emacs.d/snippets/python-mode/route2 b/dotfiles/desktop/.emacs.d/snippets/python-mode/route2 new file mode 100644 index 0000000..23f7002 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/python-mode/route2 @@ -0,0 +1,5 @@ +#name : route +# -- +@app.route("/<$1>/<$2>$3") +def $4($1, $2): + $0 diff --git a/dotfiles/desktop/.emacs.d/snippets/rego-mode/package b/dotfiles/desktop/.emacs.d/snippets/rego-mode/package new file mode 100644 index 0000000..62feaf5 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/rego-mode/package @@ -0,0 +1 @@ +package ${1:`(replace-regexp-in-string "/" "." (file-name-directory (buffer-file-name)))`}$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/rego-mode/pr b/dotfiles/desktop/.emacs.d/snippets/rego-mode/pr new file mode 100644 index 0000000..e90a4ea --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/rego-mode/pr @@ -0,0 +1 @@ +print("$1", $2)$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/args b/dotfiles/desktop/.emacs.d/snippets/sh-mode/args new file mode 100644 index 0000000..3a5418b --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/args @@ -0,0 +1,44 @@ +#key: args +# -- + +read_user_input() { + local opts= + opts=$(getopt \ + -o hr:nv \ + --long help \ + --long version: \ + --long dry-run \ + --long verbose \ + -n 'parse-options' \ + -- "$@") + if [ $? != 0 ] ; then + echo "Failed parsing options." >&2 + exit 1 + fi + eval set -- "$opts" + + while true; do + case "\$1" in + -h | --help) + print_help; + exit 0 + break;; + -r | --version) + export version=\$2 + shift 2;; + -n | --dry-run) + export dry_run=1 + shift;; + -v | --verbose) + export verbose=1 + shift;; + -- ) + shift; + break ;; + * ) + break ;; + esac + done + + export rest_of_args=$* +} \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/aw b/dotfiles/desktop/.emacs.d/snippets/sh-mode/aw new file mode 100644 index 0000000..a937976 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/aw @@ -0,0 +1,3 @@ +#name: aw +# -- +awk '{print \$${1:1}\}'$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/cmd b/dotfiles/desktop/.emacs.d/snippets/sh-mode/cmd new file mode 100644 index 0000000..d11b9ce --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/cmd @@ -0,0 +1,18 @@ +#name : cmd +# -- +#! /usr/bin/env bash + +## author: torstein, torstein@skybert.net + +set -o errexit +set -o nounset +set -o pipefail + +main() { + : +} + +main "$@" + + + diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/cwd b/dotfiles/desktop/.emacs.d/snippets/sh-mode/cwd new file mode 100644 index 0000000..4716dd8 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/cwd @@ -0,0 +1,5 @@ +#name: cwd +# -- +local _cwd= +_cwd="$(cd "\$(dirname "\${BASH_SOURCE[0]}")" &> /dev/null && pwd)" +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/eof b/dotfiles/desktop/.emacs.d/snippets/sh-mode/eof new file mode 100644 index 0000000..3f459ec --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/eof @@ -0,0 +1,5 @@ +#name : eof +# -- +cat < /dev/null && pwd)" + +## @override shunit2 +setUp() { + source "\${cwd}/../lib/$(basename "\$0" -test.sh)-lib.sh" +} + +## @override shunit2 +tearDown() { + : +} + +main() { + test -d "\${cwd}"/shunit2 || { + git -C "\${cwd}" clone --quiet --depth 1 https://github.com/kward/shunit2.git + } + + source "\${cwd}"/shunit2/shunit2 +} + +main "\$@" diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/test b/dotfiles/desktop/.emacs.d/snippets/sh-mode/test new file mode 100644 index 0000000..2dcc552 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/test @@ -0,0 +1,21 @@ +#name : test +# -- +#! /usr/bin/env bash + +## author: torstein, torstein@skybert.net + +## @override shunit2 +setUp() { + source "$(dirname "\$0")/../lib/$(basename "\$0" -test.sh).sh" +} + +## @override shunit2 +tearDown() { + : +} + +main() { + . "$(dirname "\$0")"/shunit2/shunit2 +} + +main "$@" diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/tmpdir b/dotfiles/desktop/.emacs.d/snippets/sh-mode/tmpdir new file mode 100644 index 0000000..1bd3508 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/tmpdir @@ -0,0 +1,8 @@ +#name : tmpdir +# -- +local ${1:tmp_dir}= +$1=\$(mktemp -d) + +$0 + +rm -rf "\${$1\}" diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/v b/dotfiles/desktop/.emacs.d/snippets/sh-mode/v new file mode 100644 index 0000000..daf8b33 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/v @@ -0,0 +1,3 @@ +#name : v +# -- +"\${$1}"$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/va b/dotfiles/desktop/.emacs.d/snippets/sh-mode/va new file mode 100644 index 0000000..6fe9d6e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/va @@ -0,0 +1,4 @@ +#name : va +# -- +local ${1:dir}= +$1=$($0) diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/vd b/dotfiles/desktop/.emacs.d/snippets/sh-mode/vd new file mode 100644 index 0000000..4e04405 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/vd @@ -0,0 +1,3 @@ +#name : vad +# -- +local ${1:dir}=$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/sh-mode/wh b/dotfiles/desktop/.emacs.d/snippets/sh-mode/wh new file mode 100644 index 0000000..8316bed --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/sh-mode/wh @@ -0,0 +1,6 @@ +#name : wh +# -- +while read -r ${1:f}; do + echo "\${$1}" + $0 +done diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/a b/dotfiles/desktop/.emacs.d/snippets/web-mode/a new file mode 100644 index 0000000..8a435da --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/a @@ -0,0 +1,5 @@ +#name : a +# -- + + $0 + diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/div b/dotfiles/desktop/.emacs.d/snippets/web-mode/div new file mode 100644 index 0000000..b130d10 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/div @@ -0,0 +1,5 @@ +#name : div +# -- +
+ $0 +
diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/divv b/dotfiles/desktop/.emacs.d/snippets/web-mode/divv new file mode 100644 index 0000000..879bac1 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/divv @@ -0,0 +1,5 @@ +#name : divv +# -- +
+ $0 +
diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/for b/dotfiles/desktop/.emacs.d/snippets/web-mode/for new file mode 100644 index 0000000..fbd7992 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/for @@ -0,0 +1,5 @@ +#name : for +# -- +{% for $1 in $2 %} + $0 +{% endfor %} diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/h1 b/dotfiles/desktop/.emacs.d/snippets/web-mode/h1 new file mode 100644 index 0000000..0dfa679 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/h1 @@ -0,0 +1,4 @@ +#name : h1 +# -- +

$1

+$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/h2 b/dotfiles/desktop/.emacs.d/snippets/web-mode/h2 new file mode 100644 index 0000000..67fa966 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/h2 @@ -0,0 +1,4 @@ +#name : h2 +# -- +

$1

+$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/h3 b/dotfiles/desktop/.emacs.d/snippets/web-mode/h3 new file mode 100644 index 0000000..33451c6 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/h3 @@ -0,0 +1,4 @@ +#name : h3 +# -- +

$1

+$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/h4 b/dotfiles/desktop/.emacs.d/snippets/web-mode/h4 new file mode 100644 index 0000000..6ca3684 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/h4 @@ -0,0 +1,4 @@ +#name : h4 +# -- +

$1

+$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/if b/dotfiles/desktop/.emacs.d/snippets/web-mode/if new file mode 100644 index 0000000..faa0c5f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/if @@ -0,0 +1,5 @@ +#name : if +# -- +{% if $1 %} + $0 +{% endif %} diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/img b/dotfiles/desktop/.emacs.d/snippets/web-mode/img new file mode 100644 index 0000000..ed0df3f --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/img @@ -0,0 +1,3 @@ +#name : img +# -- +$2 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/incl b/dotfiles/desktop/.emacs.d/snippets/web-mode/incl new file mode 100644 index 0000000..62a9814 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/incl @@ -0,0 +1,3 @@ +#name : incl +# -- +{% include "$1" %} diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/itemthumb b/dotfiles/desktop/.emacs.d/snippets/web-mode/itemthumb new file mode 100644 index 0000000..3eebdf3 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/itemthumb @@ -0,0 +1,13 @@ +#name : itemthumb +# -- + + {% if data.byhref[item.href].links.thumbnail[0] %} + thumbnail for {{ item.title }} +
+ {% endif %} + {{ item.title }} +
+$0 \ No newline at end of file diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/linkcss b/dotfiles/desktop/.emacs.d/snippets/web-mode/linkcss new file mode 100644 index 0000000..7c2dda9 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/linkcss @@ -0,0 +1,4 @@ +#name : linkcss +# -- + +$0 diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/p b/dotfiles/desktop/.emacs.d/snippets/web-mode/p new file mode 100644 index 0000000..bacadc5 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/p @@ -0,0 +1,5 @@ +#name : p +# -- +

+ $0 +

diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/style b/dotfiles/desktop/.emacs.d/snippets/web-mode/style new file mode 100644 index 0000000..1068b67 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/style @@ -0,0 +1,5 @@ +#name : style +# -- + diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/with b/dotfiles/desktop/.emacs.d/snippets/web-mode/with new file mode 100644 index 0000000..0823e18 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/with @@ -0,0 +1,5 @@ +#name : with +# -- +{% with $1 = $2 %} + $0 +{% endwith %} diff --git a/dotfiles/desktop/.emacs.d/snippets/web-mode/{{ b/dotfiles/desktop/.emacs.d/snippets/web-mode/{{ new file mode 100644 index 0000000..48f4261 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/web-mode/{{ @@ -0,0 +1,3 @@ +#name : = +# -- +{{ $0 }} diff --git a/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8-kustom b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8-kustom new file mode 100644 index 0000000..ff3d7b5 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8-kustom @@ -0,0 +1,5 @@ +#key : k8s/kustomization +# -- +resources: + - ${1:deployment}.yaml + - ${2:service}.yaml diff --git a/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8deployment b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8deployment new file mode 100644 index 0000000..8c9378e --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8deployment @@ -0,0 +1,44 @@ +#key : k8s/deployment +# -- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ${1:foo}-deploy +spec: + replicas: ${2:1} + selector: + matchLabels: + app: $1 + template: + metadata: + labels: + app: $1 + ${3:webkind}: ${4:colour} + spec: + containers: + - name: $1 + image: docker.io/nginx:latest + volumeMounts: + - name: nginx-template-volume + mountPath: /etc/nginx/templates + - name: nginx-confd-volume + mountPath: /etc/nginx/conf.d + + ports: + - containerPort: 80 + env: + - name: NGINX_ENVSUBST_OUTPUT_DIR + value: /usr/share/nginx/html + + - name: COLOUR + valueFrom: + configMapKeyRef: + name: nginx-colour-config + key: $1.colour + volumes: + - name: nginx-template-volume + configMap: + name: nginx-template-config + - name: nginx-confd-volume + configMap: + name: nginx-conf.d-config diff --git a/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8ingress b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8ingress new file mode 100644 index 0000000..0cb6bc7 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8ingress @@ -0,0 +1,18 @@ +#key : k8s/ingress +# -- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ${1:foo}-ingress +spec: + rules: + - host: $1.`system-name` + http: + paths: + - pathType: Prefix + path: / + backend: + service: + port: + number: 80 + name: colour-service diff --git a/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8service b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8service new file mode 100644 index 0000000..f5b7db3 --- /dev/null +++ b/dotfiles/desktop/.emacs.d/snippets/yaml-mode/k8service @@ -0,0 +1,14 @@ +#key : k8s/service +# -- +apiVersion: v1 +kind: Service +metadata: + name: ${1:foo}-service +spec: + type: ${2:NodePort} + ports: + - port: ${3:80} + targetPort: ${4:80} + + selector: + ${5:webkind}: ${6:colour}