Merge branch 'emacs29'
This commit is contained in:
commit
d0ba7ac54b
@ -1,2 +1,3 @@
|
||||
timezone: "America/New_York"
|
||||
install_bluetooth: true
|
||||
emacs_flavor: "full"
|
||||
|
1
ansible/roles/emacs/defaults/main.yaml
Normal file
1
ansible/roles/emacs/defaults/main.yaml
Normal file
@ -0,0 +1 @@
|
||||
emacs_flavor: "plain" # or full for systems where I do real development.
|
@ -64,9 +64,10 @@
|
||||
|
||||
(setq tramp-default-method "ssh")
|
||||
|
||||
(use-package dockerfile-mode)
|
||||
|
||||
(use-package nginx-mode
|
||||
:mode (
|
||||
("headers\\.include\\'" . nginx-mode)
|
||||
)
|
||||
:config
|
||||
(setq nginx-indent-level 4))
|
||||
|
||||
|
@ -1,14 +1,10 @@
|
||||
(package-initialize)
|
||||
(use-package use-package)
|
||||
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "https://melpa.org/packages/")
|
||||
)
|
||||
|
||||
(when (not package-archive-contents)
|
||||
(package-refresh-contents))
|
||||
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-install 'use-package))
|
||||
|
||||
(use-package auto-package-update
|
||||
:ensure t
|
||||
:config
|
||||
@ -32,6 +28,7 @@
|
||||
require-final-newline t
|
||||
visible-bell nil
|
||||
ring-bell-function 'ignore
|
||||
;; Write custom variables to an unused file so in-editor changes do not persist.
|
||||
custom-file "~/.emacs.d/.custom.el"
|
||||
;; http://ergoemacs.org/emacs/emacs_stop_cursor_enter_prompt.html
|
||||
minibuffer-prompt-properties
|
||||
@ -59,6 +56,8 @@
|
||||
use-short-answers t
|
||||
package-native-compile t
|
||||
delete-selection-mode t
|
||||
;; Don't show warnings when compiling elisp to native binaries.
|
||||
native-comp-async-report-warnings-errors 'silent
|
||||
)
|
||||
|
||||
(defun assert-directory (p)
|
||||
@ -69,8 +68,6 @@
|
||||
(setq autoload-directory (concat user-emacs-directory (file-name-as-directory "elisp") (file-name-as-directory "autoload")))
|
||||
(add-to-list 'load-path (assert-directory autoload-directory))
|
||||
|
||||
|
||||
|
||||
;; Bookmarks
|
||||
(setq
|
||||
;; persistent bookmarks
|
||||
|
@ -1,4 +1,5 @@
|
||||
(use-package eglot
|
||||
:pin gnu
|
||||
:commands (eglot eglot-ensure)
|
||||
:bind (:map eglot-mode-map
|
||||
;; M-.
|
||||
|
@ -28,6 +28,6 @@
|
||||
|
||||
(require 'lang-go)
|
||||
|
||||
(require 'lang-c)
|
||||
(require 'lang-dockerfile)
|
||||
|
||||
(load-directory autoload-directory)
|
||||
|
@ -1,12 +1,12 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package sh-mode
|
||||
(use-package bash-ts-mode
|
||||
:ensure nil
|
||||
:commands sh-mode
|
||||
:hook ((sh-mode . flycheck-mode)
|
||||
(sh-mode . tree-sitter-hl-mode)
|
||||
)
|
||||
:commands bash-ts-mode
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(sh-mode . bash-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(bash "https://github.com/tree-sitter/tree-sitter-bash"))
|
||||
(unless (treesit-ready-p 'bash) (treesit-install-language-grammar 'bash))
|
||||
)
|
||||
|
||||
(provide 'lang-bash)
|
||||
|
@ -1,32 +0,0 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
;; To generate a compilation database for the language server, run:
|
||||
;; intercept-build13 --append make
|
||||
;;
|
||||
;; Output: compile_commands.json
|
||||
|
||||
(defun use-clangd ()
|
||||
"Configure eglot to use clangd."
|
||||
(eglot-ensure)
|
||||
(defclass my/eglot-c (eglot-lsp-server) ()
|
||||
:documentation
|
||||
"Own eglot server class.")
|
||||
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(cc-mode . (my/eglot-c "clangd13")))
|
||||
|
||||
(tree-sitter-hl-mode)
|
||||
)
|
||||
|
||||
(use-package cc-mode
|
||||
;; c-mode c++-mode objc-mode java-mode idl-mode pike-mode awk-mode
|
||||
:commands (c-mode c++-mode)
|
||||
:pin manual
|
||||
:hook (
|
||||
(c-mode . use-clangd)
|
||||
(c++-mode . use-clangd)
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'lang-c)
|
13
ansible/roles/emacs/files/lang-dockerfile.el
Normal file
13
ansible/roles/emacs/files/lang-dockerfile.el
Normal file
@ -0,0 +1,13 @@
|
||||
(use-package dockerfile-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("Dockerfile\\'" . dockerfile-ts-mode)
|
||||
)
|
||||
:commands (dockerfile-mode dockerfile-ts-mode)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(dockerfile-mode . dockerfile-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile"))
|
||||
(unless (treesit-ready-p 'dockerfile) (treesit-install-language-grammar 'dockerfile))
|
||||
)
|
||||
|
||||
(provide 'lang-dockerfile)
|
@ -1,15 +1,27 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package go-mode
|
||||
:commands go-mode
|
||||
(use-package go-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.go\\'" . go-ts-mode)
|
||||
("/go\\.mod\\'" . go-ts-mode)
|
||||
)
|
||||
:commands (go-mode go-ts-mode)
|
||||
:hook (
|
||||
(go-mode . (lambda ()
|
||||
(eglot-ensure)
|
||||
(tree-sitter-hl-mode +1)
|
||||
(go-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
;; (before-save . lsp-format-buffer)
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(go-mode . go-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
|
||||
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
|
||||
(unless (treesit-ready-p 'go) (treesit-install-language-grammar 'go))
|
||||
(unless (treesit-ready-p 'gomod) (treesit-install-language-grammar 'gomod))
|
||||
)
|
||||
|
||||
(provide 'lang-go)
|
||||
|
@ -1,61 +1,113 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package js
|
||||
:mode (
|
||||
("\\.js\\'" . js-mode)
|
||||
("\\.json\\'" . js-mode)
|
||||
)
|
||||
:commands js-mode
|
||||
(use-package json-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:hook (
|
||||
(find-file . (lambda () (when (string= (file-name-extension buffer-file-name) "json") (add-hook 'before-save-hook 'json-fmt-jq nil 'local))))
|
||||
(js-mode . (lambda ()
|
||||
(tree-sitter-hl-mode +1)
|
||||
)
|
||||
)
|
||||
)
|
||||
:config
|
||||
(setq js-indent-level 2)
|
||||
)
|
||||
|
||||
(use-package typescript-mode
|
||||
:mode (
|
||||
("\\.ts\\'" . typescript-mode)
|
||||
("\\.tsx\\'" . typescript-mode)
|
||||
("\\.json\\'" . json-ts-mode)
|
||||
)
|
||||
:commands (json-ts-mode)
|
||||
:hook (
|
||||
(typescript-mode . (lambda ()
|
||||
;; (lsp-register-client
|
||||
;; (make-lsp-client :new-connection (lsp-stdio-connection '("deno" "lsp" --compat --unstable --allow-read))
|
||||
;; :major-modes '(typescript-mode)
|
||||
;; :server-id 'typescript-ls))
|
||||
(eglot-ensure)
|
||||
(tree-sitter-hl-mode +1)
|
||||
))
|
||||
;; (before-save . lsp-format-buffer)
|
||||
(json-ts-mode . (lambda ()
|
||||
(add-hook 'before-save-hook 'json-fmt-jq nil 'local)
|
||||
))
|
||||
)
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(json "https://github.com/tree-sitter/tree-sitter-json"))
|
||||
(unless (treesit-ready-p 'json) (treesit-install-language-grammar 'json))
|
||||
)
|
||||
|
||||
(defun json-fmt-jq ()
|
||||
"Run jq."
|
||||
(run-command-on-buffer "jq" "--monochrome-output" ".")
|
||||
)
|
||||
|
||||
(use-package web-mode
|
||||
:mode (("\\.dust\\'" . web-mode)
|
||||
(use-package tsx-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.tsx\\'" . tsx-ts-mode)
|
||||
)
|
||||
:config
|
||||
(setq web-mode-markup-indent-offset 2)
|
||||
(setq web-mode-enable-current-element-highlight t)
|
||||
:commands (tsx-ts-mode)
|
||||
:hook (
|
||||
(tsx-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")))
|
||||
(unless (treesit-ready-p 'tsx) (treesit-install-language-grammar 'tsx))
|
||||
)
|
||||
|
||||
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
||||
(define-derived-mode dust-mode web-mode "WebDust"
|
||||
"Major mode for editing dust templates in web-mode."
|
||||
(web-mode)
|
||||
(web-mode-set-engine "dust")
|
||||
;; (setq web-mode-content-type "html")
|
||||
|
||||
(use-package typescript-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.ts\\'" . typescript-ts-mode)
|
||||
)
|
||||
:commands (typescript-ts-mode)
|
||||
:hook (
|
||||
(typescript-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")))
|
||||
(unless (treesit-ready-p 'typescript) (treesit-install-language-grammar 'typescript))
|
||||
)
|
||||
|
||||
(use-package js-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.js\\'" . js-ts-mode)
|
||||
)
|
||||
:commands (js-ts-mode)
|
||||
:hook (
|
||||
(js-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")))
|
||||
(unless (treesit-ready-p 'javascript) (treesit-install-language-grammar 'javascript))
|
||||
)
|
||||
|
||||
(use-package css-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.css\\'" . css-ts-mode)
|
||||
)
|
||||
:commands (css-ts-mode)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(css "https://github.com/tree-sitter/tree-sitter-css"))
|
||||
(unless (treesit-ready-p 'css) (treesit-install-language-grammar 'css))
|
||||
)
|
||||
|
||||
|
||||
;; (use-package web-mode
|
||||
;; :mode (("\\.dust\\'" . web-mode)
|
||||
;; )
|
||||
;; :config
|
||||
;; (setq web-mode-markup-indent-offset 2)
|
||||
;; (setq web-mode-enable-current-element-highlight t)
|
||||
;; )
|
||||
|
||||
;; ;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
||||
;; (define-derived-mode dust-mode web-mode "WebDust"
|
||||
;; "Major mode for editing dust templates in web-mode."
|
||||
;; (web-mode)
|
||||
;; (web-mode-set-engine "dust")
|
||||
;; ;; (setq web-mode-content-type "html")
|
||||
;; )
|
||||
|
||||
(provide 'lang-javascript)
|
||||
|
@ -52,11 +52,11 @@
|
||||
)
|
||||
|
||||
(use-package python
|
||||
:mode ("\\.py\\'" . python-mode)
|
||||
:commands python-mode
|
||||
:mode ("\\.py\\'" . python-ts-mode)
|
||||
:commands (python-mode python-ts-mode)
|
||||
:pin manual
|
||||
:hook (
|
||||
(python-mode . (lambda ()
|
||||
(python-ts-mode . (lambda ()
|
||||
(when (executable-find "poetry")
|
||||
(add-poetry-venv-to-path)
|
||||
(let ((venv (locate-venv-poetry))) (when venv
|
||||
@ -64,14 +64,19 @@
|
||||
(list (cons ':python (list ':venvPath venv ':pythonPath (concat venv "/bin/python")))))
|
||||
))
|
||||
)
|
||||
(eglot-ensure)
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
|
||||
(add-hook 'before-save-hook 'python-fmt nil 'local)
|
||||
(tree-sitter-hl-mode +1)
|
||||
))
|
||||
)
|
||||
:bind ((:map python-mode-map ([backspace] . python-backspace))
|
||||
:bind ((:map python-ts-mode-map ([backspace] . python-backspace))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(python-mode . python-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(python "https://github.com/tree-sitter/tree-sitter-python"))
|
||||
(unless (treesit-ready-p 'python) (treesit-install-language-grammar 'python))
|
||||
)
|
||||
|
||||
(provide 'lang-python)
|
||||
|
@ -4,8 +4,8 @@
|
||||
(defun locate-rust-analyzer ()
|
||||
"Find rust-analyzer."
|
||||
(let ((rust-analyzer-paths (list (locate-rust-analyzer-rustup) (locate-rust-analyzer-ansible-built))))
|
||||
(let ((first-non-nill-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
||||
first-non-nill-path
|
||||
(let ((first-non-nil-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
||||
first-non-nil-path
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -24,26 +24,43 @@
|
||||
)
|
||||
)
|
||||
|
||||
(use-package rust-mode
|
||||
:mode "\\.rs\\'"
|
||||
(use-package rust-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.rs\\'" . rust-ts-mode)
|
||||
)
|
||||
:hook (
|
||||
(rust-mode . (lambda ()
|
||||
(rust-ts-mode . (lambda ()
|
||||
(eglot-ensure)
|
||||
(let ((rust-analyzer-command (locate-rust-analyzer)))
|
||||
(when rust-analyzer-command
|
||||
(add-to-list 'eglot-server-programs (cons 'rust-mode (list rust-analyzer-command)))
|
||||
(add-to-list 'eglot-server-programs (cons 'rust-ts-mode (list rust-analyzer-command)))
|
||||
)
|
||||
)
|
||||
(when-linux
|
||||
(tree-sitter-hl-mode +1)
|
||||
)
|
||||
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'rust))
|
||||
:config
|
||||
;; Add keybindings for interacting with Cargo
|
||||
(use-package cargo
|
||||
:hook (rust-mode . cargo-minor-mode))
|
||||
:hook (rust-ts-mode . cargo-minor-mode))
|
||||
)
|
||||
|
||||
(use-package toml-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.toml\\'" . toml-ts-mode)
|
||||
)
|
||||
:commands (toml-ts-mode)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(toml "https://github.com/tree-sitter/tree-sitter-toml"))
|
||||
(unless (treesit-ready-p 'toml) (treesit-install-language-grammar 'toml))
|
||||
)
|
||||
|
||||
|
||||
(provide 'lang-rust)
|
||||
|
@ -13,7 +13,6 @@
|
||||
:custom (hcl-indent-level 2)
|
||||
:hook (
|
||||
(hcl-mode . (lambda () (unless (derived-mode-p 'terraform-mode) (add-hook 'before-save-hook 'terraform-fmt nil 'local))))
|
||||
(hcl-mode . tree-sitter-hl-mode)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1,35 +1,26 @@
|
||||
(defun yaml-backspace (arg)
|
||||
"Special handling of yaml backspace."
|
||||
(interactive "*p")
|
||||
(if mark-active
|
||||
(backward-delete-char-untabify arg)
|
||||
(yaml-electric-backspace arg)
|
||||
)
|
||||
)
|
||||
|
||||
(defun yaml-format-buffer ()
|
||||
"Run prettier."
|
||||
(interactive)
|
||||
(run-command-on-buffer "prettier" "--stdin-filepath" buffer-file-name)
|
||||
)
|
||||
|
||||
(use-package yaml-mode
|
||||
(use-package yaml-ts-mode
|
||||
:mode
|
||||
(("playbook\\.tmp\\'" . yaml-mode)
|
||||
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-mode)
|
||||
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-mode)
|
||||
(
|
||||
("\\.y[a]?ml\\'" . yaml-ts-mode)
|
||||
("playbook\\.tmp\\'" . yaml-ts-mode)
|
||||
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-ts-mode)
|
||||
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-ts-mode)
|
||||
)
|
||||
:hook (
|
||||
(yaml-mode . (lambda ()
|
||||
(setq eglot-workspace-configuration
|
||||
(list (cons ':yaml (list ':hover :json-false :validate :json-false :completion t))))
|
||||
(eglot-ensure)
|
||||
(yaml-ts-mode . (lambda ()
|
||||
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
|
||||
))
|
||||
)
|
||||
:bind (
|
||||
(:map yaml-mode-map ([backspace] . yaml-backspace))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(yaml-mode . yaml-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(yaml "https://github.com/ikatyang/tree-sitter-yaml"))
|
||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'yaml))
|
||||
)
|
||||
|
||||
(provide 'lang-yaml)
|
||||
|
12
ansible/roles/emacs/files/plainmacs.desktop
Normal file
12
ansible/roles/emacs/files/plainmacs.desktop
Normal file
@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Name=Plainmacs
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text
|
||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||
Exec=plainmacs %F
|
||||
Icon=emacs
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=Development;TextEditor;
|
||||
StartupNotify=true
|
||||
StartupWMClass=Emacs
|
19
ansible/roles/emacs/files/plainmacs_init.el
Normal file
19
ansible/roles/emacs/files/plainmacs_init.el
Normal file
@ -0,0 +1,19 @@
|
||||
(progn
|
||||
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
|
||||
(load-theme 'tango-dark t)
|
||||
(set-face-attribute 'default nil :background "black")
|
||||
;; Bright yellow highlighting for selected region
|
||||
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
|
||||
;; Bright green cursor to distinguish from yellow region
|
||||
(set-cursor-color "#ccff66")
|
||||
;; Hightlight the current line
|
||||
(set-face-attribute 'line-number-current-line nil :foreground "white")
|
||||
;; Set default font
|
||||
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
|
||||
;; Set fallback font for unicode glyphs
|
||||
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
|
||||
(menu-bar-mode -1)
|
||||
(when (fboundp 'tool-bar-mode)
|
||||
(tool-bar-mode -1))
|
||||
(when ( fboundp 'scroll-bar-mode)
|
||||
(scroll-bar-mode -1)))
|
@ -1,7 +1,16 @@
|
||||
(use-package tree-sitter
|
||||
:commands (tree-sitter-hl-mode)
|
||||
(use-package treesit
|
||||
:pin manual
|
||||
:ensure nil
|
||||
:commands (treesit-install-language-grammar treesit-ready-p)
|
||||
:init
|
||||
(setq treesit-language-source-alist '())
|
||||
:config
|
||||
(use-package tree-sitter-langs)
|
||||
;; Default to the max level of detail in treesitter highlighting. This
|
||||
;; can be overridden in each language's use-package call with:
|
||||
;;
|
||||
;; :custom
|
||||
;; (treesit-font-lock-level 3)
|
||||
(setq treesit-font-lock-level 4)
|
||||
)
|
||||
|
||||
(provide 'util-tree-sitter)
|
||||
|
@ -1,5 +1,5 @@
|
||||
dependencies:
|
||||
- users
|
||||
- fonts
|
||||
- rust
|
||||
- plainmacs
|
||||
- role: rust
|
||||
when: 'emacs_flavor == "full"'
|
||||
|
@ -1,9 +1,21 @@
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- aspell
|
||||
state: present
|
||||
|
||||
- name: Install scripts
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: plainmacs
|
||||
dest: /usr/local/bin/plainmacs
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
|
@ -2,6 +2,12 @@
|
||||
package:
|
||||
name:
|
||||
- emacs
|
||||
state: present
|
||||
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- py39-pygments
|
||||
- inkscape # to support SVGs in LaTeX
|
||||
# - prettier # typescript formatting
|
||||
|
@ -2,4 +2,38 @@
|
||||
package:
|
||||
name:
|
||||
- aspell-en
|
||||
- emacs
|
||||
state: present
|
||||
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- prettier # typescript+yaml formatting
|
||||
- pyright
|
||||
- gopls
|
||||
- typescript-language-server
|
||||
state: present
|
||||
|
||||
- name: Create directories
|
||||
file:
|
||||
name: "{{ item }}"
|
||||
state: directory
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root # Using root group to match /usr/share/applications
|
||||
loop:
|
||||
- /usr/local/share/applications
|
||||
|
||||
- name: Install Configuration
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
# Can't use validate because it complains about the file extension for the temporary file.
|
||||
# validate: "desktop-file-validate %s"
|
||||
loop:
|
||||
- src: plainmacs.desktop
|
||||
dest: /usr/local/share/applications/
|
||||
|
@ -12,6 +12,7 @@
|
||||
- ".emacs.d/elisp"
|
||||
|
||||
- name: Configure dotfiles
|
||||
when: 'emacs_flavor == "full"'
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
@ -22,7 +23,20 @@
|
||||
- src: init.el
|
||||
dest: .emacs.d/init.el
|
||||
|
||||
- name: Configure dotfiles
|
||||
when: 'emacs_flavor == "plain"'
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- src: plainmacs_init.el
|
||||
dest: .emacs.d/init.el
|
||||
|
||||
- name: Configure elisp files
|
||||
when: 'emacs_flavor == "full"'
|
||||
copy:
|
||||
src: "files/{{ item }}"
|
||||
dest: "{{ account_homedir.stdout }}/.emacs.d/elisp/{{ item }}"
|
||||
@ -37,7 +51,7 @@
|
||||
- base.el
|
||||
- common-lsp.el
|
||||
- lang-bash.el
|
||||
- lang-c.el
|
||||
- lang-dockerfile.el
|
||||
- lang-go.el
|
||||
- lang-javascript.el
|
||||
- lang-lua.el
|
||||
@ -58,7 +72,8 @@
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- emacs_e
|
||||
- emacs_e # Create an alias 'e' which launches emacs
|
||||
- plainmacs # Set the EDITOR to plainmacs
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
@ -1,25 +0,0 @@
|
||||
- name: Install scripts
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: plainmacs
|
||||
dest: /usr/local/bin/plainmacs
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
- import_tasks: tasks/linux.yaml
|
||||
when: 'os_flavor == "linux"'
|
||||
|
||||
- include_tasks:
|
||||
file: tasks/peruser.yaml
|
||||
apply:
|
||||
become: yes
|
||||
become_user: "{{ initialize_user }}"
|
||||
loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}"
|
||||
loop_control:
|
||||
loop_var: initialize_user
|
@ -1,5 +0,0 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- emacs
|
||||
state: present
|
@ -1,5 +0,0 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- emacs-nativecomp
|
||||
state: present
|
@ -1 +0,0 @@
|
||||
- import_tasks: tasks/common.yaml
|
@ -1,18 +0,0 @@
|
||||
- include_role:
|
||||
name: per_user
|
||||
|
||||
- name: Configure zshrc additional imports
|
||||
copy:
|
||||
src: "files/zshrc_{{ item }}"
|
||||
dest: "{{ account_homedir.stdout }}/.config/ansible_deploy/zshrc/{{ item }}.zsh"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- plainmacs
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
- import_tasks: tasks/peruser_linux.yaml
|
||||
when: 'os_flavor == "linux"'
|
@ -0,0 +1,44 @@
|
||||
# This file is auto-generated by 'make config'.
|
||||
# Options for emacs-29.1,3
|
||||
_OPTIONS_READ=emacs-29.1,3
|
||||
_FILE_COMPLETE_OPTIONS_LIST=ACL DBUS GNUTLS GSETTINGS HARFBUZZ JSON LCMS2 M17N MAILUTILS MODULES NATIVECOMP OTF PGTK SCROLLBARS SOURCES SQLITE3 THREADS TREESITTER XFT XIM XML XWIDGETS GFILE KQUEUE ALSA OSS GTK2 GTK3 MOTIF XAW XAW3D CAIRO GIF JPEG MAGICK PNG SVG TIFF WEBP XPM
|
||||
OPTIONS_FILE_SET+=ACL
|
||||
OPTIONS_FILE_SET+=DBUS
|
||||
OPTIONS_FILE_SET+=GNUTLS
|
||||
OPTIONS_FILE_SET+=GSETTINGS
|
||||
OPTIONS_FILE_SET+=HARFBUZZ
|
||||
OPTIONS_FILE_SET+=JSON
|
||||
OPTIONS_FILE_SET+=LCMS2
|
||||
OPTIONS_FILE_UNSET+=M17N
|
||||
OPTIONS_FILE_SET+=MAILUTILS
|
||||
OPTIONS_FILE_SET+=MODULES
|
||||
OPTIONS_FILE_SET+=NATIVECOMP
|
||||
OPTIONS_FILE_SET+=OTF
|
||||
OPTIONS_FILE_SET+=PGTK
|
||||
OPTIONS_FILE_SET+=SCROLLBARS
|
||||
OPTIONS_FILE_SET+=SOURCES
|
||||
OPTIONS_FILE_SET+=SQLITE3
|
||||
OPTIONS_FILE_SET+=THREADS
|
||||
OPTIONS_FILE_SET+=TREESITTER
|
||||
OPTIONS_FILE_UNSET+=XFT
|
||||
OPTIONS_FILE_UNSET+=XIM
|
||||
OPTIONS_FILE_SET+=XML
|
||||
OPTIONS_FILE_UNSET+=XWIDGETS
|
||||
OPTIONS_FILE_UNSET+=GFILE
|
||||
OPTIONS_FILE_SET+=KQUEUE
|
||||
OPTIONS_FILE_UNSET+=ALSA
|
||||
OPTIONS_FILE_SET+=OSS
|
||||
OPTIONS_FILE_UNSET+=GTK2
|
||||
OPTIONS_FILE_SET+=GTK3
|
||||
OPTIONS_FILE_UNSET+=MOTIF
|
||||
OPTIONS_FILE_UNSET+=XAW
|
||||
OPTIONS_FILE_UNSET+=XAW3D
|
||||
OPTIONS_FILE_SET+=CAIRO
|
||||
OPTIONS_FILE_SET+=GIF
|
||||
OPTIONS_FILE_SET+=JPEG
|
||||
OPTIONS_FILE_UNSET+=MAGICK
|
||||
OPTIONS_FILE_SET+=PNG
|
||||
OPTIONS_FILE_SET+=SVG
|
||||
OPTIONS_FILE_SET+=TIFF
|
||||
OPTIONS_FILE_SET+=WEBP
|
||||
OPTIONS_FILE_UNSET+=XPM
|
@ -4,4 +4,5 @@
|
||||
- rustup
|
||||
- lldb # for lldb-vscode
|
||||
- musl # for building static binaries
|
||||
- rust-analyzer
|
||||
state: present
|
||||
|
@ -9,15 +9,24 @@ SLEEP_INTERVAL=${SLEEP_INTERVAL:-30}
|
||||
|
||||
while true; do
|
||||
# TODO: Why not vm.stats.vm.v_page_size ? Are these the same?
|
||||
page_size=$(sysctl -n hw.pagesize)
|
||||
free_pages=$(sysctl -n vm.stats.vm.v_free_count)
|
||||
free_bytes=$((page_size * free_pages))
|
||||
total_pages=$(sysctl -n vm.stats.vm.v_page_count)
|
||||
page_size=$(sysctl -n hw.pagesize)
|
||||
active=$(sysctl -n vm.stats.vm.v_active_count)
|
||||
inactive=$(sysctl -n vm.stats.vm.v_inactive_count)
|
||||
in_use_pages=$((active + inactive))
|
||||
free_pages=$((total_pages - in_use_pages))
|
||||
free_bytes=$((page_size * free_pages))
|
||||
free_percent=$((100 * free_pages / total_pages))
|
||||
text=""
|
||||
|
||||
if [ $free_bytes -ge $((1024 * 1024 * 1024)) ]; then
|
||||
text="$((free_bytes / 1024 / 1024 / 1024)) GiB"
|
||||
elif [ $free_bytes -ge $((1024 * 1024)) ]; then
|
||||
text="$((free_bytes / 1024 / 1024)) MiB"
|
||||
elif [ $free_bytes -ge 1024 ]; then
|
||||
text="$((free_bytes / 1024)) KiB"
|
||||
else
|
||||
text="$(free_bytes) B"
|
||||
fi
|
||||
|
||||
tooltip="${free_percent}%"
|
||||
|
Loading…
x
Reference in New Issue
Block a user