;;; init.el --- Macos init file -*- lexical-binding: t; -*- ;; Copyright (C) 2026 Tom Willemsen ;; Author: Tom Willemsen ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Make a thing. ;;; Code: (add-to-list 'default-frame-alist '(ns-transparent-titlebar . t)) (use-package menu-bar :if (not (eq window-system 'ns)) :init (menu-bar-mode -1)) (use-package exec-path-from-shell :if (eq system-type 'darwin) :ensure t :init (exec-path-from-shell-initialize)) (use-package oni-package :if (eq system-type 'darwin) :ensure t :after package) (use-package use-package-ensure-system-package :ensure t) (use-package system-packages :ensure t) (use-package oni-core :demand t) (use-package oni-gui :demand t) (use-package oni-elfeed :after elfeed :config (require 'oni-elfeed) (setq elfeed-feeds '(("https://www.reddit.com/r/PHP/.rss" php) ("https://phpreads.com/feed" php) ("https://phpstan.org/rss.xml" php) ("https://lobste.rs/t/php.rss" php) ("https://mastodon.social/tags/PHP.rss" php) ("https://wendelladriel.com/feed.rss" php)) elfeed-curl-program-name "curl")) (use-package oni-data-dir) (use-package oni-eww :after eww) (use-package oni-yasnippet :after yasnippet) (use-package oni-php :after php) (use-package oni-yaml :after (yaml yaml-ts-mode)) (use-package oni-elisp) (use-package oni-org :after org :config (setf (map-elt org-capture-templates "t") '("A simple TODO item" entry (file "") "* TODO %? :PROPERTIES: :CREATED: %U :END:")) (setf (map-elt org-capture-templates "d") '("A simple DONE item" entry (file "") "* DONE %? :PROPERTIES: :CREATED: %U :END:")) (setf (map-elt org-capture-templates "n") '("A simple note" entry (file "") "* Note taken on %U :PROPERTIES: :CREATED: %U :END: %?")) (setf (map-elt org-capture-templates "N") '("A simple note (on current task)" item (clock) "- Note taken on %U: \\\\ %?")) (setf (map-elt org-capture-templates "r") '("An Operational Request came in" entry (file "") "* TODO Operation Request %^U :PROPERTIES: :CREATED: %U :END: %c"))) (use-package consult-yasnippet :vc (:url "https://git.sr.ht/~ryuslash/consult-yasnippet" :rev :newest)) (use-package oni-paredit :after paredit) (use-package paredit :hook fennel-mode) (use-package oni-core) (use-package oni-outline :after outline) (use-package terraform-mode) (use-package oni-dired :ensure t :after dired) (use-package docker-compose-mode :ensure t :mode (rx "docker-compose.yml" eos)) (use-package oni-corfu :ensure t :after corfu) (use-package corfu :hook (docker-compose-mode typescript-ts-mode tsx-ts-mode) :config (setq corfu-auto t)) (use-package treesit :if (and (functionp 'treesit-available-p) (treesit-available-p)) :defer t :ensure nil :config (setq treesit-language-source-alist '((yaml "https://github.com/ikatyang/tree-sitter-yaml") (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src") (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src") (php "https://github.com/tree-sitter/tree-sitter-php" "master" "php/src"))) (when (treesit-ready-p 'yaml) (add-to-list 'major-mode-remap-alist '(yaml-mode . yaml-ts-mode))) (when (treesit-ready-p 'typescript) (add-to-list 'major-mode-remap-alist '(typescript-mode . typescript-ts-mode))) (when (treesit-ready-p 'tsx) (add-to-list 'auto-mode-alist (cons (rx ".tsx" eos) 'tsx-ts-mode)))) (use-package electric-pair-mode :hook (((tsx-ts-mode typescript-ts-mode dockerfile-mode) . electric-pair-local-mode))) (use-package rainbow-delimiters :ensure t :hook prog-mode) (use-package display-fill-column-indicator :hook prog-mode) (use-package files :ensure nil :config (add-to-list 'lock-file-name-transforms (list ".*" (expand-file-name "data/lock-files/" user-emacs-directory) t))) (use-package subword :ensure nil :hook (php-mode typescript-ts-mode tsx-ts-mode)) (use-package combobulate :ensure t :vc (:url "https://github.com/mickeynp/combobulate" :rev :latest) :hook tsx-ts-mode :config (setq combobulate-prefix "C-c o")) (use-package grep :config (require 'find-dired) (add-to-list 'grep-files-aliases '("msbuild" . "*.targets *.proj")) (add-to-list 'grep-files-aliases '("typescript" . "*.ts *.tsx *.js *.jsx *.json")) (add-to-list 'grep-files-aliases '("vue" . "*.vue *.js *.jsx *.json")) (when (eq system-type 'windows-nt) (setq find-program (shell-quote-argument "c:/cygwin64/bin/find.exe")) (setq grep-program (shell-quote-argument "c:/cygwin64/bin/grep.exe")) (setq grep-use-null-device nil) (let ((exe (shell-quote-argument "c:/cygwin64/bin/ls.exe"))) (setq find-ls-option (cons (concat "-exec " exe " -ld {} \";\"") "-ld")))) (setf (map-elt display-buffer-alist (rx bos "*grep*" eos)) '(display-buffer-in-side-window (side . bottom) (slot . 0) (window-height . 0.33))) (add-to-list 'grep-find-ignored-directories ".cask") (add-hook 'grep-mode-hook 'hl-line-mode)) (use-package eglot :if (eq system-type 'darwin) :ensure-system-package (harper-ls . harper) :hook (org-mode . eglot) :config (add-to-list 'eglot-server-programs '(org-mode . ("harper-ls" "--stdio")))) (dir-locals-set-directory-class (expand-file-name "~/code/diamond-interactive/sweepstakes-frontend") 'sweepstakes-frontend) (dir-locals-set-class-variables 'sweepstakes-frontend '((nil . ((grep-find-ignored-directories . ("apps/*/.next" "node_modules" ".pnpm-store")))))) (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (load custom-file) (provide 'init) ;;; init.el ends here