Compare commits

...

40 Commits

Author SHA1 Message Date
Tom Alexander
d0ba7ac54b
Merge branch 'emacs29' 2023-08-27 14:04:37 -04:00
Tom Alexander
7b512256ec
Enable pgtk and native comp for emacs. 2023-08-25 18:11:02 -04:00
Tom Alexander
51fb2ce364
Spelling mistake. 2023-08-21 00:25:51 -04:00
Tom Alexander
623ae1f55f
Use the typescript language server for javascript. 2023-08-21 00:25:51 -04:00
Tom Alexander
82777c2265
Emacs 29 has been released! Remove building from the aur. 2023-08-21 00:25:51 -04:00
Tom Alexander
762831b4ec
Add a desktop file for plainmacs on Linux. 2023-08-21 00:25:51 -04:00
Tom Alexander
c1e3b8fc4e
Combine plainmacs and emacs roles. 2023-08-21 00:25:50 -04:00
Tom Alexander
cb84d7d810
Launch nginx-mode for headers.include. 2023-08-21 00:25:50 -04:00
Tom Alexander
cfdbb50de0
Add support for lsp for typescript. 2023-08-21 00:25:50 -04:00
Tom Alexander
e3a1e69fb5
Update toml for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
3f1c45ac0a
Update js and css for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
8e76c38f23
Update json for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
ac95e4b889
Update typescript and tsx for emacs29. 2023-08-21 00:25:50 -04:00
Tom Alexander
6559f212c0
Delete C/C++ from emacs.
I rarely edit C/C++ so I'll dive into updating this for emacs29 the next time its relevant.
2023-08-21 00:25:50 -04:00
Tom Alexander
4b21ed49f1
Set a default treesit-language-source-alist. 2023-08-21 00:25:49 -04:00
Tom Alexander
e0768d1460
Remove rust-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
3bd6af7427
Remove dockerfile-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
45903fda14
Remove yaml-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
04b70049c4
Remove go-mode. 2023-08-21 00:25:49 -04:00
Tom Alexander
f5e84d6dcc
Update go for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
10e63f2a94
No changes to lua for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
87589748c2
No changes to terraform for emacs29. 2023-08-21 00:25:49 -04:00
Tom Alexander
d7326706a3
No changes for markdown for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
063b0a0d92
Update bash for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
cd02a14792
Update python for emacs29. 2023-08-21 00:25:48 -04:00
Tom Alexander
1bed94b1b1
No changes to org-mode setup for emacs 29. 2023-08-21 00:25:48 -04:00
Tom Alexander
cfc1a81a49
Update dockerfile support to use treesitter. 2023-08-21 00:25:48 -04:00
Tom Alexander
57ddfaad6f
Only install treesitter languages once. 2023-08-21 00:25:48 -04:00
Tom Alexander
5096449cf5
Install prettier on Linux. 2023-08-21 00:25:48 -04:00
Tom Alexander
64b8a3258b
Remove LSP from yaml. 2023-08-21 00:25:48 -04:00
Tom Alexander
c5cc2a36e1
Move the definition of treesitter grammars to the init block. 2023-08-21 00:25:47 -04:00
Tom Alexander
df75bf53e6
Move the treesitter language source list into the use-package block. 2023-08-21 00:25:47 -04:00
Tom Alexander
0eb5a8cc2b
Move the major mode remap for treesitter into the use-package block. 2023-08-21 00:25:47 -04:00
Tom Alexander
68bd5818ae
Disable all non-rust language configs in emacs.
I will re-enable these one-by-one as I update them for emacs29.
2023-08-21 00:25:47 -04:00
Tom Alexander
7761267bb4
Set the treesitter highlighting detail level to the max. 2023-08-21 00:25:47 -04:00
Tom Alexander
6c1adbef04
Cut down the tree sitter langs to just rust. 2023-08-21 00:25:47 -04:00
Tom Alexander
cb63ab4b1f
Use treesitter for rust. 2023-08-21 00:25:47 -04:00
Tom Alexander
ba21ec24b8
Install rust-analyzer on Linux. 2023-08-21 00:25:47 -04:00
Tom Alexander
ec44eb5960
Use built-in use-package and eglot. Disable external tree-sitter. 2023-08-21 00:25:46 -04:00
Tom Alexander
cb383ead75
Switch to emacs 29 on Linux. 2023-08-21 00:25:46 -04:00
35 changed files with 361 additions and 196 deletions

View File

@ -1,2 +1,3 @@
timezone: "America/New_York"
install_bluetooth: true
emacs_flavor: "full"

View File

@ -0,0 +1 @@
emacs_flavor: "plain" # or full for systems where I do real development.

View File

@ -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))

View File

@ -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

View File

@ -1,4 +1,5 @@
(use-package eglot
:pin gnu
:commands (eglot eglot-ensure)
:bind (:map eglot-mode-map
;; M-.

View File

@ -28,6 +28,6 @@
(require 'lang-go)
(require 'lang-c)
(require 'lang-dockerfile)
(load-directory autoload-directory)

View File

@ -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)

View File

@ -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)

View 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)

View File

@ -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 ()
(go-ts-mode . (lambda ()
(when-linux
(eglot-ensure)
(tree-sitter-hl-mode +1)
)
))
;; (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)

View File

@ -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)
(json-ts-mode . (lambda ()
(add-hook 'before-save-hook 'json-fmt-jq nil 'local)
))
;; (before-save . lsp-format-buffer)
)
)
: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)

View File

@ -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")))))
))
)
(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)

View File

@ -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)

View File

@ -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)
)
)

View File

@ -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)

View 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

View 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)))

View File

@ -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)

View File

@ -1,5 +1,5 @@
dependencies:
- users
- fonts
- rust
- plainmacs
- role: rust
when: 'emacs_flavor == "full"'

View File

@ -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"'

View File

@ -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

View File

@ -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/

View File

@ -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"'

View File

@ -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

View File

@ -1,5 +0,0 @@
- name: Install packages
package:
name:
- emacs
state: present

View File

@ -1,5 +0,0 @@
- name: Install packages
package:
name:
- emacs-nativecomp
state: present

View File

@ -1 +0,0 @@
- import_tasks: tasks/common.yaml

View File

@ -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"'

View File

@ -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

View File

@ -4,4 +4,5 @@
- rustup
- lldb # for lldb-vscode
- musl # for building static binaries
- rust-analyzer
state: present

View File

@ -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}%"