Compare commits

..

No commits in common. "main" and "setup-ci-maybe" have entirely different histories.

90 changed files with 2716 additions and 1955 deletions

View file

@ -1,19 +1,18 @@
on: [push] on: [push]
jobs: jobs:
test: test:
runs-on: act-runner
name: Test config on ${{matrix.node}} name: Test config on ${{matrix.node}}
runs-on: docker
strategy: strategy:
matrix: matrix:
node: ["20"] node: ["20"]
steps: steps:
- name: Checkout - name: Checkout
uses: https://code.forgejo.org/actions/checkout@v6 uses: https://code.forgejo.org/actions/checkout@v4
- name: Setup NodeJS - name: Setup NodeJS
uses: https://code.forgejo.org/actions/setup-node@v6 uses: https://code.forgejo.org/actions/setup-node@v4
with: with:
node-version: ${{matrix.node}} node-version: ${{matrix.node}}
@ -21,7 +20,7 @@ jobs:
run: npm install -g @emacs-eask/cli run: npm install -g @emacs-eask/cli
- name: Run tests - name: Run tests
run: eask test buttercup run: emacs --init-directory . --debug-init --eval "(kill-emacs 0)"
- name: Uninstall eask - name: Uninstall eask
run: npm uninstall -g @emacs-eask/cli run: npm uninstall -g @emacs-eask/cli

7
.gitignore vendored
View file

@ -12,6 +12,8 @@ eshell/history
tramp tramp
url/* url/*
transient/* transient/*
.lsp-session-*
lsp-cache
eshell/* eshell/*
.yas-compiled-snippets.el .yas-compiled-snippets.el
ac-comphist.dat ac-comphist.dat
@ -23,11 +25,6 @@ ac-comphist.dat
/speed-type /speed-type
/tutorial /tutorial
/tree-sitter /tree-sitter
emacs.keyfreq
ielm-history.eld
# Ignore actual init as it can contain private data # Ignore actual init as it can contain private data
init.el init.el
# Ignore secrets
icejam-secrets.el

View file

@ -1,8 +1,14 @@
# Emacs configuration # My emacs config
This is the repository of my emacs configuration that I use on both MacOS and Linux. There are some additional configuration properties to use with BSD when I was testing it, but it is best treated as abandoned. Contains config I use for the following languages/modes:
I predominantly write Elixir, so that part is the most polished bit of the configuration but it also works for Ruby, Rust, Go, Javascript/Typescript and Kotlin. I use emacs for programming, so there is no org-mode, GTD, email or RSS here. I use deft to keep some programming notes here and there. * Elixir
* Ruby
* Rust
* Markdown
* HTML and compatibile (ERB)
As of current iteration, I avoid usage of Evil modes, instead focusing of usage of Emacs functionality.
## Installation ## Installation
@ -13,5 +19,6 @@ git clone git@github.com:maciej-szlosarczyk/emacs.git ~/.emacs.d
And then put the following lines into init.el And then put the following lines into init.el
```emacs ```emacs
(add-to-list 'load-path (concat user-emacs-directory "lisp"))
(require 'icejam-custom-init) (require 'icejam-custom-init)
``` ```

View file

@ -1,4 +1,4 @@
;;; +early-init.el --- summary -*- lexical-binding: t; -*- ;;; +early-init.el --- summary
;; Author: Maciej Szlosarczyk ;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk ;; Maintainer: Maciej Szlosarczyk
@ -17,17 +17,4 @@
;; Log garbage collection. ;; Log garbage collection.
(setq garbage-collection-messages nil) (setq garbage-collection-messages nil)
;; Monitor startup time
(add-hook 'emacs-startup-hook
(lambda ()
(message "Emacs ready in %s with %d garbage collections."
(format "%.2f seconds"
(float-time
(time-subtract after-init-time before-init-time)))
gcs-done)))
;; Load secrets file before doing anything else:
(let ((secrets-file (concat user-emacs-directory "icejam-secrets.el")))
(when (file-exists-p secrets-file)
(load secrets-file)))
;;; early-init.el ends here ;;; early-init.el ends here

936
elpaca.lock Normal file
View file

@ -0,0 +1,936 @@
((elpaca :source "lockfile" :date
(26402 1607 905734 0)
:recipe
(:source nil :protocol https :inherit t :depth 1 :repo "https://github.com/progfolio/elpaca.git" :ref "fcf7d4e72858bafce86674b02f3bfe1fd83e7089" :files
(:defaults "elpaca-test.el"
(:exclude "extensions"))
:build
(:not elpaca--activate-package)
:package "elpaca"))
(elpaca-use-package :source "lockfile" :date
(26402 1607 895888 0)
:recipe
(:package "elpaca-use-package" :wait t :repo "https://github.com/progfolio/elpaca.git" :files
("extensions/elpaca-use-package.el")
:main "extensions/elpaca-use-package.el" :build
(:not elpaca--compile-info)
:source "Elpaca extensions" :protocol https :inherit t :depth treeless :ref "fcf7d4e72858bafce86674b02f3bfe1fd83e7089"))
(transient :source "lockfile" :date
(26402 1607 886188 0)
:recipe
(:package "transient" :fetcher github :repo "magit/transient" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :wait t :ref "cb11650a60728d214b2a4d7bb7535add2c4c5d4c"))
(compat :source "lockfile" :date
(26402 1607 876033 0)
:recipe
(:package "compat" :repo
("https://github.com/emacs-compat/compat" . "compat")
:files
("*"
(:exclude ".git"))
:source "GNU-devel ELPA" :protocol https :inherit t :depth treeless :ref "9a234d0d28cccd33f64faea6074fa2865a17c164"))
(diminish :source "lockfile" :date
(26402 1607 866319 0)
:recipe
(:package "diminish" :fetcher github :repo "myrjola/diminish.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :wait t :ref "fbd5d846611bad828e336b25d2e131d1bc06b83d"))
(company :source "lockfile" :date
(26402 1607 856573 0)
:recipe
(:package "company" :fetcher github :repo "company-mode/company-mode" :files
(:defaults "icons"
("images/small" "doc/images/small/*.png"))
:source "MELPA" :protocol https :inherit t :depth treeless :wait t :ref "9c273fc7c1a9dd69ccf508589211c4f8bd0e0765"))
(lsp-mode :source "lockfile" :date
(26402 1607 846562 0)
:recipe
(:package "lsp-mode" :repo "emacs-lsp/lsp-mode" :fetcher github :files
(:defaults "clients/*.el")
:source "MELPA" :protocol https :inherit t :depth treeless :wait t :ref "78c194d2d3c34f14646a006574b9bb9369ea55cb"))
(dash :source "lockfile" :date
(26402 1607 836828 0)
:recipe
(:package "dash" :fetcher github :repo "magnars/dash.el" :files
("dash.el" "dash.texi")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1de9dcb83eacfb162b6d9a118a4770b1281bcd84"))
(f :source "lockfile" :date
(26402 1607 826548 0)
:recipe
(:package "f" :fetcher github :repo "rejeep/f.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "931b6d0667fe03e7bf1c6c282d6d8d7006143c52"))
(ht :source "lockfile" :date
(26402 1607 816600 0)
:recipe
(:package "ht" :fetcher github :repo "Wilfred/ht.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1c49aad1c820c86f7ee35bf9fff8429502f60fef"))
(spinner :source "lockfile" :date
(26402 1607 806261 0)
:recipe
(:package "spinner" :repo
("https://github.com/Malabarba/spinner.el" . "spinner")
:files
("*"
(:exclude ".git"))
:source "GNU-devel ELPA" :protocol https :inherit t :depth treeless :ref "d4647ae87fb0cd24bc9081a3d287c860ff061c21"))
(markdown-mode :source "lockfile" :date
(26402 1607 796174 0)
:recipe
(:package "markdown-mode" :fetcher github :repo "jrblevin/markdown-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "6102ac5b7301b4c4fc0262d9c6516693d5a33f2b"))
(lv :source "lockfile" :date
(26402 1607 786305 0)
:recipe
(:package "lv" :repo "abo-abo/hydra" :fetcher github :files
("lv.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "317e1de33086637579a7aeb60f77ed0405bf359b"))
(s :source "lockfile" :date
(26402 1607 776904 0)
:recipe
(:package "s" :fetcher github :repo "magnars/s.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "dda84d38fffdaf0c9b12837b504b402af910d01d"))
(easy-kill :source "lockfile" :date
(26402 1607 766689 0)
:recipe
(:package "easy-kill" :fetcher github :repo "leoliu/easy-kill" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "de7d66c3c864a4722a973ee9bc228a14be49ba0c"))
(buffer-move :source "lockfile" :date
(26402 1607 756032 0)
:recipe
(:package "buffer-move" :fetcher github :repo "lukhas/buffer-move" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "e7800b3ab1bd76ee475ef35507ec51ecd5a3f065"))
(gcmh :source "lockfile" :date
(26402 1607 743611 0)
:recipe
(:package "gcmh" :repo "koral/gcmh" :fetcher gitlab :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "0089f9c3a6d4e9a310d0791cf6fa8f35642ecfd9"))
(exec-path-from-shell :source "lockfile" :date
(26402 1607 733693 0)
:recipe
(:package "exec-path-from-shell" :fetcher github :repo "purcell/exec-path-from-shell" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "72ede29a0e0467b3b433e8edbee3c79bab005884"))
(direnv :source "lockfile" :date
(26402 1607 723904 0)
:recipe
(:package "direnv" :fetcher github :repo "wbolster/emacs-direnv" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c0bf3b81c7a97e2a0d06d05495e86848254fcc1f"))
(treemacs :source "lockfile" :date
(26402 1607 714078 0)
:recipe
(:package "treemacs" :fetcher github :repo "Alexander-Miller/treemacs" :files
(:defaults "Changelog.org" "icons" "src/elisp/treemacs*.el" "src/scripts/treemacs*.py"
(:exclude "src/extra/*"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "2f0668439dfa246b2807497f2824ec7c7fbbeb49"))
(treemacs-all-the-icons :source "lockfile" :date
(26402 1607 704346 0)
:recipe
(:package "treemacs-all-the-icons" :fetcher github :repo "Alexander-Miller/treemacs" :files
("src/extra/treemacs-all-the-icons.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "2f0668439dfa246b2807497f2824ec7c7fbbeb49"))
(keyfreq :source "lockfile" :date
(26402 1607 694626 0)
:recipe
(:package "keyfreq" :fetcher github :repo "dacap/keyfreq" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c6955162307f37c2ac631d9daf118781009f8dda"))
(which-key :source "lockfile" :date
(26402 1607 684726 0)
:recipe
(:package "which-key" :repo "justbur/emacs-which-key" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "38d4308d1143b61e4004b6e7a940686784e51500"))
(tree-sitter-langs :source "lockfile" :date
(26402 1607 675002 0)
:recipe
(:package "tree-sitter-langs" :repo "emacs-tree-sitter/tree-sitter-langs" :fetcher github :branch "release" :files
(:defaults "queries")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "562e4681d365c70169d807e23db4c37427628627"))
(vertico :source "lockfile" :date
(26402 1607 664499 0)
:recipe
(:package "vertico" :repo "minad/vertico" :files
(:defaults "extensions/vertico-*.el")
:fetcher github :source "MELPA" :protocol https :inherit t :depth treeless :ref "e826dfcb14af5e2cfd88ed110d0208ddc2d37788"))
(orderless :source "lockfile" :date
(26402 1607 655175 0)
:recipe
(:package "orderless" :repo "oantolin/orderless" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "96b74d2450ab4ab1a175d0e86c62f6695c4709b5"))
(marginalia :source "lockfile" :date
(26402 1607 645517 0)
:recipe
(:package "marginalia" :repo "minad/marginalia" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "be2e57efff640880251c082ac93bd365b7202e6a"))
(consult :source "lockfile" :date
(26402 1607 635800 0)
:recipe
(:package "consult" :repo "minad/consult" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "afda4c68a4ebcc9104bf2a645848d7e92269f054"))
(helpful :source "lockfile" :date
(26402 1607 625550 0)
:recipe
(:package "helpful" :repo "Wilfred/helpful" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "4ba24cac9fb14d5fdc32582cd947572040e82b2c"))
(avy :source "lockfile" :date
(26402 1607 615819 0)
:recipe
(:package "avy" :repo "abo-abo/avy" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "be612110cb116a38b8603df367942e2bb3d9bdbe"))
(rainbow-delimiters :source "lockfile" :date
(26402 1607 605910 0)
:recipe
(:package "rainbow-delimiters" :fetcher github :repo "Fanael/rainbow-delimiters" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f40ece58df8b2f0fb6c8576b527755a552a5e763"))
(rainbow-mode :source "lockfile" :date
(26402 1607 596082 0)
:recipe
(:package "rainbow-mode" :repo
("git://git.sv.gnu.org/emacs/elpa" . "rainbow-mode")
:branch "externals/rainbow-mode" :files
("*"
(:exclude ".git"))
:source "GNU-devel ELPA" :protocol https :inherit t :depth treeless :ref "f7db3b5919f70420a91eb199f8663468de3033f3"))
(dash-at-point :source "lockfile" :date
(26402 1607 586328 0)
:recipe
(:package "dash-at-point" :fetcher github :repo "stanaka/dash-at-point" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fba1a6f42ea51d05110e12c62bdced664059eb55"))
(column-enforce-mode :source "lockfile" :date
(26402 1607 576366 0)
:recipe
(:package "column-enforce-mode" :fetcher github :repo "jordonbiondo/column-enforce-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "14a7622f2268890e33536ccd29510024d51ee96f"))
(pcre2el :source "lockfile" :date
(26402 1607 566435 0)
:recipe
(:package "pcre2el" :fetcher github :repo "joddie/pcre2el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "b4d846d80dddb313042131cf2b8fbf647567e000"))
(visual-regexp-steroids :source "lockfile" :date
(26402 1607 556851 0)
:recipe
(:package "visual-regexp-steroids" :repo "benma/visual-regexp-steroids.el" :fetcher github :files
("visual-regexp-steroids.el" "regexp.py")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "a6420b25ec0fbba43bf57875827092e1196d8a9e"))
(yasnippet :source "lockfile" :date
(26402 1607 546830 0)
:recipe
(:package "yasnippet" :repo "joaotavora/yasnippet" :fetcher github :files
("yasnippet.el" "snippets")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fe1f4e0e96ce42d8668920335eb22c3c009dab3e"))
(yasnippet-snippets :source "lockfile" :date
(26402 1607 537428 0)
:recipe
(:package "yasnippet-snippets" :repo "AndreaCrotti/yasnippet-snippets" :fetcher github :files
("*.el" "snippets" ".nosearch")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "23bcbcd11f567a2659ae413c62c82892eb50a3f1"))
(company-box :source "lockfile" :date
(26402 1607 527178 0)
:recipe
(:package "company-box" :fetcher github :repo "sebastiencs/company-box" :files
(:defaults "images")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c4f2e243fba03c11e46b1600b124e036f2be7691"))
(copilot :source "lockfile" :date
(26402 1607 517275 0)
:recipe
(:source nil :protocol https :inherit t :depth treeless :host github :repo "copilot-emacs/copilot.el" :files
("*.el")
:package "copilot" :ref "b5878d6a8c741138b5efbf4fe1c594f3fd69dbdd"))
(gptel :source "lockfile" :date
(26402 1607 506786 0)
:recipe
(:package "gptel" :repo "karthink/gptel" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "3cb6d5a193a78820a1dd1377a82f364ae066b959"))
(elysium :source "lockfile" :date
(26402 1607 495268 0)
:recipe
(:package "elysium" :fetcher github :repo "lanceberge/elysium" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "622fe74aaa70a7e4e42bd74a3cfd78e242360bbf"))
(flycheck :source "lockfile" :date
(26402 1607 485155 0)
:recipe
(:package "flycheck" :repo "flycheck/flycheck" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "5217e0e02f487d70e3d418e5e6ce884fc9711511"))
(flyspell-correct :source "lockfile" :date
(26402 1607 475219 0)
:recipe
(:package "flyspell-correct" :repo "d12frosted/flyspell-correct" :fetcher github :files
("flyspell-correct.el" "flyspell-correct-ido.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1e7a5a56362dd875dddf848b9a9e25d1395b9d37"))
(deft :source "lockfile" :date
(26402 1607 465417 0)
:recipe
(:package "deft" :repo "jrblevin/deft" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "b369d7225d86551882568788a23c5497b232509c"))
(lsp-ui :source "lockfile" :date
(26402 1607 455554 0)
:recipe
(:package "lsp-ui" :repo "emacs-lsp/lsp-ui" :fetcher github :files
(:defaults "lsp-ui-doc.html" "resources")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "072bb29152038518c2478813b82c8d04d07df84c"))
(dap-mode :source "lockfile" :date
(26402 1607 445623 0)
:recipe
(:package "dap-mode" :repo "emacs-lsp/dap-mode" :fetcher github :files
(:defaults "icons")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "496dd3a60f71a396df7e9a5ff6c500127d00ec03"))
(dashboard :source "lockfile" :date
(26402 1607 435847 0)
:recipe
(:package "dashboard" :fetcher github :repo "emacs-dashboard/emacs-dashboard" :files
(:defaults "banners")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "946b9957470a3cac6b089bdf2d9edd07a29fcc9c"))
(magit :source "lockfile" :date
(26402 1607 426063 0)
:recipe
(:package "magit" :fetcher github :repo "magit/magit" :files
("lisp/magit*.el" "lisp/git-*.el" "docs/magit.texi" "docs/AUTHORS.md" "LICENSE" "magit-pkg.el"
(:exclude "lisp/magit-section.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f2a61334430291d2162a68138c95ab310a8557f1"))
(vundo :source "lockfile" :date
(26402 1607 416091 0)
:recipe
(:package "vundo" :repo
("https://github.com/casouri/vundo" . "vundo")
:files
("*"
(:exclude ".git" "test"))
:source "GNU-devel ELPA" :protocol https :inherit t :depth treeless :ref "ca590c571546eb1d38c855216db11d28135892f2"))
(speed-type :source "lockfile" :date
(26402 1607 406168 0)
:recipe
(:package "speed-type" :fetcher github :repo "dakra/speed-type" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "b982ee6081a11837760eeaed73c4f413eefb07b1"))
(spaceline :source "lockfile" :date
(26402 1607 396239 0)
:recipe
(:package "spaceline" :fetcher github :repo "TheBB/spaceline" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "086420d16e526c79b67fc1edec4c2ae1e699f372"))
(base16-theme :source "lockfile" :date
(26402 1607 386261 0)
:recipe
(:package "base16-theme" :repo "tinted-theming/base16-emacs" :fetcher github :files
(:defaults "build/*.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "077726249216bef6d98d0542eb6289641a58e8d0"))
(clojure-mode :source "lockfile" :date
(26402 1607 376080 0)
:recipe
(:package "clojure-mode" :repo "clojure-emacs/clojure-mode" :fetcher github :files
("clojure-mode.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "59888c84b61081e9b0085e388f55132925a66e7a"))
(cider :source "lockfile" :date
(26402 1607 366108 0)
:recipe
(:package "cider" :fetcher github :repo "clojure-emacs/cider" :files
("lisp/*.el" "bin/*.sh" "*.el" "clojure.sh" "lein.sh"
(:exclude ".dir-locals.el"))
:old-names
(nrepl)
:source "MELPA" :protocol https :inherit t :depth treeless :ref "7b051c4298816fdb70f3d301f0840379e28eca63"))
(clj-refactor :source "lockfile" :date
(26402 1607 356365 0)
:recipe
(:package "clj-refactor" :fetcher github :repo "clojure-emacs/clj-refactor.el" :files
(:defaults "CHANGELOG.md")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "dc1bbc8cdaa723bdbb6669ea7d280625c370755d"))
(dart-mode :source "lockfile" :date
(26402 1607 346190 0)
:recipe
(:package "dart-mode" :fetcher github :repo "emacsorphanage/dart-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "02e919c1cf200b4938139c18068577faff1fb364"))
(lsp-dart :source "lockfile" :date
(26402 1607 336342 0)
:recipe
(:package "lsp-dart" :repo "emacs-lsp/lsp-dart" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "9ffbafb7dcea3ef3d9e29bafb51d5167f0585d2c"))
(dhall-mode :source "lockfile" :date
(26402 1607 325799 0)
:recipe
(:package "dhall-mode" :repo "psibi/dhall-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "87ab69fe765d87b3bb1604a306a8c44d6887681d"))
(lispy :source "lockfile" :date
(26402 1607 315824 0)
:recipe
(:package "lispy" :repo "abo-abo/lispy" :fetcher github :files
(:defaults "lispy-clojure.clj" "lispy-clojure.cljs" "lispy-python.py")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fe44efd21573868638ca86fc8313241148fabbe3"))
(elixir-mode :source "lockfile" :date
(26402 1607 305813 0)
:recipe
(:package "elixir-mode" :fetcher github :repo "elixir-editors/emacs-elixir" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "00d6580a040a750e019218f9392cf9a4c2dac23a"))
(elixir-ts-mode :source "lockfile" :date
(26402 1607 295420 0)
:recipe
(:package "elixir-ts-mode" :repo "wkirschbaum/elixir-ts-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "b35c983f551ccf821ebebad50747b5b417133e52"))
(erlang :source "lockfile" :date
(26402 1607 285519 0)
:recipe
(:package "erlang" :fetcher github :repo "erlang/otp" :version-regexp "OTP-%v" :files
("lib/tools/emacs/*.el"
(:exclude "lib/tools/emacs/erlang_appwiz.el"))
:source "MELPA" :protocol https :inherit t :depth 1 :ref "4f141f41a0ed76a023d56974fba1082480d30887"))
(fsharp-mode :source "lockfile" :date
(26402 1607 275275 0)
:recipe
(:package "fsharp-mode" :fetcher github :repo "fsharp/emacs-fsharp-mode" :files
(:defaults
(:exclude "eglot-fsharp.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "677d78c4d6cb574086408082dedbcaef04a85359"))
(gleam-ts-mode :source "lockfile" :date
(26402 1607 265245 0)
:recipe
(:package "gleam-ts-mode" :fetcher github :repo "gleam-lang/gleam-mode" :files
("gleam-ts-mode.el")
:source "MELPA" :protocol https :inherit t :depth treeless :type git :host github :ref "d00f37d0b47f5d6810aa295af98c40a7708b4305"))
(go-mode :source "lockfile" :date
(26402 1607 255208 0)
:recipe
(:package "go-mode" :repo "dominikh/go-mode.el" :fetcher github :files
("go-mode.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "602d73e22646b1b98b2eb97927fd426c0d1d2f92"))
(haskell-mode :source "lockfile" :date
(26402 1607 244954 0)
:recipe
(:package "haskell-mode" :repo "haskell/haskell-mode" :fetcher github :files
(:defaults "NEWS" "logo.svg")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "7d4529ac4443d70719638806cb80325a418110b9"))
(lsp-haskell :source "lockfile" :date
(26402 1607 235042 0)
:recipe
(:package "lsp-haskell" :repo "emacs-lsp/lsp-haskell" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "6981f8d1225c038c1a130e8cf70530cfe15f976e"))
(js2-mode :source "lockfile" :date
(26402 1607 224827 0)
:recipe
(:package "js2-mode" :repo "mooz/js2-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "62d6cb169ed4cb6d7ae3ddbd8da9c995fed0ab32"))
(typescript-mode :source "lockfile" :date
(26402 1607 214184 0)
:recipe
(:package "typescript-mode" :fetcher github :repo "emacs-typescript/typescript.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fc3a4f3b275e8cf6cf41aa0c9ef42e25ef908feb"))
(kotlin-mode :source "lockfile" :date
(26402 1607 204410 0)
:recipe
(:package "kotlin-mode" :repo "Emacs-Kotlin-Mode-Maintainers/kotlin-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fddd747e5b4736e8b27a147960f369b86179ddff"))
(gradle-mode :source "lockfile" :date
(26402 1607 194485 0)
:recipe
(:package "gradle-mode" :fetcher github :repo "scubacabra/emacs-gradle-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "e4d665d5784ecda7ddfba015f07c69be3cfc45f2"))
(lean4-mode :source "lockfile" :date
(26402 1607 184266 0)
:recipe
(:source nil :protocol https :inherit t :depth treeless :type git :host github :repo "leanprover/lean4-mode" :files
("*.el" "data")
:package "lean4-mode" :ref "004ad0e60b85fb4eac74a5523ee3e648fd5cfce5"))
(merlin :source "lockfile" :date
(26402 1607 174070 0)
:recipe
(:package "merlin" :fetcher github :repo "ocaml/merlin" :files
("emacs/*.el"
(:exclude "emacs/merlin-ac.el" "emacs/merlin-company.el" "emacs/merlin-iedit.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "a36f42a5b181d0c9cc84174e8eb241b11eeabc0f"))
(opam-switch-mode :source "lockfile" :date
(26402 1607 163795 0)
:recipe
(:package "opam-switch-mode" :fetcher github :repo "ProofGeneral/opam-switch-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1069e56a662f23ea09d4e05611bdedeb99257012"))
(dune :source "lockfile" :date
(26402 1607 153742 0)
:recipe
(:package "dune" :fetcher github :repo "ocaml/dune" :files
("editor-integration/emacs/*.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "d27724b4f0ee27607f78be39191cb9cda0306645"))
(tuareg :source "lockfile" :date
(26402 1607 142633 0)
:recipe
(:package "tuareg" :fetcher github :repo "ocaml/tuareg" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1d53723e39f22ab4ab76d31f2b188a2879305092"))
(dockerfile-mode :source "lockfile" :date
(26402 1607 132527 0)
:recipe
(:package "dockerfile-mode" :fetcher github :repo "spotify/dockerfile-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "4d893bd2da15833ce056332e6c972d5d93e78f04"))
(docker :source "lockfile" :date
(26402 1607 122262 0)
:recipe
(:package "docker" :fetcher github :repo "Silex/docker.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "6f8bba0d11a5143872dfc25afdabe16cae410d11"))
(terraform-mode :source "lockfile" :date
(26402 1607 111891 0)
:recipe
(:package "terraform-mode" :repo "hcl-emacs/terraform-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "abfc10f5e313c4bb99de136a14636e9bc6df74f6"))
(ansible :source "lockfile" :date
(26402 1607 101523 0)
:recipe
(:package "ansible" :fetcher gitlab :repo "emacs-ansible/emacs-ansible" :files
(:defaults "snippets" "dict")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "e171dacc12eeaba5dbd7fd887f94d11b357fe958"))
(nginx-mode :source "lockfile" :date
(26402 1607 91212 0)
:recipe
(:package "nginx-mode" :fetcher github :repo "ajc/nginx-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c4ac5de975d65c84893a130a470af32a48b0b66c"))
(jenkinsfile-mode :source "lockfile" :date
(26402 1607 79942 0)
:recipe
(:package "jenkinsfile-mode" :repo "https://github.com/john2x/jenkinsfile-mode.git" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :branch "master" :ref "568865ee419e0592de0dd0717d6769a66d9df111"))
(lua-mode :source "lockfile" :date
(26402 1607 68754 0)
:recipe
(:package "lua-mode" :repo "immerrr/lua-mode" :fetcher github :files
(:defaults
(:exclude "init-tryout.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "d074e4134b1beae9ed4c9b512af741ca0d852ba3"))
(graphql-mode :source "lockfile" :date
(26402 1607 57149 0)
:recipe
(:package "graphql-mode" :repo "davazp/graphql-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c3baca92809e6f6c8dd2596a413b277f3b0160ea"))
(yaml-mode :source "lockfile" :date
(26402 1607 45835 0)
:recipe
(:package "yaml-mode" :repo "yoshiki/yaml-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "d91f878729312a6beed77e6637c60497c5786efa"))
(json-mode :source "lockfile" :date
(26402 1607 34114 0)
:recipe
(:package "json-mode" :fetcher github :repo "json-emacs/json-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "77125b01c0ddce537085201098bea9b4b8ba6be3"))
(git-modes :source "lockfile" :date
(26402 1607 22718 0)
:recipe
(:package "git-modes" :fetcher github :repo "magit/git-modes" :old-names
(gitattributes-mode gitconfig-mode gitignore-mode)
:files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f99010bbeb8b6d8a0819fac0195a2ef0159d08f0"))
(php-mode :source "lockfile" :date
(26402 1607 12985 0)
:recipe
(:package "php-mode" :repo "emacs-php/php-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "31f702ee2de35d514fb633c0c37531cb648bff70"))
(purescript-mode :source "lockfile" :date
(26402 1607 3611 0)
:recipe
(:package "purescript-mode" :repo "purescript-emacs/purescript-mode" :fetcher github :files
(:defaults "NEWS" "snippets")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "d187b3d4bbb4d9cb36a4c6c55f35d63d159a26e8"))
(rspec-mode :source "lockfile" :date
(26402 1606 985659 0)
:recipe
(:package "rspec-mode" :repo "pezra/rspec-mode" :fetcher github :files
("rspec-mode.el" "snippets")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "29df3d081c6a1cbdf840cd13d45ea1c100c5bbaa"))
(ruby-end :source "lockfile" :date
(26402 1606 974076 0)
:recipe
(:package "ruby-end" :repo "rejeep/ruby-end.el" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "ba7d7230f9e3ed75c9982d32bb9fdff1dc10935d"))
(rbs-mode :source "lockfile" :date
(26402 1606 962863 0)
:recipe
(:package "rbs-mode" :fetcher github :repo "ybiquitous/rbs-mode" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "21ec7718a2b3149c13464e182fd4e1cf64bff277"))
(rust-mode :source "lockfile" :date
(26402 1606 951901 0)
:recipe
(:package "rust-mode" :repo "rust-lang/rust-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "3bd0863f28414e629ca15ad2852a429a126226c5"))
(flycheck-rust :source "lockfile" :date
(26402 1606 940752 0)
:recipe
(:package "flycheck-rust" :repo "flycheck/flycheck-rust" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "e7692cded99999d2dc3d3df5d977dcdeb1c179fb"))
(fish-mode :source "lockfile" :date
(26402 1606 930053 0)
:recipe
(:package "fish-mode" :fetcher github :repo "wwwjfy/emacs-fish" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "2526b1803b58cf145bc70ff6ce2adb3f6c246f89"))
(web-mode :source "lockfile" :date
(26402 1606 920060 0)
:recipe
(:package "web-mode" :repo "fxbois/web-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "0c83581d1e93d1d802c730a1d5e90cd1c740e1b2"))
(zig-mode :source "lockfile" :date
(26402 1606 908555 0)
:recipe
(:package "zig-mode" :repo "ziglang/zig-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f55e42536a3f34b81198b856595dc3a61867aa3e"))
(ace-window :source "lockfile" :date
(26402 1606 897741 0)
:recipe
(:package "ace-window" :repo "abo-abo/ace-window" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "77115afc1b0b9f633084cf7479c767988106c196"))
(pfuture :source "lockfile" :date
(26402 1606 887399 0)
:recipe
(:package "pfuture" :repo "Alexander-Miller/pfuture" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "19b53aebbc0f2da31de6326c495038901bffb73c"))
(hydra :source "lockfile" :date
(26402 1606 877261 0)
:recipe
(:package "hydra" :repo "abo-abo/hydra" :fetcher github :files
(:defaults
(:exclude "lv.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "317e1de33086637579a7aeb60f77ed0405bf359b"))
(cfrs :source "lockfile" :date
(26402 1606 866491 0)
:recipe
(:package "cfrs" :repo "Alexander-Miller/cfrs" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f3a21f237b2a54e6b9f8a420a9da42b4f0a63121"))
(posframe :source "lockfile" :date
(26402 1606 855692 0)
:recipe
(:package "posframe" :fetcher github :repo "tumashu/posframe" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "ac9f954ac4c546e68daf403f2ab2b5ad4397f26e"))
(all-the-icons :source "lockfile" :date
(26402 1606 845055 0)
:recipe
(:package "all-the-icons" :repo "domtronn/all-the-icons.el" :fetcher github :files
(:defaults "data")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "39ef44f810c34e8900978788467cc675870bcd19"))
(tree-sitter :source "lockfile" :date
(26402 1606 834552 0)
:recipe
(:package "tree-sitter" :repo "emacs-tree-sitter/elisp-tree-sitter" :fetcher github :branch "release" :files
(:defaults
(:exclude "lisp/tree-sitter-tests.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "3cfab8a0e945db9b3df84437f27945746a43cc71"))
(tsc :source "lockfile" :date
(26402 1606 823089 0)
:recipe
(:package "tsc" :fetcher github :repo "emacs-tree-sitter/elisp-tree-sitter" :branch "release" :files
("core/*.el" "core/Cargo.toml" "core/Cargo.lock" "core/src")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "3cfab8a0e945db9b3df84437f27945746a43cc71"))
(elisp-refs :source "lockfile" :date
(26402 1606 806529 0)
:recipe
(:package "elisp-refs" :repo "Wilfred/elisp-refs" :fetcher github :files
(:defaults
(:exclude "elisp-refs-bench.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "541a064c3ce27867872cf708354a65d83baf2a6d"))
(visual-regexp :source "lockfile" :date
(26402 1606 795494 0)
:recipe
(:package "visual-regexp" :repo "benma/visual-regexp.el" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "48457d42a5e0fe10fa3a9c15854f1f127ade09b5"))
(frame-local :source "lockfile" :date
(26402 1606 784831 0)
:recipe
(:package "frame-local" :fetcher github :repo "sebastiencs/frame-local" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "7ee1106c3bcd4022f48421f8cb1ef4f995da816e"))
(editorconfig :source "lockfile" :date
(26402 1606 774189 0)
:recipe
(:package "editorconfig" :fetcher github :repo "editorconfig/editorconfig-emacs" :old-names
(editorconfig-core editorconfig-fnmatch)
:files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "24f5b2b1cd4e37adc245fb59f7edeb6872a707a4"))
(bui :source "lockfile" :date
(26402 1606 763487 0)
:recipe
(:package "bui" :repo "alezost/bui.el" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f3a137628e112a91910fd33c0cff0948fa58d470"))
(lsp-treemacs :source "lockfile" :date
(26402 1606 752868 0)
:recipe
(:package "lsp-treemacs" :repo "emacs-lsp/lsp-treemacs" :fetcher github :files
(:defaults "icons")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fb1a07ae0a3d781dea8ac78da2933e0173eb48a4"))
(lsp-docker :source "lockfile" :date
(26402 1606 741908 0)
:recipe
(:package "lsp-docker" :repo "emacs-lsp/lsp-docker" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "ce291d0f80533f8eaca120eb745d55669e062636"))
(yaml :source "lockfile" :date
(26402 1606 730796 0)
:recipe
(:package "yaml" :repo "zkry/yaml.el" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "70c4fcead97e9bd6594e418c922ae769818f4245"))
(magit-section :source "lockfile" :date
(26402 1606 719625 0)
:recipe
(:package "magit-section" :fetcher github :repo "magit/magit" :files
("lisp/magit-section.el" "docs/magit-section.texi" "magit-section-pkg.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f2a61334430291d2162a68138c95ab310a8557f1"))
(with-editor :source "lockfile" :date
(26402 1606 708982 0)
:recipe
(:package "with-editor" :fetcher github :repo "magit/with-editor" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "77cb2403158cfea9d8bfb8adad81b84d1d6d7c6a"))
(powerline :source "lockfile" :date
(26402 1606 697040 0)
:recipe
(:package "powerline" :fetcher github :repo "milkypostman/powerline" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c35c35bdf5ce2d992882c1f06f0f078058870d4a"))
(parseedn :source "lockfile" :date
(26402 1606 686191 0)
:recipe
(:package "parseedn" :repo "clojure-emacs/parseedn" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "3407e4530a367b6c2b857dae261cdbb67a440aaa"))
(queue :source "lockfile" :date
(26402 1606 674933 0)
:recipe
(:package "queue" :repo
("git://git.sv.gnu.org/emacs/elpa" . "queue")
:branch "externals/queue" :files
("*"
(:exclude ".git"))
:source "GNU-devel ELPA" :protocol https :inherit t :depth treeless :ref "f986fb68e75bdae951efb9e11a3012ab6bd408ee"))
(sesman :source "lockfile" :date
(26402 1606 662455 0)
:recipe
(:package "sesman" :repo "vspinu/sesman" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "7bca68dbbab0af26a6a23be1ff5fa97f9a18e022"))
(parseclj :source "lockfile" :date
(26402 1606 652263 0)
:recipe
(:package "parseclj" :repo "clojure-emacs/parseclj" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "6af22372e0fe14df882dd300b22b12ba2d7e00b0"))
(paredit :source "lockfile" :date
(26402 1606 637684 0)
:recipe
(:package "paredit" :fetcher git :url "https://mumble.net/~campbell/git/paredit.git" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "037b9b8acbca75151f133b6c0f7f3ff97d9042e5"))
(multiple-cursors :source "lockfile" :date
(26402 1606 621113 0)
:recipe
(:package "multiple-cursors" :fetcher github :repo "magnars/multiple-cursors.el" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "c870c18462461df19382ecd2f9374c8b902cd804"))
(inflections :source "lockfile" :date
(26402 1606 610877 0)
:recipe
(:package "inflections" :repo "eschulte/jump.el" :fetcher github :files
("inflections.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "55caa66a7cc6e0b1a76143fd40eff38416928941"))
(reformatter :source "lockfile" :date
(26402 1606 600910 0)
:recipe
(:package "reformatter" :repo "purcell/emacs-reformatter" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "f13f5b4ce51db95ea317d57a83be0358bbf3ec30"))
(iedit :source "lockfile" :date
(26402 1606 590187 0)
:recipe
(:package "iedit" :repo "victorhge/iedit" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "27c61866b1b9b8d77629ac702e5f48e67dfe0d3b"))
(swiper :source "lockfile" :date
(26402 1606 579830 0)
:recipe
(:package "swiper" :repo "abo-abo/swiper" :fetcher github :files
("swiper.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "8dc02d5b725f78d1f80904807b46f5406f129674"))
(zoutline :source "lockfile" :date
(26402 1606 569790 0)
:recipe
(:package "zoutline" :repo "abo-abo/zoutline" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "32857c6c4b9b0bcbed14d825a10b91a98d5fed0a"))
(ivy :source "lockfile" :date
(26402 1606 559030 0)
:recipe
(:package "ivy" :repo "abo-abo/swiper" :fetcher github :files
(:defaults "doc/ivy-help.org"
(:exclude "swiper.el" "counsel.el" "ivy-hydra.el" "ivy-avy.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "8dc02d5b725f78d1f80904807b46f5406f129674"))
(heex-ts-mode :source "lockfile" :date
(26402 1606 548629 0)
:recipe
(:package "heex-ts-mode" :repo "wkirschbaum/heex-ts-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "90142df2929956536dc1eaae3bb5ca04dc4232ab"))
(caml :source "lockfile" :date
(26402 1606 538242 0)
:recipe
(:package "caml" :repo "ocaml/caml-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "47defafa2b08fb680e89bfee9cb9ce82bd9e3bcf"))
(aio :source "lockfile" :date
(26402 1606 527885 0)
:recipe
(:package "aio" :fetcher github :repo "skeeto/emacs-aio" :files
("aio.el" "README.md" "UNLICENSE")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "da93523e235529fa97d6f251319d9e1d6fc24a41"))
(tablist :source "lockfile" :date
(26402 1606 517745 0)
:recipe
(:package "tablist" :fetcher github :repo "emacsorphanage/tablist" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "fcd37147121fabdf003a70279cf86fbe08cfac6f"))
(hcl-mode :source "lockfile" :date
(26402 1606 507807 0)
:recipe
(:package "hcl-mode" :repo "hcl-emacs/hcl-mode" :fetcher github :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "1da895ed75d28d9f87cbf9b74f075d90ba31c0ed"))
(groovy-mode :source "lockfile" :date
(26402 1606 497676 0)
:recipe
(:package "groovy-mode" :fetcher github :repo "Groovy-Emacs-Modes/groovy-emacs-modes" :files
("*groovy*.el")
:source "MELPA" :protocol https :inherit t :depth treeless :ref "7b8520b2e2d3ab1d62b35c426e17ac25ed0120bb"))
(json-snatcher :source "lockfile" :date
(26402 1606 486749 0)
:recipe
(:package "json-snatcher" :fetcher github :repo "Sterlingg/json-snatcher" :files
("*.el" "*.el.in" "dir" "*.info" "*.texi" "*.texinfo" "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" "lisp/*.el" "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
(:exclude ".dir-locals.el" "test.el" "tests.el" "*-test.el" "*-tests.el" "LICENSE" "README*" "*-pkg.el"))
:source "MELPA" :protocol https :inherit t :depth treeless :ref "b28d1c0670636da6db508d03872d96ffddbc10f2")))

View file

@ -8,12 +8,11 @@
;; Avy is a navigation manager. ;; Avy is a navigation manager.
(eval-when-compile (defvar icejam-keys-mode-map))
;;; Code: ;;; Code:
(require 'icejam-keys-mode)
(use-package avy :ensure t :defer t (use-package avy :ensure t :defer t
:config :custom (avy-timeout-seconds 1 "Wait for 1 second for candidates")
(setopt avy-timeout-seconds 1.0) ;; Wait for 1 second for candidates
:bind (:map icejam-keys-mode-map :bind (:map icejam-keys-mode-map
;; Jump to text in sight with CMD-j ;; Jump to text in sight with CMD-j
([(hyper j)] . avy-goto-char-timer))) ([(hyper j)] . avy-goto-char-timer)))

View file

@ -9,23 +9,19 @@
;; pkg/base defines basic packages and environment. ;; pkg/base defines basic packages and environment.
;;; Code: ;;; Code:
(require 'icejam-keys-mode)
;;;;;;;; Other optimizations ;;;;;;;;;;;;;;;;;
;;;;;;;; Stolen from Doom Emacs. ;;;;;;;;;;;;; ;;;;;;;; Stolen from Doom Emacs. ;;;;;;;;;;;;;
;; Update emacs less often ;; Update emacs less often
(setopt idle-update-delay 1.0) (setopt idle-update-delay 1.0)
;; Prefer newer byte-compiled code
(setopt load-prefer-newer t)
;; Disable bidirectional text rendering for a modest performance boost. I've set ;; Disable bidirectional text rendering for a modest performance boost. I've set
;; this to `nil' in the past, but the `bidi-display-reordering's docs say that ;; this to `nil' in the past, but the `bidi-display-reordering's docs say that
;; is an undefined state and suggest this to be just as good: ;; is an undefined state and suggest this to be just as good:
(setq-default bidi-display-reordering 'left-to-right (setq-default bidi-display-reordering 'left-to-right
bidi-paragraph-direction 'left-to-right bidi-paragraph-direction 'left-to-right)
bidi-inhibit-bpa t)
;; Skip fontification when you are typing
(setopt redisplay-skip-fontification-on-input t)
;; Reduce rendering/line scan work for Emacs by not rendering cursors or regions ;; Reduce rendering/line scan work for Emacs by not rendering cursors or regions
;; in non-focused windows. ;; in non-focused windows.
@ -37,13 +33,9 @@
;; quickly self-correct. ;; quickly self-correct.
(setopt fast-but-imprecise-scrolling t) (setopt fast-but-imprecise-scrolling t)
;; Trust local folder
(setopt trusted-content '("~/.emacs.d/" "~/Development/"))
;;;;;;;;; TRAMP configuration ;;;;;;;;;;;;;;;; ;;;;;;;;; TRAMP configuration ;;;;;;;;;;;;;;;;
(use-package tramp :ensure nil :defer 5 (require 'tramp)
:config (setopt tramp-default-method "ssh")
(setopt tramp-default-method "ssh"))
;;;;;;;;; Emacs bindings ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;; Emacs bindings ;;;;;;;;;;;;;;;;;;;;;
(global-set-key (kbd "RET") 'newline) (global-set-key (kbd "RET") 'newline)
@ -56,36 +48,32 @@
(use-package buffer-move :ensure t :defer t) (use-package buffer-move :ensure t :defer t)
;; Garbage collection magic hack ;; Garbage collection magic hack
(use-package gcmh :ensure t :defer t (use-package gcmh :ensure t
:commands (gcmh-mode) :custom ((gcmh-verbose nil "Do not log GC messages.")
:hook ((elpaca-after-init . (lambda () (gcmh-mode t)))) (gcmh-idle-delay 'auto "Compute GC delay based on gcmh-auto-idle-delay-factor")
(gcmh-auto-idle-delay-factor 10 "Original value was 10"))
:config :config
(setopt gcmh-verbose nil) ;; Do not log GC messages (gcmh-mode t))
(setopt gcmh-idle-delay 'auto) ;; Compute GC delay based on gcmh-auto-idle-delay-factor
(setopt gcmh-auto-idle-delay-factor 10) ;; Original value was 10
(setopt gcmh-high-cons-threshold (* 256 1024 1024)))
;; #====================== Backup config #============================== ;; #====================== Backup config #==============================
(setopt (setopt backup-directory-alist
backup-directory-alist `((".*" . "~/.emacs.d/backups/auto-save-list")) `((".*" . "~/.emacs.d/backups/auto-save-list")))
auto-save-file-name-transforms `((".*" ,"~/.emacs.d/backups/auto-save-list" t)) (setopt auto-save-file-name-transforms
backup-by-copying t `((".*", "~/.emacs.d/backups/auto-save-list" t)))
delete-old-versions t
kept-new-versions 10 (setopt backup-by-copying t)
kept-old-versions 5 (setopt delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t) version-control t)
;; Do not create .#foo.file lock files ; Do not create .#foo.file lock files
(setopt create-lockfiles nil) (setopt create-lockfiles nil)
;; Enable line numbers and show cursors position ;; Enable line numbers and show cursors position
(dolist (mode '(prog-mode-hook (add-hook 'prog-mode-hook 'display-line-numbers-mode)
text-mode-hook (add-hook 'text-mode-hook 'display-line-numbers-mode)
conf-mode-hook)) (add-hook 'conf-mode-hook 'display-line-numbers-mode)
(add-hook mode 'display-line-numbers-mode)
;; Highlight current line.
(add-hook mode 'hl-line-mode))
;; (global-display-line-numbers-mode t) ;; (global-display-line-numbers-mode t)
(column-number-mode t) (column-number-mode t)
@ -99,33 +87,27 @@
(setopt large-file-warning-threshold 50000000) (setopt large-file-warning-threshold 50000000)
;; Numbers are arbitrary, but work on a large screen. Default is 160 ;; Numbers are arbitrary, but work on a large screen. Default is 160
(setopt split-width-threshold 190) (setopt split-width-threshold 200)
;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
;; Disable warning related to PATH on startup ;; Disable warning related to PATH on startup
(defvar exec-path-from-shell-check-startup-files nil) (defvar exec-path-from-shell-check-startup-files nil)
(eval-when-compile
(declare-function exec-path-from-shell-initialize 'exec-path-from-shell))
;; This should be defined in secrets.
(defvar icejam-variables-to-load-from-shell '())
;; Allow to execute path from shell ;; Allow to execute path from shell
(use-package exec-path-from-shell (use-package exec-path-from-shell
;; :if (memq window-system '(x mac ns)) :if (memq window-system '(x mac ns))
:ensure t :ensure t
:defer t
:hook ((elpaca-after-init . exec-path-from-shell-initialize))
:config :config
(add-to-list 'exec-path "/usr/local/bin") (add-to-list 'exec-path "/usr/local/bin")
(dolist (var icejam-variables-to-load-from-shell) (dolist (var '("DEFT_PATH" "LANG" "LC_CTYPE"))
(add-to-list 'exec-path-from-shell-variables var))) (add-to-list 'exec-path-from-shell-variables var))
(exec-path-from-shell-initialize))
(use-package direnv :ensure t :defer t (use-package direnv :ensure t
:hook ((elpaca-after-init . direnv-mode))) :config
(declare-function direnv-mode "direnv")
(direnv-mode t))
;; Draw underline lower ;; Draw underline lower
(setopt x-underline-at-descent-line t) (setopt x-underline-at-descent-line t)
@ -137,14 +119,13 @@
indicate-empty-lines nil) indicate-empty-lines nil)
;;;;;;;;;;;;;;;;; Treemacs ;;;;;;;;;;;;;;;;; Treemacs
(eval-when-compile (defvar icejam-keys-mode-map)) (use-package treemacs :ensure t
(use-package treemacs :ensure t :defer t
:hook ((elpaca-after-init . treemacs-follow-mode)
(elpaca-after-init . treemacs-project-follow-mode))
:commands (treemacs-follow-mode treemacs-project-follow-mode treemacs) :commands (treemacs-follow-mode treemacs-project-follow-mode treemacs)
:bind (:map icejam-keys-mode-map ([(hyper b)] . treemacs)) :bind (:map icejam-keys-mode-map
:config (setopt treemacs-tag-follow-delay 1.0)) ([(hyper b)] . treemacs))
:config
(treemacs-follow-mode t)
(treemacs-project-follow-mode t))
(use-package treemacs-all-the-icons :ensure t :defer t (use-package treemacs-all-the-icons :ensure t :defer t
:requires (treemacs) :requires (treemacs)
@ -152,20 +133,24 @@
:config (treemacs-load-theme "all-the-icons")) :config (treemacs-load-theme "all-the-icons"))
;;;;;;;;;;;;;;;;; Record frequency of different commands. Review them later ;;;;;;;;;;;;;;;;; Record frequency of different commands. Review them later
(use-package keyfreq :ensure t :defer t (use-package keyfreq :ensure t
:hook ((elpaca-after-init . keyfreq-mode)
(elpaca-after-init . keyfreq-autosave-mode))
:config :config
(setopt keyfreq-file (concat user-emacs-directory "emacs.keyfreq"))) (declare-function keyfreq-mode "keyfreq")
(declare-function keyfreq-autosave-mode "keyfreq")
(keyfreq-mode t)
(keyfreq-autosave-mode t))
;;;;;;;;;;;;;;;;; Show hints about key combinations ;;;;;;;;;;;;;;;;; Show hints about key combinations
(use-package which-key :ensure nil :defer t (use-package which-key :ensure t
:hook ((elpaca-after-init . which-key-mode)) :custom (which-key-idle-delay 0.5)
:config :config (which-key-mode t))
(setopt which-key-idle-delay 0.2))
;;;;;;;;;;;;;;;;; Use C-n to create a new line ;;;;;;;;;;;;;;;;; Use C-n to create a new line
(setopt next-line-add-newlines t) (setopt next-line-add-newlines t)
;;;;;;;;;;;;;;;;; Speed up long line display by disabling bidirectional text
(setq-default bidi-paragraph-direction 'left-to-right
bidi-inhibit-bpa t)
(provide 'icejam-base) (provide 'icejam-base)
;;; icejam-base.el ends here ;;; icejam-base.el ends here

21
lisp/icejam-blocking.el Normal file
View file

@ -0,0 +1,21 @@
;;; icejam-blocking.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; These packages are foundational dependency and possibly can be blocking.
;;; Code:
(use-package transient :ensure (:wait t))
(use-package diminish :ensure (:wait t))
(use-package company :ensure (:wait t))
;; https://emacs-lsp.github.io/lsp-mode/page/performance/#use-plists-for-deserialization
;; This supposedly makes it faster.
(setenv "LSP_USE_PLISTS" "true")
(use-package lsp-mode :ensure (:wait t))
(provide 'icejam-blocking)
;;; icejam-blocking.el ends here

View file

@ -0,0 +1,90 @@
;;; icejam-company-yasnippet.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Company completion framework configuration
;;; Code:
(require 'icejam-blocking)
(use-package yasnippet :ensure t
:config
(yas-global-mode t)
(unbind-key "C-c & C-n" yas-minor-mode-map)
(unbind-key "C-c & C-s" yas-minor-mode-map)
(unbind-key "C-c & C-v" yas-minor-mode-map))
(use-package yasnippet-snippets :ensure t :after (yasnippet))
(use-package company-box :ensure t :after (company)
:hook (company-mode . company-box-mode))
(with-eval-after-load 'company
(global-company-mode t)
;; Hacks for orderless
(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)
(defun company-completion-styles (capf-fn &rest args)
(let ((completion-styles '(partial-completion basic)))
(apply capf-fn args)))
(advice-add 'company-capf :around #'company-completion-styles)
(setq-default
company-minimum-prefix-length 3 ;; minimum prefix character number for auto complete.
company-idle-delay 0.1
company-require-match nil
company-echo-delay 0 ;;;; company-show-numbers t
company-tooltip-align-annotations t ;; align annotations to the right tooltip border.
company-tooltip-flip-when-above t
company-tooltip-limit 10 ;; tooltip candidates max limit.
company-tooltip-minimum 2 ;; minimum candidates limit.
company-tooltip-minimum-width 10 ;; The minimum width of the tooltip's inner area.
;; This doesn't include the margins and the scroll bar.
company-tooltip-margin 2 ;; width of margin columns to show around the tooltip
company-tooltip-offset-display 'lines ;; 'lines - how to show tooltip unshown candidates number.
company-show-numbers nil ;; t: show quick-access numbers for the first ten candidates.
company-selection-wrap-around t ;; loop over candidates
company-dabbrev-other-buffers t ;; Only offer dabbrev from the same major mode
company-dabbrev-downcase nil ;; Preserve case of candidates
company-format-margin-function nil
;; company-async-wait 0.03
;; company-async-timeout 2
)
;; Absolute defaults for company mode
(setopt company-backends
'((company-files ; files & directory
company-keywords ; keywords
company-capf
)
(company-dabbrev company-abbrev)
))
;; Use standard emacs next and previous bindings for navigating company
;; suggestions
(define-key company-active-map (kbd "C-p") 'company-select-previous-or-abort)
(define-key company-active-map (kbd "C-n") 'company-select-next-or-abort)
(defun icejam-insert-space-and-complete ()
"Insert space before trying to complete a section."
(interactive)
(save-excursion
(insert " "))
(company-indent-or-complete-common))
;; Only use RETURN for completion in company
(unbind-key "TAB" company-active-map)
;;; Yasnippet configuration
(define-key prog-mode-map (kbd "C-c y") 'company-yasnippet)
(define-key prog-mode-map (kbd "<f13>") 'icejam-insert-space-and-complete)
(define-key prog-mode-map (kbd "TAB") 'company-indent-or-complete-common)
(define-key text-mode-map (kbd "C-c y") 'company-yasnippet)
(define-key text-mode-map (kbd "<f13>") 'icejam-insert-space-and-complete)
(define-key text-mode-map (kbd "TAB") 'company-indent-or-complete-common))
(provide 'icejam-company-yasnippet)
;;; icejam-company-yasnippet.el ends here

View file

@ -0,0 +1,60 @@
;;; icejam-completing-read -- Functions related to completing-read -*- lexical-binding: t; -*-
;;; Commentary:
;;;
;;; completing-read is the way of completing things in minibuffer. This module
;;; provides all of that functionality, everything related to minbuffer being helpful.
;;;
;;; Code:
(require 'icejam-keys-mode)
;; Preparations for using Vertico/Orderless
(setopt
;; Support opening new minibuffers from inside existing minibuffers.
enable-recursive-minibuffers t
;; Hide commands in M-x which do not work in the current mode. Vertico
;; commands are hidden in normal buffers. This setting is useful beyond
;; Vertico.
read-extended-command-predicate #'command-completion-default-include-p
;; Do not allow the cursor in the minibuffer prompt
minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(defun crm-indicator (args)
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
;; Actual orderless
(use-package vertico :ensure t
:custom ((vertico-scroll-margin 1 "Scroll on N-1")
(vertico-count 15 "Show 5 more candidates")
(vertico-resize t "Grow and shrink the vertico minibufffer")
(vertico-cycle t "Cycle completion"))
:config
(vertico-mode t))
(use-package orderless :ensure t
:custom ((completion-styles '(orderless partial-completion basic)
"Fallback to basic if orderless does not work.")
(completion-category-defaults nil)
(completion-category-overrides
'((file (styles partial-completion))))))
(use-package marginalia :ensure t
:config (marginalia-mode t))
(use-package consult :ensure t
:bind (:map icejam-keys-mode-map
("C-c t" . find-file)
("M-g" . consult-goto-line)
("C-c a" . consult-ripgrep)))
(use-package helpful :ensure t)
(provide 'icejam-completing-read)
;;; icejam-completing-read.el ends here

45
lisp/icejam-copilot.el Normal file
View file

@ -0,0 +1,45 @@
;;; icejam-copilot.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;;; Copilot and other GPT stuff
;;; Code:
(use-package copilot :ensure (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))
:defer t
;; It sort of sucks so let's disable it.
;; :hook ((prog-mode . copilot-mode))
:bind (:map copilot-completion-map
([tab] . copilot-accept-completion))
:config
(add-to-list 'copilot-indentation-alist '(emacs-lisp-mode . 2)))
;; Enable Anthropic Claude LLM support for chat (it also sucks)
(defcustom anthropic-api-key "api-key" "The value of your Anthropic API key."
:type 'string
:group 'icejam
:initialize 'custom-initialize-set)
(use-package gptel :ensure t :defer t
:config
(setq
gptel-model 'claude-3-5-sonnet-20241022
gptel-backend (gptel-make-anthropic "Claude"
:stream t :key (lambda () anthropic-api-key))))
;; Pretend to be 'AI editor'.
(use-package elysium :ensure t :defer t
:custom
((elysium-window-size 0.33 "The elysium buffer will be 1/3 your screen")
(elysium-window-style 'vertical "Elysium buffer will be vertical")))
;; Merging with SMerge
(use-package smerge-mode :ensure nil
:hook ((prog-mode . smerge-mode)))
(provide 'icejam-copilot)
;;; icejam-copilot.el ends here

142
lisp/icejam-custom-init.el Normal file
View file

@ -0,0 +1,142 @@
;;; icejam-custom-init.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; custom-init does a thing.
;;; Code:
;; Set GC at 500 MB for startup
(setopt gc-cons-threshold 500000000)
(setopt gc-cons-percentage 0.6)
;; Allow for deeper stacktraces / recursion
;; (setopt max-lisp-eval-depth 10000)
;;; Use elpaca for package management.
(defvar elpaca-installer-version 0.7)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;; Use package settings
(setopt use-package-verbose t)
(setopt use-package-compute-statistics t)
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode))
(elpaca-load-lockfile (concat user-emacs-directory "elpaca.lock"))
(defun icejam-elpaca-write-lock ()
"Write elpaca lock file."
(interactive)
(elpaca-write-lockfile (concat user-emacs-directory "elpaca.lock")))
;; I don't know why this needs to be here and with a lisp directory, but
;; normal subdirs.el file doesn't work.
(add-to-list 'load-path (concat user-emacs-directory "lisp/themes"))
(add-to-list 'load-path (concat user-emacs-directory "lisp/langs"))
(defgroup :icejam nil "My customisation group.")
;; General configuration files.
(require 'icejam-keys-mode)
(require 'icejam-blocking)
(require 'icejam-base)
(require 'icejam-sys-specific)
(require 'icejam-tree-sitter)
(require 'icejam-completing-read)
(require 'icejam-avy)
(require 'icejam-transient)
(require 'icejam-prog-mode)
(require 'icejam-company-yasnippet)
(require 'icejam-copilot)
(require 'icejam-flycheck)
(require 'icejam-ispell)
(require 'icejam-deft)
(require 'icejam-lsp)
(require 'icejam-dashboard)
(require 'icejam-magit)
(require 'icejam-vundo)
(require 'icejam-speed-type)
;; Themes
(require 'icejam-themes)
(require 'icejam-fonts)
;; Actual supported languages and file syntax.
(require 'icejam-lang-clang)
(require 'icejam-lang-clojure)
;; (require 'icejam-lang-common-lisp)
(require 'icejam-lang-dart)
(require 'icejam-lang-dhall)
(require 'icejam-lang-elisp)
(require 'icejam-lang-elixir)
(require 'icejam-lang-erlang)
(require 'icejam-lang-fsharp)
(require 'icejam-lang-gleam)
(require 'icejam-lang-golang)
(require 'icejam-lang-haskell)
(require 'icejam-lang-javascript)
(require 'icejam-lang-kotlin)
(require 'icejam-lang-lean)
(require 'icejam-lang-markdown)
(require 'icejam-lang-ocaml)
(require 'icejam-lang-other)
(require 'icejam-lang-php)
(require 'icejam-lang-purescript)
(require 'icejam-lang-python)
(require 'icejam-lang-ruby)
(require 'icejam-lang-rust)
(require 'icejam-lang-sh)
(require 'icejam-lang-web)
(require 'icejam-lang-ziglang)
;; Diminish modeline litter
(require 'icejam-diminish)
;; Restore GC to normal, but still high
(setopt gc-cons-threshold 200000000)
(setopt gc-cons-percentage 0.2)
(provide 'icejam-custom-init)
;;; icejam-custom-init.el ends here

28
lisp/icejam-dashboard.el Normal file
View file

@ -0,0 +1,28 @@
;;; dashboard.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Dashboard extracted from Spacemacs.
;;; Code:
(use-package dashboard :ensure t :demand t
:commands dashboard-setup-startup-hook
:hook
((elpaca-after-init . dashboard-open))
:custom
((dashboard-footer-messages '("Happy coding!" "I showed you my source code, pls respond"))
(dashboard-startup-banner 'logo)
(dashboard-items '((recents . 5)
;; (bookmarks . 5)
;; (agenda . 5)
;; (registers . 5)
(projects . 5))))
:config (dashboard-setup-startup-hook))
(provide 'icejam-dashboard)
;;; icejam-dashboard.el ends here

26
lisp/icejam-deft.el Normal file
View file

@ -0,0 +1,26 @@
;;; icejam-deft.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Notational velocity, backed by OneDrive.
;;; Code:
(require 'icejam-keys-mode)
(require 'icejam-transient)
(use-package deft :ensure t
:custom
((deft-directory (substitute-in-file-name "$DEFT_PATH"))
(deft-default-extension "md")
(deft-ignore-file-regexp "\\._[0-9-A-Z_]+\\.md$")
(deft-strip-summary-regexp (concat "\\("
"[\n\t]" ;; blank
"\\|^:[[:ascii:]]+:.*$" ;; org-mode properties string
"\\|^Title:.*$" ;; Title string
"\\|^title:.*$" ;; title string
"\\|^\\[\\[file:.*$" ;; org-mode inline-images
;; org-mode properties
;; "\\|:PROPERTIES:\n\\(.+\n\\)+:END:\n" ;;
"\\)"))
(deft-auto-save-interval 30.0)))
(provide 'icejam-deft)
;;; icejam-deft.el ends here

32
lisp/icejam-diminish.el Normal file
View file

@ -0,0 +1,32 @@
;;; icejam-diminish.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; diminish minor modes
;;; Code:
(require 'icejam-blocking)
;; (use-package diminish :ensure t)
(with-eval-after-load 'diminish
(with-eval-after-load 'flyspell (diminish 'flyspell-mode))
(with-eval-after-load 'flycheck (diminish 'flycheck-mode))
(with-eval-after-load 'rainbow-mode (diminish 'rainbow-mode))
(with-eval-after-load 'undo-tree (diminish 'undo-tree-mode))
(with-eval-after-load 'company (diminish 'company-mode))
(with-eval-after-load 'which-key (diminish 'which-key-mode))
(with-eval-after-load 'eldoc (diminish 'eldoc-mode))
(with-eval-after-load 'yasnippet (diminish 'yas-minor-mode))
(with-eval-after-load 'whitespace (diminish 'whitespace-mode))
(with-eval-after-load 'autorevert (diminish 'auto-revert-mode))
(with-eval-after-load 'ivy (diminish 'ivy-mode))
(with-eval-after-load 'company-box (diminish 'company-box-mode))
(with-eval-after-load 'smerge-mode (diminish 'smerge-mode))
(with-eval-after-load 'gcmh (diminish 'gcmh-mode)))
(provide 'icejam-diminish)
;;; icejam-diminish.el ends here

29
lisp/icejam-flycheck.el Normal file
View file

@ -0,0 +1,29 @@
;;; icejam-flycheck -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
;; Use flycheck globally to check syntax and compile languages
(use-package flycheck :ensure t
:custom ((flycheck-emacs-lisp-load-path 'inherit))
:config
(global-flycheck-mode t)
(setopt flycheck-emacs-lisp-load-path 'inherit)
(unbind-key "C-c ! C-c" flycheck-mode-map)
(unbind-key "C-c ! C-w" flycheck-mode-map)
(unbind-key "C-c ! ?" flycheck-mode-map)
(unbind-key "C-c ! C" flycheck-mode-map)
(unbind-key "C-c ! H" flycheck-mode-map)
(unbind-key "C-c ! V" flycheck-mode-map)
(unbind-key "C-c ! c" flycheck-mode-map)
(unbind-key "C-c ! e" flycheck-mode-map)
(unbind-key "C-c ! h" flycheck-mode-map)
(unbind-key "C-c ! i" flycheck-mode-map)
(unbind-key "C-c ! l" flycheck-mode-map)
(unbind-key "C-c ! n" flycheck-mode-map)
(unbind-key "C-c ! p" flycheck-mode-map)
(unbind-key "C-c ! s" flycheck-mode-map)
(unbind-key "C-c ! v" flycheck-mode-map)
(unbind-key "C-c ! x" flycheck-mode-map))
(provide 'icejam-flycheck)
;;; icejam-flycheck.el ends here

142
lisp/icejam-fonts.el Normal file
View file

@ -0,0 +1,142 @@
;;; icejam-fonts.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Set font stuff
;;; Code:
;; (defconst icejam-font "Monoid"
;; (defconst icejam-font "Fira Mono"
;; (defconst icejam-font "Fira Code"
;; (defconst icejam-font "Red Hat Mono"
;; (defconst icejam-font "Agave Nerd Font Mono"
;; (defconst icejam-font "Input Mono Condensed"
;; (defconst icejam-font "SF Mono"
;; (defconst icejam-font "Monaco"
;; (defconst icejam-font "JetBrains Mono"
;; (defconst icejam-font "JuliaMono"
;; (defconst icejam-font "Rec Mono Semicasual"
;; (defconst icejam-font "Victor Mono"
;; (defconst icejam-font "IBM Plex Mono"
;; (defconst icejam-font "Berkeley Mono Trial"
;; (defconst icejam-font "Inconsolata"
(defconst icejam-font "Iosevka Term"
"Default font.")
(defconst icejam-font-size 14
"Default size of then font.
It is used to calculated the size in relation to the screen
in icejam-set-font-to-screen.")
(defcustom icejam-mut-font
icejam-font
"Current font, defaults to the one loaded in the beginning."
:type 'string
:group 'icejam)
(defcustom icejam-mut-font-size
icejam-font-size
"Current font size."
:type 'integer
:group 'icejam)
;;;;;;;;;;;;;;;;;;;;;; Font configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; First, let's silence a warning about free variables
(defvar lsp-ui-doc-frame-hook)
(defun icejam-set-lsp-ui-font-hook ()
"Reset LSP IO font to specified icejam-font and icejam-font-size."
(setopt lsp-ui-doc-frame-hook nil)
(add-hook 'lsp-ui-doc-frame-hook
(lambda (frame _w)
(set-face-attribute
'default frame :font
(format "%s %d" icejam-mut-font (- icejam-mut-font-size 2))))))
(defun icejam-set-font (name size)
"Set font to NAME and its SIZE to X pixels."
(interactive "sNew font: \nnEnter size for %s: ")
(setopt icejam-mut-font name)
(setopt icejam-mut-font-size size)
(set-face-attribute 'default nil :font (format "%s %d" name size))
;; Set completion and modeline font to be 1 pixel point smaller than
;; the general font
;; (set-face-attribute
;; 'markdown-code-face nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'tooltip nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'company-tooltip nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'company-tooltip-annotation nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'company-tooltip-mouse nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'mode-line nil :font (format "%s %d" name (- size 1)))
(set-face-attribute
'mode-line-inactive nil :font (format "%s %d" name (- size 1)))
;; Call LSP-UI hook
(icejam-set-lsp-ui-font-hook))
(defun icejam-set-font-to-screen ()
"Automatically set font size to suit the monitor."
;; If display is set to emulate FullHD resultion or less, make the font
;; smaller.
(interactive)
(cond ((eq (x-display-list) nil))
;; built-in screen
((>= 1050 (x-display-pixel-height))
(icejam-set-font icejam-font icejam-font-size))
;; 4K screen on a Mac
((>= 1080 (x-display-pixel-height))
(icejam-set-font icejam-font icejam-font-size))
;; Other screens
((>= 1120 (x-display-pixel-height))
(icejam-set-font icejam-font icejam-font-size))
((>= 1440 (x-display-pixel-height))
(icejam-set-font icejam-font (+ icejam-font-size 3)))
((>= 1920 (x-display-pixel-height))
(icejam-set-font icejam-font icejam-font-size))
;; 4K screen on Windows or Linux
((>= 2160 (x-display-pixel-height))
(icejam-set-font icejam-font (- icejam-font-size 3)))
;; Default
(t (icejam-set-font icejam-font (- icejam-font-size 3)))))
;; Do it automatically on startup
(icejam-set-font-to-screen)
(defun icejam-set-font-size (size)
"Set font to a specified SIZE."
(interactive "nEnter size for font: ")
(icejam-set-font icejam-mut-font size))
(defun icejam-set-font-size-for-this-frame (new-size)
"Set font NEW-SIZE for this frame only."
(interactive "nEnter new size for font in this frame: ")
(set-frame-font (format "%s %d" icejam-mut-font new-size)))
;; Remove ugly black line
(set-face-attribute 'vertical-border nil :foreground
(face-attribute 'fringe :background))
;; Set fringe colors to default, so it does not bother you.
(set-face-attribute 'fringe nil
:foreground (face-foreground 'default)
:background (face-background 'default))
(provide 'icejam-fonts)
;;; icejam-fonts.el ends here

View file

@ -3,10 +3,12 @@
;;; Highlight misspelled words ;;; Highlight misspelled words
;;; Code: ;;; Code:
(use-package ispell :ensure nil :defer t
:config
(setopt ispell-program-name "aspell") (use-package ispell :ensure nil
(setopt ispell-extra-args '("--run-together" "--run-together-limit=5" "--run-together-min=2"))) :custom
((ispell-program-name "aspell")
(ispell-extra-args '("--run-together" "--run-together-limit=5" "--run-together-min=2"))))
(use-package flyspell :ensure nil (use-package flyspell :ensure nil
:hook ((prog-mode . flyspell-mode) :hook ((prog-mode . flyspell-mode)

61
lisp/icejam-keys-mode.el Normal file
View file

@ -0,0 +1,61 @@
;;; icejam-keys-mode.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; My global mode, to house my custom keys.
;;; Code:
(define-minor-mode icejam-keys-mode
"Minor mode for all of my personal key bindings."
:global t
:group 'icejam
:keymap (make-sparse-keymap))
;; Globally enable my minor mode
(icejam-keys-mode)
;;; Helpful key bindings
(define-key icejam-keys-mode-map (kbd "C-c \\") 'split-window-right) ;; Split window to the right
(define-key icejam-keys-mode-map (kbd "C-c /") 'split-window-below) ;; Split window to the bottom
;; Move between windows key bindings
(define-key icejam-keys-mode-map (kbd "C-c <left>") 'windmove-left)
(define-key icejam-keys-mode-map (kbd "C-c <right>") 'windmove-right)
(define-key icejam-keys-mode-map (kbd "C-c <up>") 'windmove-up)
(define-key icejam-keys-mode-map (kbd "C-c <down>") 'windmove-down)
;; The same, but without using arrow keys
(define-key icejam-keys-mode-map (kbd "C-c [") 'windmove-left)
(define-key icejam-keys-mode-map (kbd "C-c ]") 'windmove-right)
(define-key icejam-keys-mode-map (kbd "C-c {") 'windmove-up)
(define-key icejam-keys-mode-map (kbd "C-c }") 'windmove-down)
;; Kill current buffer and window
(define-key icejam-keys-mode-map (kbd "C-c q") 'kill-buffer-and-window)
;; List buffers
(define-key icejam-keys-mode-map (kbd "C-c b") 'ibuffer)
;; Revert without asking
(defun icejam-revert-buffer-no-confirm ()
"Revert buffer without confirmation."
(interactive) (revert-buffer t t))
(define-key icejam-keys-mode-map (kbd "C-c r") 'icejam-revert-buffer-no-confirm)
;;;;;;;;; Emacs bindings ;;;;;;;;;;;;;;;;;;;;;
(define-key icejam-keys-mode-map [home] 'beginning-of-line)
(define-key icejam-keys-mode-map [end] 'end-of-line)
;;;;;;;;; Translate keys ;;;;;;;;;;;;;;;;;;;;;
(define-key key-translation-map (kbd "<f6>") (kbd "C-c l")) ;; On F6, send C-c l
(define-key key-translation-map (kbd "<f7>") (kbd "C-c c")) ;; On F7, send C-c c
(define-key key-translation-map (kbd "<f8>") (kbd "C-c p")) ;; On F8, send C-c p
(provide 'icejam-keys-mode)
;;; icejam-keys-mode.el ends here

76
lisp/icejam-lsp.el Normal file
View file

@ -0,0 +1,76 @@
;;; icejam-lsp -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Global Language Server Protocol Config
;;; Code:
;; (use-package lsp-mode :ensure (:depth 5) :requires (company))
(with-eval-after-load 'lsp-mode
(setq-default lsp-file-watch-threshold 10000
lsp-restart 'auto-restart
lsp-prefer-capf t
lsp-completion-provider :capf
lsp-server-trace nil
lsp-lens-enable nil
lsp-lens-mode nil
read-process-output-max (* 1024 1024 4)
;; Disable the piece of shit vue LSP server. It activates itself in every
;; project with .js, .ts or .json file due to something called 'takeover
;; mode' or 'hybrid mode' or some such.
;; It would be okay, but it also doesn't work 99% of the time.
;; When needed, enable this hot garbage in dir-locals.el
lsp-disabled-clients '(vue-semantic-server
;; Ruby LSP servers, none of which actually work.
ruby-ls rubocop-ls typeprof-ls)
lsp-log-io nil
lsp-enable-file-watchers nil)
(unbind-key "s-l =" lsp-mode-map)
(unbind-key "s-l G" lsp-mode-map)
(unbind-key "s-l T" lsp-mode-map)
(unbind-key "s-l a" lsp-mode-map)
(unbind-key "s-l g" lsp-mode-map)
(unbind-key "s-l r" lsp-mode-map)
(unbind-key "C-S-SPC" lsp-mode-map)
(unbind-key "s-l G g" lsp-mode-map)
(unbind-key "s-l G r" lsp-mode-map)
(unbind-key "s-l G s" lsp-mode-map)
(unbind-key "s-l h g" lsp-mode-map)
(unbind-key "s-l h h" lsp-mode-map)
(unbind-key "s-l h s" lsp-mode-map)
(unbind-key "s-l g a" lsp-mode-map)
(unbind-key "s-l g e" lsp-mode-map)
(unbind-key "s-l g g" lsp-mode-map)
(unbind-key "s-l g h" lsp-mode-map)
(unbind-key "s-l g r" lsp-mode-map)
(unbind-key "s-l T D" lsp-mode-map)
(unbind-key "s-l T L" lsp-mode-map)
(unbind-key "s-l T S" lsp-mode-map)
(unbind-key "s-l T T" lsp-mode-map)
(unbind-key "s-l T b" lsp-mode-map)
(unbind-key "s-l T d" lsp-mode-map)
(unbind-key "s-l T f" lsp-mode-map)
(unbind-key "s-l T l" lsp-mode-map)
(unbind-key "s-l T s" lsp-mode-map)
(unbind-key "s-l F a" lsp-mode-map)
(unbind-key "s-l F b" lsp-mode-map)
(unbind-key "s-l F r" lsp-mode-map)
(unbind-key "s-l = =" lsp-mode-map)
(unbind-key "s-l s D" lsp-mode-map)
(unbind-key "s-l s d" lsp-mode-map)
(unbind-key "s-l s q" lsp-mode-map)
(unbind-key "s-l s r" lsp-mode-map)
(unbind-key "s-l s s" lsp-mode-map))
(use-package lsp-ui :ensure t :after (lsp-mode))
(with-eval-after-load 'lsp-ui
(setq lsp-ui-doc-enable t
lsp-ui-header t
lsp-ui-delay 0.5 ;; Wait half a second to display documentation
lsp-ui-doc-position 'at-point
lsp-ui-doc-include-signature t))
;; Lsp debugger mode
(use-package dap-mode :ensure t :after (lsp-mode lsp-ui))
(provide 'icejam-lsp)
;;; icejam-lsp.el ends here

18
lisp/icejam-magit.el Normal file
View file

@ -0,0 +1,18 @@
;;; icejam-magit.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-keys-mode)
(use-package magit
:ensure t
:defer t
:bind (:map icejam-keys-mode-map
("<f5> c" . magit-checkout)
("<f5> b" . magit-blame-addition)
("<f5> g" . magit-status))
(:map magit-blame-mode-map
("<f5> b" . 'magit-blame-quit)))
(provide 'icejam-magit)
;;; icejam-magit.el ends here

View file

@ -12,42 +12,44 @@
(global-eldoc-mode t) (global-eldoc-mode t)
;; Revert tag tables without asking ;; Revert tag tables without asking
(use-package etags :ensure nil :defer t (use-package etags :ensure nil
:config :custom (tags-revert-without-query t "Revert tag tables without asking"))
(setopt tags-revert-without-query t))
;;; Show trailing whitespace and remove whitespace on save ;;; Show trailing whitespace and remove whitespace on save
(use-package whitespace :ensure nil (use-package whitespace :ensure nil
:custom ((whitespace-style #'(face trailing empty) "New whitespace style.")
(require-final-newline 't "Insert newline on save"))
:hook ((prog-mode . whitespace-mode) :hook ((prog-mode . whitespace-mode)
(text-mode . whitespace-mode) (text-mode . whitespace-mode)
(conf-mode . whitespace-mode) (conf-mode . whitespace-mode)
(before-save . whitespace-cleanup)) (before-save . whitespace-cleanup)))
:config
(setopt whitespace-style #'(face trailing empty) ;; New whitespace style
require-final-newline 't ;; Insert newline on save
))
(setq-default indent-tabs-mode nil) (setq-default indent-tabs-mode nil)
;; Use colorful, matching parens ;; Use colorful, matching parens
;; Rework the code below to enumerate each hook separately: ;; Rework the code below to enumerate each hook separately:
(use-package rainbow-delimiters :ensure t :defer t (use-package rainbow-delimiters :ensure t
:hook ((prog-mode . rainbow-delimiters-mode) :hook ((prog-mode . rainbow-delimiters-mode)
(text-mode . rainbow-delimiters-mode) (text-mode . rainbow-delimiters-mode))
(elpaca-after-init . electric-pair-mode) :config
(elpaca-after-init . show-paren-mode))) (electric-pair-mode t)
(show-paren-mode t))
;;; Show hex (#aaa) colors as colors ;;; Show hex (#aaa) colors as colors
(use-package rainbow-mode :ensure t :defer t (use-package rainbow-mode :ensure t
:hook ((prog-mode . rainbow-mode) :hook ((prog-mode . rainbow-mode)
(text-mode . rainbow-mode))) (text-mode . rainbow-mode)))
;; Dash integration ;; Dash integration
(use-package dash-at-point :ensure t :defer t (use-package dash-at-point :ensure t)
:config (with-eval-after-load 'dash-at-point
(add-to-list 'dash-at-point-mode-alist '(enh-ruby-mode . "ruby,rubygems,rails")) (add-to-list 'dash-at-point-mode-alist '(enh-ruby-mode . "ruby,rubygems,rails"))
(add-to-list 'dash-at-point-mode-alist '(elixir-ts-mode . "elixir,hex"))) (add-to-list 'dash-at-point-mode-alist '(elixir-ts-mode . "elixir,hex")))
;; By default, use 2 spaces for indentation
(setopt tab-width 2)
(setopt tab-stop-list (number-sequence tab-width 200 tab-width))
;; Ensure indentation in steps: ;; Ensure indentation in steps:
(defun icejam-set-indent (step) (defun icejam-set-indent (step)
"Set indentation to STEP." "Set indentation to STEP."
@ -55,25 +57,17 @@
(setq-local tab-width step) (setq-local tab-width step)
(setq-local tab-stop-list (number-sequence step 200 step))) (setq-local tab-stop-list (number-sequence step 200 step)))
;; By default, use 2 spaces for indentation (use-package column-enforce-mode :ensure t
(icejam-set-indent 2) :config
(declare-function global-column-enforce-mode "column-enforce-mode")
(use-package column-enforce-mode :ensure t :defer t (global-column-enforce-mode t))
:hook (elpaca-after-init . global-column-enforce-mode))
;; PCRE to Emacs regex translations ;; PCRE to Emacs regex translations
(use-package pcre2el :ensure t :defer 5) (use-package pcre2el :ensure t)
;; Visual regexp ;; Visual regexp
(use-package visual-regexp-steroids :ensure t (use-package visual-regexp-steroids :ensure t :requires (pcre2el)
:after (pcre2el) :custom (vr/engine 'pcre2el "Use pcre2el for regexes"))
:config
;; Use pcre2el for regexes - so that I can use brackets more naturally with
;; regexp.
(setopt vr/engine 'pcre2el))
;; Format all programming languages with the same package
(use-package apheleia :ensure t :defer t)
(provide 'icejam-prog-mode) (provide 'icejam-prog-mode)
;;; icejam-prog-mode.el ends here ;;; icejam-prog-mode.el ends here

107
lisp/icejam-sys-specific.el Normal file
View file

@ -0,0 +1,107 @@
;;; sys-specific -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Make Emacs play nicer with specific operating systems
;;; Code:
(defconst IS-MAC (eq system-type 'darwin))
(defconst IS-BSD (eq system-type 'berkeley-unix))
(defconst IS-GNU (eq system-type 'gnu/linux))
(require 'icejam-keys-mode)
(defun icejam-function-delete-window ()
"Kill a window."
(interactive) (delete-window))
;;;;;;;;; Mac-specific config ;;;;;;;;;;;;;;;;;;;;;
(if IS-MAC
(progn
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'hyper)
(defun icejam-mac-switch-meta nil
"Switch meta between Option and Command."
(interactive)
(if (eq mac-option-modifier nil)
(progn
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'hyper))
(progn
(setq mac-option-modifier nil)
(setq mac-command-modifier 'meta))))
;;;;;;;;; Mac binding (fix) ;;;;;;;;;;;;;;;;;;
(define-key icejam-keys-mode-map (kbd "H-<right>") #'end-of-line)
(define-key icejam-keys-mode-map (kbd "H-<left>") #'beginning-of-line)
(define-key icejam-keys-mode-map (kbd "H-<up>") #'scroll-down) ; WTF is this reverse, I dunno
(define-key icejam-keys-mode-map (kbd "H-<down>") #'scroll-up)
;; Use CMD bindings that you know from the operating system
(define-key icejam-keys-mode-map [(hyper a)] #'mark-whole-buffer) ;; Select all
(define-key icejam-keys-mode-map [(hyper v)] #'yank) ;; Paste
(define-key icejam-keys-mode-map [(hyper x)] #'kill-region) ;; Cut
(define-key icejam-keys-mode-map [(hyper c)] #'kill-ring-save) ;; Copy
(define-key icejam-keys-mode-map [(hyper s)] #'save-buffer) ;; Save
(define-key icejam-keys-mode-map [(hyper z)] #'undo) ;; Undo
(define-key icejam-keys-mode-map [(hyper q)] #'kill-emacs) ;; Close emacs
(define-key icejam-keys-mode-map [(hyper w)] #'icejam-function-delete-window) ;; Close window
;; And then some extras
(define-key icejam-keys-mode-map [(hyper l)] #'goto-line) ;; Goto Line
;; Disable meta on right alt (useful for Polish characters)
;; (setq mac-right-option-modifier nil)
;; Allow for fullscreen frames without gaps
(setq frame-resize-pixelwise t)
))
(defun icejam-switch-right-left-alt ()
"Set keyboard to das keyboard."
(interactive)
(if (eq mac-right-option-modifier nil)
(progn
(setq mac-right-option-modifier 'meta)
(setq mac-option-modifier nil))
(progn
(setq mac-option-modifier 'meta)
(setq mac-right-option-modifier nil))))
;;;;;;;;; Linux-specific config ;;;;;;;;;;;;;;;;;;;;;
(if IS-GNU
(progn
;;;; Save and undo
(define-key icejam-keys-mode-map (kbd "s-s") 'save-buffer)
(define-key icejam-keys-mode-map (kbd "s-z") 'undo)
(define-key icejam-keys-mode-map (kbd "s-a") 'mark-whole-buffer)
;;;;;;;; Copy and paste bindings ;;;;;;;;;;;;;;;;;;
(define-key icejam-keys-mode-map (kbd "s-x") 'kill-region)
(define-key icejam-keys-mode-map (kbd "s-v") 'yank)
(define-key icejam-keys-mode-map (kbd "s-c") 'kill-ring-save)
;;;;;;;;; Linux Ergo bindings (fix) ;;;;;;;;;;;;;;;;;;
(define-key icejam-keys-mode-map (kbd "C-<right>") 'end-of-line)
(define-key icejam-keys-mode-map (kbd "C-<left>") 'beginning-of-line)
(define-key icejam-keys-mode-map (kbd "C-<up>") 'scroll-down) ; WTF is this reverse, I dunno
(define-key icejam-keys-mode-map (kbd "C-<down>") 'scroll-up)))
;;;;;;;;; BSD-specific config ;;;;;;;;;;;;;;;;;;;;;
(if IS-BSD
(progn
(define-key icejam-keys-mode-map (kbd "A-<right>") 'end-of-line)
(define-key icejam-keys-mode-map (kbd "A-<left>") 'beginning-of-line)
(define-key icejam-keys-mode-map (kbd "A-<up>") 'scroll-down) ; WTF is this reverse, I dunno
(define-key icejam-keys-mode-map (kbd "A-<down>") 'scroll-up)
(define-key icejam-keys-mode-map (kbd "A-a") 'mark-whole-buffer)
(define-key icejam-keys-mode-map (kbd "A-v") 'yank)
(define-key icejam-keys-mode-map (kbd "A-x") 'kill-region)
(define-key icejam-keys-mode-map (kbd "A-c") 'kill-ring-save)
(define-key icejam-keys-mode-map (kbd "A-s") 'save-buffer)
(define-key icejam-keys-mode-map (kbd "A-l") 'goto-line)
(define-key icejam-keys-mode-map (kbd "A-w" '+delete-window)
(define-key icejam-keys-mode-map (kbd "A-z") 'undo)
(define-key icejam-keys-mode-map (kbd "A-q") 'kill-emacs))))
(provide 'icejam-sys-specific)
;;; icejam-sys-specific.el ends here

66
lisp/icejam-themes.el Normal file
View file

@ -0,0 +1,66 @@
;;; icejam-themes.el -- Theme configuration -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(use-package spaceline :ensure t
:hook ((elpaca-after-init . spaceline-emacs-theme)))
(use-package base16-theme :ensure t
;; :config
;; (load-theme 'base16-atelier-forest-light t t)
;; (load-theme 'base16-harmonic16-light t t)
;; (load-theme 'base16-horizon-light t t)
;; (load-theme 'base16-humanoid-light t t)
;; (load-theme 'base16-zenburn t)
;; (load-theme 'base16-tomorrow-night-eighties t t)
;; (load-theme 'base16-darcula t t)
;; (load-theme 'base16-solarflare t t)
;; (load-theme 'base16-snazzy t t)
;; (load-theme 'base16-onedark t t)
;; (load-theme 'base16-gruvbox-dark-hard t t)
;; (load-theme 'modus-vivendi t t)
;; (load-theme 'base16-zenbones t t)
)
;; (use-package apropospriate-theme :ensure t
;; :config (load-theme 'apropospriate-light t t))
;; (use-package leuven-theme :ensure t
;; :config
;; (load-theme 'leuven t t))
;; (use-package modus-themes :ensure t )
;; (use-package darktooth-theme :ensure t
;; :config
;; (load-theme 'darktooth t t))
;; (use-package color-theme-sanityinc-tomorrow :ensure t
;; :config
;; ;; Dark themes
;; (load-theme 'sanityinc-tomorrow-eighties t t)
;; (load-theme 'sanityinc-tomorrow-night t t)
;; ;; Light theme
;; (load-theme 'sanityinc-tomorrow-day t t))
;; (use-package zenburn-theme :ensure t
;; :config
;; (load-theme 'zenburn t t))
;; (use-package catppuccin-theme :ensure t
;; :custom
;; ((catpuccin-flavor 'frappe))
;; :config
;; (load-theme 'catppuccin t t))
;; Disable cursor blinking
(blink-cursor-mode 0)
;; My own theme modifications:
(with-eval-after-load 'base16-theme
(setopt base16-theme-256-color-source 'colors)
(require 'icejam-base16-zenburn)
(require 'icejam-base16-harmonic-light)
(if (memq window-system '(x mac ns))
(enable-theme 'icejam-base16-zenburn)
(enable-theme 'icejam-base16-zenburn)))
(provide 'icejam-themes)
;;; icejam-themes.el ends here

141
lisp/icejam-transient.el Normal file
View file

@ -0,0 +1,141 @@
;;; pkg/transient -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Global Transient definitions.
;;; Code:
(require 'icejam-avy)
(require 'icejam-keys-mode)
(require 'icejam-blocking)
;; (use-package transient :ensure (:wait t) :demand t)
(defun icejam-mark-and-indent-whole-buffer ()
"Mark and indent whole buffer."
(interactive)
(indent-region (point-min) (point-max)))
(transient-define-prefix icejam-project-menu ()
"Project Commands."
[""
["Project"
("s" "Switch project" project-switch-project)
("f" "Find file in project" project-find-file)
("g" "Grep in project" consult-ripgrep)]
["Completions"
("a" "Grep in buffer" consult-line)
("b" "Buffer list" consult-buffer)
("t" "Find file" find-file)]
["Magit"
("m" "Git status" magit-status)
("C" "Git checkout" magit-checkout)
("M" "Git blame" magit-blame)]]
[""
["LISP"
("i" "IELM" ielm)
("e" "eval-region" eval-region)]
["Other"
("d" "deft" deft)
("T" "Speed Type" speed-type-text)]])
(transient-define-prefix icejam-code-menu ()
"Code Commands."
[""
["Manipulate"
("c" "Toggle Comment" comment-line)
("r" "Replace" vr/replace)
("i" "Indent" indent-region)]
["Complete"
("y" "Snippet" company-yasnippet)
("m" "Any (Company)" company-complete)
("g" "Ask GPT" gptel-menu)
("e" "Refactor (Elysium)" elysium-query)]
["Find"
("s" "Swiper" consult-line)
("u" "Vundo" vundo)
("d" "Dash" dash-at-point)]])
(transient-define-prefix icejam-window-menu ()
"Windows Commands."
[""
["Move"
("<left>" " Left" windmove-left)
("<right>" "Right" windmove-right)
("<up>" " Up" windmove-up)
("<down>" " Down" windmove-down)]
["Split"
("h" "Horizontally" split-window-below)
("v" "Vertically" split-window-right)]
["Kill"
""
""
""
("k" "Kill Buffer" kill-buffer-and-window)]])
(transient-define-prefix icejam-language-menu ()
"Language (Buffer) Commands."
[""
["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" lsp-format-buffer)
("i" "Indent" icejam-mark-and-indent-whole-buffer)]
["Other"
("m" "iMenu" lsp-ui-imenu)
("e" "Show Errors" flycheck-list-errors)]])
(transient-define-prefix icejam-history-menu ()
"Buffer History Commands."
["History"
("[" "Previous" previous-buffer)
("]" "Next" previous-buffer)])
(transient-define-prefix icejam-move-menu ()
"Move Commands."
[""
["Move this buffer"
("{" "Up" buf-move-left)
("[" "Left" buf-move-right)
("}" "Right" buf-move-up)
("]" "Down" buf-move-down)]
["Jump to"
("w" "Word" avy-goto-word-1)
("l" "Character" avy-goto-line)
("c" "Line" avy-goto-char-2)]])
(transient-define-prefix icejam-font-menu ()
"Font Commands."
[""
["Everywhere"
("s" "Adjust font size" global-text-scale-adjust)]
["In this buffer"
("i" "Bigger" (lambda () (interactive) (text-scale-increase 1)))
("d" "Smaller" (lambda () (interactive) (text-scale-decrease 1)))
("r" "Reset" (lambda () (interactive) (text-scale-adjust 0)))]])
(defcustom icejam-language-transient-alist
'()
"List of functions to call for language transient."
:group 'icejam
:type '(repeat (cons (symbol :tag "Major mode name")
(symbol :tag "Function to call"))))
;; Use different thing for different language
(defun icejam-language-transient-for-mode (&optional maybe-mode)
"Get transient for major mode.
You can pass MAYBE-MODE to find mode explicitly."
(let* ((mode (if maybe-mode maybe-mode major-mode)))
(alist-get mode icejam-language-transient-alist 'icejam-language-menu)))
(defun icejam-transient-for-lang ()
"Call transient for current major mode."
(interactive)
(funcall (icejam-language-transient-for-mode)))
(define-key icejam-keys-mode-map (kbd "C-c p") 'icejam-project-menu)
(define-key icejam-keys-mode-map (kbd "C-c c") 'icejam-code-menu)
(define-key icejam-keys-mode-map (kbd "C-c w") 'icejam-window-menu)
(define-key icejam-keys-mode-map (kbd "C-c s") 'icejam-history-menu)
(define-key icejam-keys-mode-map (kbd "C-c f") 'icejam-font-menu)
(define-key icejam-keys-mode-map (kbd "C-c m") 'icejam-move-menu)
(define-key icejam-keys-mode-map (kbd "C-c l") 'icejam-transient-for-lang)
(provide 'icejam-transient)
;;; icejam-transient.el ends here

View file

@ -0,0 +1,35 @@
;;; icejam-treesitter.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Load treesitter grammars automatically, based on the grammars provided by the
;; community.
;;; Code:
(use-package tree-sitter-langs :ensure t
:config
(declare-function tree-sitter-langs--bin-dir "tree-sitter-langs")
(add-to-list 'treesit-extra-load-path (tree-sitter-langs--bin-dir))
(defun icejam-tree-sitter-symlink-grammar-objects ()
"Create symlinks for treesitter grammars.
Tree-sitter-langs-build releases grammars as LANG.so. Treesit needs
libtree-sitter-LANG.so"
(interactive)
(dolist (file (directory-files (tree-sitter-langs--bin-dir) 'full
(concat "\\" (car tree-sitter-load-suffixes) "$")))
;; make symlink (or copy) libtree-sitter-c.so -> c.so
(let ((target (concat (file-name-as-directory (file-name-directory file))
"libtree-sitter-"
(file-name-nondirectory file))))
(if (memq system-type '(ms-dos windows-nt cygwin))
(copy-file file target)
(make-symbolic-link file target))))))
(provide 'icejam-tree-sitter)
;;; icejam-tree-sitter.el ends here

View file

@ -10,11 +10,8 @@
;;; Code: ;;; Code:
;; Undo UI ;;;;;;;;;;;;;;;;; Use more advanced undo options
(use-package vundo :ensure t :defer t (use-package vundo :ensure t :defer t)
:config
;; Keep 64 MB of undo data, we have enough RAM to do this.
(setopt undo-limit (* 64 1024 1024)))
(provide 'icejam-vundo) (provide 'icejam-vundo)
;;; icejam-vundo.el ends here ;;; icejam-vundo.el ends here

View file

@ -2,6 +2,8 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(require 'icejam-prog-mode)
(declare-function column-enforce-n "column-enforce-mode" (number)) (declare-function column-enforce-n "column-enforce-mode" (number))
(defun icejam-lang-activate-clang-mode () (defun icejam-lang-activate-clang-mode ()
@ -17,7 +19,10 @@
(if (boundp 'c-default-style) (if (boundp 'c-default-style)
(setq-local c-default-style "bsd") (setq-local c-default-style "bsd")
(defvar c-default-style "bsd"))) (defvar c-default-style "bsd"))
(add-to-list (make-local-variable 'company-backends)
'(company-etags company-yasnippet)))
(add-hook 'c-mode-hook 'icejam-lang-activate-clang-mode) (add-hook 'c-mode-hook 'icejam-lang-activate-clang-mode)

View file

@ -2,23 +2,16 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile (require 'icejam-prog-mode)
(declare-function column-enforce-n "column-enforce-mode" (number)) (require 'icejam-transient)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(declare-function icejam-set-indent 'icejam-prog-mode) (declare-function column-enforce-n "column-enforce-mode" (number))
(declare-function icejam-start-eglot 'icejam-eglot)
(declare-function lispy-mode 'lispy-mode)
(declare-function transient-define-prefix 'transient)
(defvar cider-annotate-completion-function)
(defvar cider-show-error-buffer)
(defvar icejam-clojure-lang-menu)
(defvar icejam-language-transient-alist))
(use-package clojure-mode :defer t :ensure t) (use-package clojure-mode :defer t :ensure t)
(use-package cider (use-package cider
:requires clojure-mode :requires clojure-mode
:commands (cider-mode cider-jack-in) :commands cider-jack-in
:defer t :defer t
:ensure t :ensure t
:config (setq cider-annotate-completion-function t)) :config (setq cider-annotate-completion-function t))
@ -29,7 +22,7 @@
:ensure t) :ensure t)
;; Transient ;; Transient
(transient-define-prefix icejam-clojure-lang-menu () (transient-define-prefix icejam-lang-cider-context-menu ()
"Clojure Buffer Commands." "Clojure Buffer Commands."
["" [""
["Cider" ["Cider"
@ -37,41 +30,35 @@
("t" "Test" cider-test-run-loaded-tests)] ("t" "Test" cider-test-run-loaded-tests)]
["Buffer" ["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm) ("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" eglot-format-buffer) ("f" "Format" cider-format-buffer)
("l" "Load" cider-load-buffer) ("l" "Load" cider-load-buffer)
("e" "Show Errors" flymake-show-buffer-diagnostics)]] ("e" "Show Errors" flycheck-list-errors)]]
["" [""
("q" "Quit" keyboard-quit)]) ("q" "Quit" keyboard-quit)])
(dolist (mode '(clojure-mode edn-mode))
(add-to-list 'icejam-language-transient-alist
`(,mode . icejam-clojure-lang-menu)))
(defun icejam-lang-activate-clojure-mode () (defun icejam-lang-activate-clojure-mode ()
"Goodies for clojure files." "Goodies for clojure files."
(icejam-set-indent 2) ;; Default indentation of 2 characters (icejam-set-indent 2) ;; Default indentation of 2 characters
(column-enforce-n 100) (column-enforce-n 80)
(cider-mode 1) (cider-mode 1)
(setq-local indent-tabs-mode nil)
;; Use lispy mode in Clojure (define-key
(lispy-mode t) clojure-mode-map (kbd "C-c l") 'icejam-lang-cider-context-menu)
;; Use LSP in clojure
(icejam-set-eglot-capfs)
(icejam-start-eglot)
;; Do not enable paredit for clojure
;; (paredit-mode 1)
;; Do not show separate error window when in REPL ;; Do not show separate error window when in REPL
(setq cider-show-error-buffer 'except-in-repl)) (setq cider-show-error-buffer 'except-in-repl))
(add-hook 'clojure-mode-hook 'icejam-lang-activate-clojure-mode) (add-hook 'clojure-mode-hook 'icejam-lang-activate-clojure-mode)
(add-hook 'edn-mode-hook 'icejam-lang-activate-clojure-mode)
(defun icejam-lang-clojure-repl-config () (defun icejam-lang-clojure-repl-config ()
"Do not show stacktrace when in REPL." "Do not show stacktrace when in REPL."
(setq-local cider-show-error-buffer 'except-in-repl)) (setq-local cider-show-error-buffer 'except-in-repl))
(add-hook 'cider-repl-mode-hook 'icejam-lang-clojure-repl-config) (add-hook 'cider-repl-mode-hook 'icejam-lang-clojure-repl-config)
(add-hook 'cider-mode-hook 'cider-enable-flex-completion) (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion)
(provide 'icejam-lang-clojure) (provide 'icejam-lang-clojure)
;;; icejam-lang-clojure.el ends here ;;; icejam-lang-clojure.el ends here

View file

@ -0,0 +1,22 @@
;;; common-lisp.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-company-yasnippet)
(use-package slime :ensure t)
(use-package slime-company :ensure t
:requires (slime company))
(setq inferior-lisp-program "sbcl")
(slime-setup '(slime-fancy slime-company slime-quicklisp slime-asdf))
(provide 'icejam-lang-common-lisp)
;;; icejam-lang-common-lisp.el ends here

View file

@ -2,11 +2,14 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(require 'icejam-prog-mode)
(use-package dart-mode :ensure t :defer t) (use-package dart-mode :ensure t :defer t)
(use-package lsp-dart :defer t :ensure t :requires (dart-mode lsp))
(defun icejam-lang-activate-dart-mode () (defun icejam-lang-activate-dart-mode ()
"Reconfigure dart mode for your own purposes." "Reconfigure dart mode for your own purposes."
(eglot-ensure)) (lsp))
(add-hook 'dart-mode-hook 'icejam-lang-activate-dart-mode) (add-hook 'dart-mode-hook 'icejam-lang-activate-dart-mode)

View file

@ -2,15 +2,14 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(use-package dhall-mode :ensure t :defer t) (require 'icejam-prog-mode)
(require 'icejam-lsp)
(eval-when-compile (use-package dhall-mode :ensure t :defer t :requires (lsp))
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(defun icejam-lang-activate-dhall-mode () (defun icejam-lang-activate-dhall-mode ()
"Reconfigure dhall mode for your own purposes." "Reconfigure dhall mode for your own purposes."
(eglot-ensure) (lsp))
(icejam-set-eglot-capfs))
(add-hook 'dhall-mode-hook 'icejam-lang-activate-dhall-mode) (add-hook 'dhall-mode-hook 'icejam-lang-activate-dhall-mode)
(add-hook 'dhall-mode-hook 'display-line-numbers-mode) (add-hook 'dhall-mode-hook 'display-line-numbers-mode)

View file

@ -0,0 +1,44 @@
;;; languages/elisp -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-transient)
(use-package lispy :ensure t)
(declare-function column-enforce-n "column-enforce-mode" (number))
(add-to-list 'auto-mode-alist '("/Eask\\'" . emacs-lisp-mode))
(transient-define-prefix icejam-elisp-lang-menu ()
"Elisp Buffer Commands."
[""
["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm)
("i" "Indent" icejam-mark-and-indent-whole-buffer)
("d" "Explain" helpful-at-point)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(add-to-list
'icejam-language-transient-alist '(emacs-lisp-mode . icejam-elisp-lang-menu))
(with-eval-after-load 'lispy
(declare-function lispy-mode "lispy")
(defun icejam-activate-emacs-lisp-mode ()
"Goodies for editing Emacs files."
(icejam-set-indent 2) ;; Default indentation of 2 characters
(column-enforce-n 80)
(lispy-mode t)
(setq-default indent-tabs-mode nil)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-yasnippet company-capf)))
(add-hook 'emacs-lisp-mode-hook 'icejam-activate-emacs-lisp-mode))
(provide 'icejam-lang-elisp)
;;; icejam-lang-elisp.el ends here

View file

@ -0,0 +1,56 @@
;;; languages/elixir -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-flycheck)
(require 'icejam-transient)
(declare-function lsp "lsp-mode" nil)
(declare-function column-enforce-n "column-enforce-mode" (number))
(use-package elixir-mode :ensure t)
(use-package elixir-ts-mode :ensure t :requires (elixir-mode lsp-mode lsp-ui))
(with-eval-after-load 'elixir-ts-mode
(add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-ts-mode))
(add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-ts-mode)))
(transient-define-prefix icejam-elixir-lang-menu ()
"Elixir Buffer Commands."
[""
["LSP"
("m" "iMenu" lsp-ui-imenu)]
["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" elixir-format)
("i" "Indent" icejam-mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(add-to-list
'icejam-language-transient-alist '(elixir-ts-mode . icejam-elixir-lang-menu))
(defun icejam-activate-elixir-ts-mode ()
"All things Elixir."
(icejam-set-indent 2)
(column-enforce-n 98)
(lsp)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(setq-local lsp-eldoc-enable-hover nil)
(setq-local lsp-completion-enable-additional-text-edit nil)
(setq-local company-minimum-prefix-length 3)
;; If needed, switch the one below to false to disable documentation pop-ups
;; (setq-local lsp-ui-doc-enable t)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'heex-ts-mode-hook 'icejam-activate-elixir-ts-mode)
(add-hook 'elixir-ts-mode-hook 'icejam-activate-elixir-ts-mode)
(provide 'icejam-lang-elixir)
;;; icejam-lang-elixir.el ends here

View file

@ -0,0 +1,88 @@
;;; languages/erlang -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-lsp)
(declare-function lsp "lsp-mode" nil)
(declare-function column-enforce-n "column-enforce-mode" (number))
(use-package erlang
:defer t
:ensure (:depth 1)
:after (lsp lsp-ui))
(cl-defun icejam-erlang-emacs-path (erlang-version)
"Find path to Emacs tooling for ERLANG-VERSION."
(car (split-string
(shell-command-to-string
(format "find $HOME/.asdf/installs/erlang/%s/ -name erlang.el"
erlang-version)) "erlang.el")))
(cl-defun icejam-erlang-path (erlang-version)
"Find asdf path for ERLANG-VERSION."
(format "$HOME/.asdf/installs/erlang/%s/" erlang-version))
(defun icejam-erlang-plist (erlang-version)
"Create property list for ERLANG-VERSION."
(list :version erlang-version
:erlang-path (icejam-erlang-path erlang-version)
:emacs-path (icejam-erlang-emacs-path erlang-version)))
(cl-defun icejam-installed-erlangs ()
"List Erlang versions installed with asdf."
(split-string
(shell-command-to-string
(format "asdf list erlang"))))
(cl-defun icejam-erlang-available-versions--plist ()
"Create plist for all installed Erlang versions."
(mapcar 'icejam-erlang-plist (icejam-installed-erlangs)))
(defvar icejam-erlang-available-versions (icejam-erlang-available-versions--plist))
(cl-defun icejam-erlang-currently-in-use ()
"Get Erlang version currently in use."
(car (split-string (shell-command-to-string "asdf current erlang"))))
(cl-defun icejam-erlang-current-version--plistp (erlang-plist)
"Check if currently in use Erlang is the same as the one in ERLANG-PLIST."
(equal (plist-get erlang-plist :version) (icejam-erlang-currently-in-use)))
(cl-defun icejam-erlang-current-plist ()
"Create plist from current Erlang version."
(seq-find 'icejam-erlang-current-version--plistp icejam-erlang-available-versions))
(defun icejam-activate-erlang-mode ()
"All things for all Erlang, including header files."
(when (featurep 'erlang-start) (unload-feature 'erlang-start))
(defvar erlang/current-erlang (icejam-erlang-current-plist))
(add-to-list (make-local-variable 'load-path)
(plist-get erlang/current-erlang :emacs-path))
(add-to-list (make-local-variable 'exec-path)
(format "%slib/tools-3.1/emacs"
(plist-get erlang/current-erlang :erlang-path)))
(setq-local erlang-man-root-dir
(format "%sman"
(plist-get erlang/current-erlang :erlang-path)))
(require 'erlang-start)
(icejam-set-indent 4)
(column-enforce-n 80)
;; Start LSP
(lsp)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'erlang-mode-hook 'icejam-activate-erlang-mode)
(provide 'icejam-lang-erlang)
;;; icejam-lang-erlang.el ends here

View file

@ -9,21 +9,24 @@
;; Fsharp configuration ;; Fsharp configuration
;;; Code: ;;; Code:
(eval-when-compile
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function column-enforce-n 'column-enforce-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package fsharp-mode :ensure t :defer t) (require 'icejam-prog-mode)
(require 'icejam-lsp)
(use-package fsharp-mode
:requires (lsp-mode lsp-ui)
:ensure t
:defer t)
(defun icejam-activate-fsharp-mode () (defun icejam-activate-fsharp-mode ()
"Activate F# goodies." "Activate F# goodies."
(icejam-set-indent 4) (icejam-set-indent 4)
(column-enforce-n 100) (column-enforce-n 100)
(eglot-ensure) (lsp-deferred)
;; Capf override ;; Company list override
(icejam-set-eglot-capfs)) (add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'fsharp-mode-hook 'icejam-activate-fsharp-mode) (add-hook 'fsharp-mode-hook 'icejam-activate-fsharp-mode)

View file

@ -0,0 +1,32 @@
;;; gleam.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Gleam language support
;;; Code:
(require 'icejam-prog-mode)
(use-package gleam-ts-mode
:ensure (:type git
:host github
:repo "gleam-lang/gleam-mode"
:files ("gleam-ts-mode.el")))
(add-to-list 'auto-mode-alist '("\\.gleam\\'" . gleam-ts-mode))
(defun icejam-lang-activate-gleam-mode ()
"All things Gleam."
(icejam-set-indent 2)
(column-enforce-n 100)
(lsp))
(add-hook 'gleam-mode-hook 'icejam-lang-activate-gleam-mode)
(provide 'icejam-lang-gleam)
;;; icejam-lang-gleam.el ends here

View file

@ -9,21 +9,21 @@
;; golang mode stuff ;; golang mode stuff
;;; Code: ;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package go-mode :defer t :ensure t) (require 'icejam-prog-mode)
(use-package go-mode
:requires (lsp-mode lsp-ui)
:defer t
:ensure t)
(defun icejam-activate-golang-mode () (defun icejam-activate-golang-mode ()
"Activate my own Golang mode settings." "Activate my own Golang mode settings."
(icejam-set-indent 8) (icejam-set-indent 8)
(column-enforce-n 100) (column-enforce-n 100)
(eglot-ensure) (lsp))
(icejam-set-eglot-capfs))
(add-hook 'go-mode-hook #'icejam-activate-golang-mode) (add-hook 'go-mode-hook 'icejam-activate-golang-mode)
(provide 'icejam-lang-golang) (provide 'icejam-lang-golang)
;;; icejam-lang-golang.el ends here ;;; icejam-lang-golang.el ends here

View file

@ -10,21 +10,26 @@
;;; Code: ;;; Code:
(eval-when-compile (require 'icejam-prog-mode)
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package haskell-mode :ensure t :defer t) (use-package haskell-mode
:ensure t
:defer t)
(use-package lsp-haskell
:ensure t
:defer t
:requires (lsp-mode lsp-ui haskell-mode))
(defun icejam-activate-haskell-mode () (defun icejam-activate-haskell-mode ()
"Run this in `haskell-mode'." "Run this in haskell-mode."
(icejam-set-indent 2) (icejam-set-indent 2)
(column-enforce-n 80) (column-enforce-n 80)
(eglot-ensure) (lsp-deferred)
;; Capf override ;; Company list override
(icejam-set-eglot-capfs)) (add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'haskell-mode-hook 'icejam-activate-haskell-mode) (add-hook 'haskell-mode-hook 'icejam-activate-haskell-mode)

View file

@ -2,25 +2,15 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile (require 'icejam-prog-mode)
(declare-function column-enforce-n 'column-enforce-mode (number)) (require 'icejam-flycheck)
(declare-function icejam-set-indent 'icejam-prog-mode) (require 'icejam-lsp)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package js2-mode :ensure t :defer t :after(web-mode)) (use-package js2-mode
:requires (web-mode company-web lsp-mode lsp-ui)
:ensure t)
(use-package typescript-ts-mode :ensure nil :defer t) (use-package typescript-mode :ensure t)
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . typescript-ts-mode))
(defun icejam-activate-typescript-ts-mode ()
"Typescript mode overrides."
(icejam-set-indent 2)
(eglot-ensure)
(column-enforce-n 100))
(add-hook 'typescript-ts-mode-hook 'icejam-activate-typescript-ts-mode)
;; (use-package vue-mode ;; (use-package vue-mode
;; :ensure t ;; :ensure t
@ -35,17 +25,21 @@
(icejam-set-indent 2) (icejam-set-indent 2)
(when (not (string-match-p ".json" (buffer-file-name))) (when (not (string-match-p ".json" (buffer-file-name)))
(eglot-ensure)) (lsp-deferred))
(column-enforce-n 80) (column-enforce-n 80)
(setq-local js2-basic-offset 2) (setq-local js2-basic-offset 2)
(setq-local js2-strict-missing-semi-warning nil) (setq-local js2-strict-missing-semi-warning nil)
(setq-local lsp-eldoc-enable-hover nil)
(setq js2-mode-show-parse-errors nil) (setq js2-mode-show-parse-errors nil)
(setq js2-mode-show-strict-warnings nil) (setq js2-mode-show-strict-warnings nil)
(setq-local lsp-eldoc-enable-hover nil)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled)) (setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(icejam-set-eglot-capfs)) ;; "Company list override."
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'js2-mode-hook 'icejam-activate-js2-mode) (add-hook 'js2-mode-hook 'icejam-activate-js2-mode)

View file

@ -0,0 +1,34 @@
;;; kotlin.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; kotlin does a thing.
;;; Code:
(use-package kotlin-mode
:defer t
:ensure t)
(use-package gradle-mode
:defer t
:ensure t)
(defun icejam-activate-kotlin-mode ()
"All things Kotlin."
(icejam-set-indent 4)
(column-enforce-n 100)
(lsp)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'kotlin-mode-hook 'icejam-activate-kotlin-mode)
(provide 'icejam-lang-kotlin)
;;; icejam-lang-kotlin.el ends here

View file

@ -0,0 +1,31 @@
;;; lean -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-lsp)
(use-package lean4-mode
:ensure (lean4-mode
:type git
:host github
:repo "leanprover/lean4-mode"
:files ("*.el" "data"))
:requires (lsp)
:defer t)
(defun icejam-activate-lean-mode ()
"All things for Lean mode."
(interactive)
;; Run LSP
(lsp-deferred)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'lean4-mode-hook 'icejam-activate-lean-mode)
(provide 'icejam-lang-lean)
;;; icejam-lang-lean.el ends here

View file

@ -0,0 +1,29 @@
;;; markdown -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(declare-function elpaca-installed-p "elpacs")
(unless (elpaca-installed-p 'markdown-mode)
(use-package markdown-mode :ensure t))
(with-eval-after-load 'markdown-mode
(setq-default markdown-command "pandoc"))
(defun icejam-lang-activate-markdown-mode ()
"Reconfigure markdown mode for your own purposes."
(icejam-set-indent 2)
(column-enforce-n 10000)
;; Markdown mode reuses my bindings, remove them.
(define-key markdown-mode-map (kbd "C-c <left>") nil)
(define-key markdown-mode-map (kbd "C-c <right>") nil)
(define-key markdown-mode-map (kbd "C-c <up>") nil)
(define-key markdown-mode-map (kbd "C-c <down>") nil)
(define-key markdown-mode-map (kbd "C-c C-v") 'markdown-preview))
(add-hook 'markdown-mode-hook 'icejam-lang-activate-markdown-mode)
(add-hook 'markdown-mode-hook 'display-line-numbers-mode)
(provide 'icejam-lang-markdown)
;;; icejam-lang-markdown.el ends here

View file

@ -1,15 +1,13 @@
;;; ocaml -- summary -*- lexical-binding: t; -*- ;;; ocaml -- summary -*- lexical-binding: t; -*-
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile
(defvar icejam-ocaml-lang-menu 'icejam-lang-ocaml) (require 'icejam-transient)
(defvar icejam-language-transient-alist) (require 'icejam-prog-mode)
(declare-function transient-define-prefix 'transient) (declare-function lsp "lsp-mode" nil)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package merlin :defer t :ensure t) (use-package merlin :defer t :ensure t)
(use-package opam-switch-mode :defer t :ensure t :commands (opam-switch-mode)) (use-package opam-switch-mode :defer t :ensure t)
(use-package dune :defer t :ensure t) (use-package dune :defer t :ensure t)
(use-package tuareg :defer t :ensure t) (use-package tuareg :defer t :ensure t)
@ -24,7 +22,7 @@
("i" "Indent" icejam-mark-and-indent-whole-buffer)] ("i" "Indent" icejam-mark-and-indent-whole-buffer)]
["" [""
("f" "Format" lsp-format-buffer) ("f" "Format" lsp-format-buffer)
("e" "Errors" flymake-show-buffer-diagnostics) ("e" "Errors" flycheck-list-errors)
("o" "Opam Env" opam-switch-set-switch)]] ("o" "Opam Env" opam-switch-set-switch)]]
["" [""
("q" "Quit" keyboard-quit)]) ("q" "Quit" keyboard-quit)])
@ -50,8 +48,7 @@
(icejam-set-indent 2) (icejam-set-indent 2)
(opam-switch-mode t) (opam-switch-mode t)
(icejam-load-ocaml-site-packages) (icejam-load-ocaml-site-packages)
(eglot-ensure) (lsp))
(icejam-set-eglot-capfs))
(add-hook 'tuareg-mode-hook 'icejam-activate-tuareg-mode) (add-hook 'tuareg-mode-hook 'icejam-activate-tuareg-mode)

View file

@ -18,21 +18,22 @@
(use-package nginx-mode :ensure t :defer t) (use-package nginx-mode :ensure t :defer t)
(use-package (use-package
jenkinsfile-mode jenkinsfile-mode
:ensure (:repo "https://github.com/john2x/jenkinsfile-mode.git" :ensure (:repo "https://github.com/john2x/jenkinsfile-mode.git" :branch "master")
:branch "master")
:defer t) :defer t)
(use-package lua-mode :ensure t :defer t)
;; Graphql schema definition files. ;; Graphql schema definition files.
(use-package graphql-mode :ensure t :defer t (use-package graphql-mode :ensure t :defer t
:mode ("\\.graphqls\\'" . graphql-mode)) :mode ("\\.graphqls\\'" . graphql-mode))
;; Yaml ;; Yaml
(use-package yaml-mode :ensure t :defer t) (declare-function lsp "lsp-mode" nil)
(use-package yaml-mode :ensure t :defer t :requires (lsp))
(with-eval-after-load 'yaml-mode (with-eval-after-load 'yaml-mode
(defun icejam-lang-activate-yaml-mode () (defun icejam-lang-activate-yaml-mode ()
"Activate yaml-mode." "Activate yaml-mode."
(eglot-ensure)) (lsp))
(add-hook 'yaml-mode-hook 'icejam-lang-activate-yaml-mode)) (add-hook 'yaml-mode-hook 'icejam-lang-activate-yaml-mode))
;; Other text files ;; Other text files

View file

@ -0,0 +1,49 @@
;;; php.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; php related settings
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-flycheck)
(require 'icejam-transient)
(use-package php-mode
:requires (lsp-mode lsp-ui)
:ensure t)
(transient-define-prefix icejam-lang-php/context-menu ()
"PHP Buffer Commands."
[""
["LSP"
("m" "iMenu" lsp-ui-imenu)]
["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" lsp-format-buffer)
("i" "Indent" icejam-mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun icejam-lang-activate-php-mode ()
"All things php."
(icejam-set-indent 4)
(column-enforce-n 80)
(define-key php-mode-map (kbd "C-c l") 'icejam-lang-php/context-menu)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'php-mode-hook 'icejam-lang-activate-php-mode)
(provide 'icejam-lang-php)
;;; icejam-lang-php.el ends here

View file

@ -6,17 +6,12 @@
;;; Commentary: ;;; Commentary:
;; Configuration for purescript. ;; purescript does a thing.
;;; Code: ;;; Code:
(use-package purescript-mode
(eval-when-compile :requires (lsp-mode lsp-ui)
(declare-function column-enforce-n 'column-enforce-mode (number)) :ensure t)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function purescript-indentation-mode 'purescript-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package purescript-mode :ensure t :defer t)
(defun icejam-activate-purescript-mode () (defun icejam-activate-purescript-mode ()
"All things Purescript." "All things Purescript."
@ -26,8 +21,9 @@
;; Purescript indentation ;; Purescript indentation
(purescript-indentation-mode t) (purescript-indentation-mode t)
;; Capf override ;; Company list override
(icejam-set-eglot-capfs)) (add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'purescript-mode-hook 'icejam-activate-purescript-mode) (add-hook 'purescript-mode-hook 'icejam-activate-purescript-mode)

View file

@ -1,23 +1,23 @@
;;; python -- summary -*- lexical-binding: t; -*- ;;; python -- summary -*- lexical-binding: t; -*-
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point) (require 'icejam-prog-mode)
(declare-function column-enforce-n "column-enforce-mode" (number)) (require 'icejam-transient)
(declare-function transient-define-prefix 'transient)
(defvar icejam-language-transient-alist) (declare-function lsp nil)
(defvar icejam-python-lang-menu)) (declare-function column-enforce-n "column-enforce-mode" (number))
(transient-define-prefix icejam-python-lang-menu () (transient-define-prefix icejam-python-lang-menu ()
"Python Buffer Commands." "Python Buffer Commands."
["" [""
["LSP" ["LSP"
("m" "iMenu" consult-imenu)] ("m" "iMenu" lsp-ui-imenu)]
["Buffer" ["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm) ("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" eglot-format-buffer) ("f" "Format" lsp-format-buffer)
("i" "Indent" icejam-mark-and-indent-whole-buffer) ("i" "Indent" icejam-mark-and-indent-whole-buffer)
("e" "Show Errors" flymake-show-buffer-diagnostics)]] ("e" "Show Errors" flycheck-list-errors)]]
["" [""
("q" "Quit" keyboard-quit)]) ("q" "Quit" keyboard-quit)])
@ -25,16 +25,14 @@
(add-to-list (add-to-list
'icejam-language-transient-alist '(python-mode . icejam-python-lang-menu)) 'icejam-language-transient-alist '(python-mode . icejam-python-lang-menu))
;; Python template language
(use-package jinja2-mode :ensure t :defer t)
(defun icejam-lang-activate-python-mode () (defun icejam-lang-activate-python-mode ()
"Activate python mode." "Activate python mode."
(eglot-ensure) (lsp)
(column-enforce-n 99) (column-enforce-n 99)
;; Capf override ;; Company list override
(icejam-set-eglot-capfs)) (add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'python-mode-hook 'icejam-lang-activate-python-mode) (add-hook 'python-mode-hook 'icejam-lang-activate-python-mode)

View file

@ -2,14 +2,9 @@
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile (require 'icejam-prog-mode)
(defvar icejam-language-transient-alist)
(defvar eglot-server-programs)
(defvar ruby-insert-encoding-magic-comment)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package rspec-mode :ensure t :defer t :commands (rspec-install-snippets)) (use-package rspec-mode :ensure t :defer t)
(use-package ruby-end :ensure t :defer t) (use-package ruby-end :ensure t :defer t)
(use-package rbs-mode :ensure t :defer t) (use-package rbs-mode :ensure t :defer t)
@ -23,13 +18,14 @@
(add-to-list (make-local-variable 'flycheck-disabled-checkers) 'ruby-reek 'ruby-rubocop) (add-to-list (make-local-variable 'flycheck-disabled-checkers) 'ruby-reek 'ruby-rubocop)
;; Do not insert magic encoding comment at the begining of each file ;; Do not insert magic encoding comment at the begining of each file
(setopt ruby-insert-encoding-magic-comment nil) (setq ruby-insert-encoding-magic-comment nil)
;; Start LSP ;; Start LSP
(eglot-ensure) (lsp)
;; Capf override ;; Company list override
(icejam-set-eglot-capfs)) (add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'ruby-ts-mode-hook 'rspec-mode) (add-hook 'ruby-ts-mode-hook 'rspec-mode)
(add-hook 'ruby-ts-mode-hook 'ruby-end-mode) (add-hook 'ruby-ts-mode-hook 'ruby-end-mode)

View file

@ -1,27 +1,19 @@
;;; rust -- summary -*- lexical-binding: t; -*- ;;; rust -- summary -*- lexical-binding: t; -*-
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number)) (require 'icejam-prog-mode)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package rust-mode (use-package rust-mode
:ensure t :ensure t
:defer t :defer t
:config (setopt rust-mode-treesitter-derive t)) :config
(setq rust-mode-treesitter-derive t))
(use-package rustic
:ensure t
:defer t
:after (rust-mode)
:config (setopt rustic-format-on-save nil)
(setopt rustic-lsp-client 'eglot))
(use-package flycheck-rust (use-package flycheck-rust
:ensure t :ensure t
:defer t :defer t
:after (rust-mode)) :requires (rust-mode lsp))
(defun icejam-activate-rust-mode () (defun icejam-activate-rust-mode ()
"All things for Rust mode." "All things for Rust mode."
@ -30,8 +22,11 @@
(column-enforce-n 99) (column-enforce-n 99)
;; Run LSP ;; Run LSP
(eglot-ensure) (lsp-deferred)
(icejam-set-eglot-capfs))
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'rust-mode-hook 'icejam-activate-rust-mode) (add-hook 'rust-mode-hook 'icejam-activate-rust-mode)
(add-hook 'rust-mode-hook 'flycheck-rust-setup) (add-hook 'rust-mode-hook 'flycheck-rust-setup)

View file

@ -0,0 +1,13 @@
;;; sh -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(use-package fish-mode :ensure t :defer t)
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\zshrc\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.zshrc\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.envrc\\'" . sh-mode))
(provide 'icejam-lang-sh)
;;; icejam-lang-sh.el ends here

View file

@ -1,7 +1,13 @@
;;; web -- summary -*- lexical-binding: t; -*- ;;; web -- summary -*- lexical-binding: t; -*-
;;; Commentary: ;;; Commentary:
;;; Code: ;;; Code:
(use-package web-mode :ensure t :defer t)
(require 'icejam-lsp)
(require 'icejam-flycheck)
(use-package web-mode
:requires (lsp-mode flycheck)
:ensure t)
;; Eex Web mode ;; Eex Web mode
(add-to-list 'auto-mode-alist '("\\.eex\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.eex\\'" . web-mode))
@ -13,7 +19,7 @@
;; Vue JS ;; Vue JS
(add-to-list 'auto-mode-alist '("\\.vue\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.vue\\'" . web-mode))
(setopt web-mode-extra-auto-pairs (setq web-mode-extra-auto-pairs
'(("eex" . (("<%" "%>"))) '(("eex" . (("<%" "%>")))
("leex" . (("<%" "%>"))) ("leex" . (("<%" "%>")))
("erb" . (("<%" "%>") ("erb" . (("<%" "%>")
@ -25,9 +31,18 @@
(setq-local web-mode-script-padding 2) (setq-local web-mode-script-padding 2)
(setq-local web-mode-code-indent-offset 2) (setq-local web-mode-code-indent-offset 2)
(setq-local web-mode-markup-indent-offset 2) (setq-local web-mode-markup-indent-offset 2)
(setq-local lsp-eldoc-enable-hover nil)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled)) (setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet))
(when (string-match-p ".jsx" (buffer-file-name))
(lsp))
(when (string-match-p ".tsx" (buffer-file-name))
(lsp))
(when (string-match-p ".vue" (buffer-file-name)) (when (string-match-p ".vue" (buffer-file-name))
(eglot-ensure))) (lsp)))
(add-hook 'web-mode-hook 'icejam-activate-web-mode) (add-hook 'web-mode-hook 'icejam-activate-web-mode)

View file

@ -1,4 +1,4 @@
;;; ziglang.el --- summary -*- lexical-binding: t; -*- ;;; ziglang.el --- summary
;; Author: Maciej Szlosarczyk ;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk ;; Maintainer: Maciej Szlosarczyk
@ -9,12 +9,9 @@
;; ziglang does a thing. ;; ziglang does a thing.
;;; Code: ;;; Code:
(eval-when-compile (require 'icejam-prog-mode)
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package zig-mode :ensure t :defer t) (use-package zig-mode :ensure t :defer t :requires (lsp))
(defun icejam-activate-zig-mode () (defun icejam-activate-zig-mode ()
"Goodies for editing zig files." "Goodies for editing zig files."
@ -24,8 +21,7 @@
;; Set indentation to 4 chars ;; Set indentation to 4 chars
(icejam-set-indent 4) (icejam-set-indent 4)
(eglot-ensure) (lsp))
(icejam-set-eglot-capfs))
(add-hook 'zig-mode-hook 'icejam-activate-zig-mode) (add-hook 'zig-mode-hook 'icejam-activate-zig-mode)

View file

@ -5,7 +5,7 @@
;; Based on harmonic-dark theme by Jannik Seibert (https://github.com/janniks) ;; Based on harmonic-dark theme by Jannik Seibert (https://github.com/janniks)
;;; Code: ;;; Code:
(use-package icejam-themes :ensure nil) (use-package base16-theme :ensure t :defer t)
(defvar base16-not-harmonic-colors (defvar base16-not-harmonic-colors
'(:base00 "#102941" '(:base00 "#102941"
@ -30,7 +30,6 @@
(deftheme base16-not-harmonic) (deftheme base16-not-harmonic)
;; Add all the faces to the theme ;; Add all the faces to the theme
(declare-function base16-theme-define 'base16-theme)
(base16-theme-define 'base16-not-harmonic base16-not-harmonic-colors) (base16-theme-define 'base16-not-harmonic base16-not-harmonic-colors)
;; Customise things ;; Customise things

View file

@ -7,7 +7,7 @@
;;; Code: ;;; Code:
(use-package icejam-themes :ensure nil) (use-package base16-theme :ensure t :defer t)
(defvar base16-summerfruit-light-modified-colors (defvar base16-summerfruit-light-modified-colors
'(:base00 "#fdfcfa" '(:base00 "#fdfcfa"
@ -32,7 +32,6 @@
(deftheme base16-summerfruit-light-modified) (deftheme base16-summerfruit-light-modified)
;; Add all the faces to the theme ;; Add all the faces to the theme
(declare-function base16-theme-define 'base16-theme)
(base16-theme-define 'base16-summerfruit-light-modified base16-summerfruit-light-modified-colors) (base16-theme-define 'base16-summerfruit-light-modified base16-summerfruit-light-modified-colors)
;; Mark the theme as provided ;; Mark the theme as provided

View file

@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: desc
# key: desc
# --
describe "$1" do
$0
end

View file

@ -1,4 +0,0 @@
# -*- mode: snippet -*-
# name: dco-signoff
# --
Signed-off-by: Maciej Szlosarczyk (${1:maciej@sosek.net})

View file

@ -1,100 +0,0 @@
;;; icejam-complete-at-point.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Completion framework configuration
;;; Code:
(eval-when-compile
(declare-function cape-capf-prefix-length 'cape)
(declare-function cape-capf-super 'cape)
(declare-function cape-dabbrev 'cape)
(declare-function cape-elisp-symbol 'cape)
(declare-function cape-file 'cape)
(declare-function cape-keyword 'cape)
(declare-function eglot-completion-at-point 'eglot)
(declare-function nerd-icons-corfu-formatter 'nerd-icons-corfu)
(declare-function yasnippet-capf 'yasnippet)
(defvar corfu-margin-formatters)
(defvar corfu-terminal-mode 'corfu-terminal)
(defvar yas-minor-mode-map))
(use-package yasnippet :ensure t :defer t
:hook ((elpaca-after-init . yas-global-mode))
:config
(unbind-key "C-c & C-n" yas-minor-mode-map)
(unbind-key "C-c & C-s" yas-minor-mode-map)
(unbind-key "C-c & C-v" yas-minor-mode-map))
(use-package yasnippet-snippets :ensure t :after (yasnippet))
;; Corfu is the main engine for displaying suggestions.
(use-package corfu :ensure t :defer t
:hook ((elpaca-after-init . global-corfu-mode)
(global-corfu-mode . corfu-popupinfo-mode))
:config
;; Go up to go the the last item on the list
(setopt corfu-cycle t
corfu-count 20 ;; Show 20 completion candidates
corfu-max-width 100 ;; Max width of the corfu frame
corfu-right-margin-width 0.5
corfu-left-margin-width 0.5
corfu-bar-width 0.5
;; Do not insert when you type a word that happens to be a
;; completion candidate. A typical example is `format`, which
;; is a yas snippet.
corfu-on-exact-match 'quit
corfu-quit-at-boundary t
corfu-popupinfo-delay '(0.4 . 0.2)
corfu-auto t
corfu-auto-delay 0.2
corfu-quit-no-match 'separator
;; Invoke completion with tab when needed.
tab-always-indent 'complete))
;; Allow corfu to work in terminal
(use-package corfu-terminal :ensure t :defer t
:if (not (display-graphic-p))
:hook ((elpaca-after-init . corfu-terminal-mode)))
;; These are actual completions
(use-package cape :ensure t :after corfu
:config
;; Set default completion values:
(set-default 'completion-at-point-functions
(list (cape-capf-super #'cape-dabbrev #'yasnippet-capf)
#'cape-file
#'cape-keyword)))
(defun icejam-set-no-eglot-capfs ()
"Set `completion-at-point-function` to non-LSP list."
(setq-local completion-at-point-functions
(list (cape-capf-super #'cape-dabbrev #'yasnippet-capf)
#'cape-file
#'cape-keyword)))
(defun icejam-set-eglot-capfs ()
"Set `completion-at-point-function` to list where LSP is supported."
(setq-local completion-at-point-functions
(list
(cape-capf-super #'yasnippet-capf #'eglot-completion-at-point)
#'cape-dabbrev
#'cape-file)))
(defun icejam-set-elisp-capfs ()
"Set `completion-at-point-function` to what is useful in Elisp."
(setq-local completion-at-point-functions
(list (cape-capf-super #'elisp-completion-at-point
#'yasnippet-capf)
#'cape-dabbrev
#'cape-file
#'cape-elisp-symbol)))
(use-package yasnippet-capf :ensure t :after corfu :defer t
:config
(setopt yasnippet-capf-lookup-by 'name))
(use-package nerd-icons-corfu :ensure t :after corfu :defer 5
:config
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
(provide 'icejam-complete-at-point)
;;; icejam-complete-at-point.el ends here

View file

@ -1,84 +0,0 @@
;;; icejam-completing-read -- Functions related to completing-read -*- lexical-binding: t; -*-
;;; Commentary:
;;;
;;; completing-read is the way of completing things in minibuffer. This module
;;; provides all of that functionality, everything related to minbuffer being
;;; helpful.
;;;
;;; Code:
(eval-when-compile
(defvar icejam-keys-mode-map)
(defvar crm-separator))
;; Preparations for using Vertico/Orderless
(setopt
;; Support opening new minibuffers from inside existing minibuffers.
enable-recursive-minibuffers t
;; Hide commands in M-x which do not work in the current mode. Vertico
;; commands are hidden in normal buffers. This setting is useful beyond
;; Vertico.
read-extended-command-predicate #'command-completion-default-include-p
;; Do not allow the cursor in the minibuffer prompt
minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(defun crm-indicator (args)
"Work with ARGS in `completing-read-multiple`."
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
;; Vertico relies on Emacs 31 compatibility
(use-package compat :ensure t)
;; Actual orderless
(use-package vertico :ensure t :defer t
:hook ((elpaca-after-init . vertico-mode))
:config
(setopt vertico-scroll-margin 1) ;; Scroll on N-1
(setopt vertico-count 15) ;; Show 5 more candidates
(setopt vertico-resize t) ;; Grow and shrink the vertico minibufffer
(setopt vertico-cycle t) ;; Cycle completion
;; Use H-enter to submit current value instead of first matching candidate
(keymap-set vertico-map "H-<return>" 'vertico-exit-input)
;; Add working page up /down
(keymap-set vertico-map "<next>" 'vertico-scroll-up)
(keymap-set vertico-map "<prior>" 'vertico-scroll-down))
(use-package orderless :ensure t
:config
;; Fallback to basic if orderless does not work.
(setopt completion-styles '(orderless basic))
(setopt completion-category-defaults nil)
(setopt completion-category-overrides '((file (styles partial-completion)))))
(use-package marginalia :ensure t :defer t
:hook ((elpaca-after-init . marginalia-mode)))
(use-package consult :ensure t
:config
;; Using ripgrep, show hidden files but ignore contents of .git
(setopt consult-ripgrep-args
"rg --null --line-buffered --color=never --max-columns=1000 \
--path-separator / --smart-case --no-heading --with-filename --line-number \
--search-zip --hidden --glob \"!.git/*\"")
:bind (:map icejam-keys-mode-map
("C-c t" . find-file)
("M-g g" . consult-goto-line)
("C-c a" . consult-ripgrep)))
(use-package helpful :ensure t :defer t
:bind (([remap describe-key] . helpful-key)
([remap describe-variable] . helpful-variable)
([remap describe-function] . helpful-callable)
([remap describe-command] . helpful-command)))
(provide 'icejam-completing-read)
;;; icejam-completing-read.el ends here

View file

@ -1,167 +0,0 @@
;;; icejam-custom-init.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; custom-init does a thing.
;;; Code:
(eval-when-compile
(declare-function elpaca 'elpaca)
(declare-function elpaca-generate-autoloads 'elpaca)
(declare-function elpaca-process-queues 'elpaca)
(declare-function elpaca-use-package-mode 'elpaca-use-package)
(declare-function elpaca-write-lock-file 'elpaca))
;; Set GC at 500 MB for startup
(setopt gc-cons-threshold 500000000)
(setopt gc-cons-percentage 5.0)
(add-hook 'elpaca-after-init-hook (lambda ()
;; Restore GC to normal, but still high
(setopt gc-cons-threshold (* 100 1024 1024 2))
(setopt gc-cons-percentage 0.2)))
;; Increase how much data emacs reads from processes to 4 MB.
(setopt read-process-output-max (* 4 1024 1024))
;; Change file handler for startup
(defvar last-file-name-handler-alist file-name-handler-alist)
(setopt file-name-handler-alist nil)
(add-hook 'after-init-hook (lambda ()
;; Restore to normal file handler
(setopt file-name-handler-alist
last-file-name-handler-alist)))
;; Allow for deeper stacktraces / recursion
;; (setopt max-lisp-eval-depth 10000)
;;; Use elpaca for package management.
(defvar elpaca-installer-version 0.12)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-sources-directory (expand-file-name "sources/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1 :inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca-activate)))
(let* ((repo (expand-file-name "elpaca/" elpaca-sources-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let* ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;; Use package settings
(setopt use-package-verbose t)
(setopt use-package-compute-statistics t)
;; Enable use-package :ensure support for Elpaca.
(defvar elpaca-use-package)
(elpaca elpaca-use-package (elpaca-use-package-mode))
;; (elpaca-load-lockfile (concat user-emacs-directory "elpaca.lock"))
;; (setopt elpaca-lock-file (concat user-emacs-directory "elpaca.lock"))
(use-package benchmark-init :ensure (:wait t)
:config
(add-hook 'after-init-hook 'benchmark-init/deactivate))
(defun icejam-elpaca-write-lock ()
"Write elpaca lock file."
(interactive)
(elpaca-write-lock-file (concat user-emacs-directory "elpaca.lock")))
;; I don't know why this needs to be here and with a lisp directory, but
;; normal subdirs.el file doesn't work.
(add-to-list 'load-path (concat user-emacs-directory "user-lisp"))
(add-to-list 'load-path (concat user-emacs-directory "user-lisp/themes"))
(add-to-list 'load-path (concat user-emacs-directory "user-lisp/langs"))
(defgroup icejam nil
"My customisation group."
:group 'local)
;; General configuration files.
(use-package icejam-keys-mode :ensure nil)
(use-package icejam-base :ensure nil)
(use-package icejam-sys-specific :ensure nil)
(use-package icejam-tree-sitter :ensure nil)
(use-package icejam-completing-read :ensure nil)
(use-package icejam-avy :ensure nil)
(use-package icejam-transient :ensure nil)
(use-package icejam-prog-mode :ensure nil)
(use-package icejam-complete-at-point :ensure nil)
(use-package icejam-flycheck :ensure nil)
(use-package icejam-ispell :ensure nil)
(use-package icejam-deft :ensure nil)
(use-package icejam-eglot :ensure nil)
(use-package icejam-dashboard :ensure nil)
(use-package icejam-magit :ensure nil)
(use-package icejam-vundo :ensure nil)
(use-package icejam-speed-type :ensure nil)
;; Themes
(use-package icejam-themes :ensure nil)
(use-package icejam-fonts :ensure nil)
;; Actual supported languages and file syntax.
(use-package icejam-lang-clang :ensure nil)
(use-package icejam-lang-clojure :ensure nil)
(use-package icejam-lang-dart :ensure nil)
(use-package icejam-lang-dhall :ensure nil)
(use-package icejam-lang-elisp :ensure nil)
(use-package icejam-lang-elixir :ensure nil)
(use-package icejam-lang-erlang :ensure nil)
(use-package icejam-lang-fsharp :ensure nil)
(use-package icejam-lang-gleam :ensure nil)
(use-package icejam-lang-golang :ensure nil)
(use-package icejam-lang-haskell :ensure nil)
(use-package icejam-lang-javascript :ensure nil)
(use-package icejam-lang-java :ensure nil)
(use-package icejam-lang-kotlin :ensure nil)
(use-package icejam-lang-lua :ensure nil)
(use-package icejam-lang-markdown :ensure nil)
(use-package icejam-lang-ocaml :ensure nil)
(use-package icejam-lang-other :ensure nil)
(use-package icejam-lang-php :ensure nil)
(use-package icejam-lang-purescript :ensure nil)
(use-package icejam-lang-python :ensure nil)
(use-package icejam-lang-ruby :ensure nil)
(use-package icejam-lang-rust :ensure nil)
(use-package icejam-lang-sh :ensure nil)
(use-package icejam-lang-web :ensure nil)
(use-package icejam-lang-ziglang :ensure nil)
;; Diminish modeline litter
(use-package icejam-diminish :ensure nil)
(provide 'icejam-custom-init)
;;; icejam-custom-init.el ends here

View file

@ -1,29 +0,0 @@
;;; dashboard.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Dashboard extracted from Spacemacs.
;;; Code:
(use-package dashboard :ensure t :defer t
:commands dashboard-setup-startup-hook
:hook ((elpaca-after-init . dashboard-open))
:config
;; setopt gives a warning here, so let's use setq
(setq dashboard-footer-messages '("Happy coding!"
"I showed you my source code, pls respond"))
(setopt dashboard-startup-banner 'logo)
(setopt dashboard-items '((recents . 5)
;; (bookmarks . 5)
;; (agenda . 5)
;; (registers . 5)
(projects . 5)))
(dashboard-setup-startup-hook))
(provide 'icejam-dashboard)
;;; icejam-dashboard.el ends here

View file

@ -1,23 +0,0 @@
;;; icejam-deft.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Notational velocity, backed by OneDrive.
;;; Code:
(use-package deft :ensure t :defer t
:config
(setopt deft-directory (substitute-in-file-name "$DEFT_PATH")
deft-default-extension "md"
deft-ignore-file-regexp "\\._[0-9-A-Z_]+\\.md$"
deft-strip-summary-regexp (concat "\\("
"[\n\t]" ;; blank
"\\|^:[[:ascii:]]+:.*$" ;; org-mode properties string
"\\|^Title:.*$" ;; Title string
"\\|^title:.*$" ;; title string
"\\|^\\[\\[file:.*$" ;; org-mode inline-images
;; org-mode properties
;; "\\|:PROPERTIES:\n\\(.+\n\\)+:END:\n" ;;
"\\)")
deft-auto-save-interval 30.0))
(provide 'icejam-deft)
;;; icejam-deft.el ends here

View file

@ -1,35 +0,0 @@
;;; icejam-diminish.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; diminish minor modes to remove modeline litter.
;;; Code:
(use-package diminish :ensure t :defer t :commands (diminish))
(defun icejam-diminish-modes ()
"Diminish selected modes."
(dolist (package-and-mode '((flyspell flyspell-mode)
(flycheck flycheck-mode)
(rainbow-mode rainbow-mode)
(undo-tree undo-tree-mode)
(which-key which-key-mode)
(eldoc eldoc-mode)
(yasnippet yas-minor-mode)
(whitespace whitespace-mode)
(autorevert auto-revert-mode)
(ivy ivy-mode)
(smerge-mode smerge-mode)
(gcmh gcmh-mode)))
(let ((package (car package-and-mode))
(mode (car (last package-and-mode))))
(with-eval-after-load package (diminish mode)))))
(add-hook 'elpaca-after-init-hook 'icejam-diminish-modes)
(provide 'icejam-diminish)
;;; icejam-diminish.el ends here

View file

@ -1,69 +0,0 @@
;;; icejam-eglot -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Global Language Server Protocol Config
;;; Code:
(eval-when-compile
(declare-function eglot-completion-at-point 'eglot)
(declare-function eglot-managed-p 'eglot))
(use-package eglot :ensure nil
:config
;; Use Ruby-Lsp instead of Solargraph
(add-to-list 'eglot-server-programs '((ruby-mode ruby-ts-mode) "ruby-lsp"))
;; Use gleam LSP
(add-to-list 'eglot-server-programs '((gleam-ts-mode) "gleam" "lsp"))
;; Use Kotlin-LSP provided by Jetbrains
(add-to-list 'eglot-server-programs
'((kotlin-mode kotlin-ts-mode) "kotlin-lsp" "--stdio"))
(setopt eglot-advertise-cancellation t)
;; Automatically kill eglot when last buffer associated with a project is
;; closed.
(setopt eglot-autoshutdown t)
(setopt eglot-connect-timeout 60)
(setopt eglot-extend-to-xref t)
;; Set up server specific switches globally
(setq-default eglot-workspace-configuration
;; Elixir configuration
'(
:elixirLS (
:autoBuild t
:dialyzerEnabled t
:incrementalDialyzer :json-false
:autoInsertRequiredAlias :json-false
:suggestSpecs t
)
)
)
;; Eglot insists on adding itself to the completion-at-point-functions but
;; that means that it overrides our combined value of (eglot + yasnippet)
(add-hook 'eglot-managed-mode-hook
(lambda ()
(when eglot--managed-mode
(remove-hook 'completion-at-point-functions
#'eglot-completion-at-point t)))))
(defun icejam-start-eglot ()
"Start eglot unless already started."
(unless (eglot-managed-p)
(eglot-ensure)))
(use-package eldoc-box
:ensure (:host github :repo "casouri/eldoc-box")
:hook ((emacs-lisp-mode . eldoc-box-hover-at-point-mode)
(eglot--managed-mode . eldoc-box-hover-at-point-mode))
:custom-face
(eldoc-box-markdown-separator ((t (:inherit (fringe))))))
;; Add debugger support to emacs.
(use-package dape :ensure t)
(provide 'icejam-eglot)
;;; icejam-eglot.el ends here

View file

@ -1,80 +0,0 @@
;;; icejam-flycheck -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
;; Use flycheck checks with flymake.
(eval-when-compile
(declare-function cape-capf-super 'cape)
(declare-function cape-dabbrev 'cape)
(declare-function cape-file 'cape)
(declare-function cape-keyword 'cape)
(declare-function el-patch-defun 'el-patch)
(declare-function el-patch-feature 'el-patch)
(declare-function flymake--diagnostics-buffer-name 'flymake)
(declare-function flymake--project-diagnostics-buffer 'flymake)
(declare-function flymake-diagnostics-buffer-mode 'flymake)
(declare-function flymake-project-diagnostics-mode 'flymake)
(declare-function project-root 'project)
(declare-function yasnippet-capf 'yasnippet-capf)
(defvar flymake--diagnostics-buffer-source)
(defvar flymake-mode)
(defvar flymake-show-buffer-diagnostics)
(defvar flymake-show-project-diagnostics))
(use-package flymake-flycheck :ensure t :defer t :config
(setq-default
flycheck-disabled-checkers
(append (default-value 'flycheck-disabled-checkers)
'(emacs-lisp emacs-lisp-checkdoc emacs-lisp-package sh-shellcheck))))
(use-package el-patch :ensure t :defer t
:config
;; Show the diagnostics from flymake in a second window (usually on the
;; opposite side from this one) instead of at the bottom of the current one.
;; Essentially revert the interesting part of this commit:
;; https://github.com/emacs-mirror/emacs/commit/419550c7907275bf962986e1cc8fba1989d8659c
(el-patch-feature 'flymake)
(with-eval-after-load 'flymake
(el-patch-defun flymake-show-project-diagnostics ()
"Show a list of Flymake diagnostics for the current project."
(interactive)
(let* ((prj (project-current))
(root (project-root prj))
(buffer (flymake--project-diagnostics-buffer root)))
(with-current-buffer buffer
(flymake-project-diagnostics-mode)
(setq-local flymake--project-diagnostic-list-project prj)
(display-buffer (current-buffer))
(revert-buffer))))
(el-patch-defun flymake-show-buffer-diagnostics ()
"Show a list of Flymake diagnostics for current buffer."
(interactive)
(unless flymake-mode
(user-error "Flymake mode is not enabled in the current buffer"))
(let* ((name (flymake--diagnostics-buffer-name))
(source (current-buffer))
(target (or (get-buffer name)
(with-current-buffer (get-buffer-create name)
(flymake-diagnostics-buffer-mode)
(current-buffer)))))
(with-current-buffer target
(setq flymake--diagnostics-buffer-source source)
(display-buffer (current-buffer))
(revert-buffer))))))
;; Use flymake, the built in linter/checker.
(use-package flymake :ensure nil
:defer t
:config
;; Show 'Fly' in mode line.
(setopt flymake-mode-line-lighter "Fly")
;; Use the same load-path as normal configuration. This makes the errors that
;; appear in elisp files less jarring.
(setopt elisp-flymake-byte-compile-load-path load-path)
:hook ((prog-mode . flymake-mode)
(text-mode . flymake-mode)
(flymake-mode . flymake-flycheck-auto)))
(provide 'icejam-flycheck)
;;; icejam-flycheck.el ends here

View file

@ -1,135 +0,0 @@
;;; icejam-fonts.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Set font stuff
;;; Code:
;; (defconst icejam-font "Monoid"
;; (defconst icejam-font "Fira Mono"
;; (defconst icejam-font "Fira Code"
;; (defconst icejam-font "Red Hat Mono"
;; (defconst icejam-font "Agave Nerd Font Mono"
;; (defconst icejam-font "Input Mono Condensed"
;; (defconst icejam-font "SF Mono"
;; (defconst icejam-font "Monaco"
;; (defconst icejam-font "JetBrains Mono" "Default font.")
;; (defconst icejam-font "JuliaMono"
;; (defconst icejam-font "Rec Mono Semicasual"
;; (defconst icejam-font "IBM Plex Mono"
;; (defconst icejam-font "Berkeley Mono Trial"
;; (defconst icejam-font "Inconsolata"
;; (defconst icejam-font "Victor Mono Medium" "Default font.")
;; (defconst icejam-font "Iosevka Term" "Default font.")
(defconst icejam-default-font-family "Iosevka" "Default font.")
(defconst icejam-variable-font-family "Lexica Ultralegible"
"Variable pitch font.")
(defconst icejam-markdown-font-family "Iosevka Comfy Motion"
"Font used to render code blocks in markdown.
It is different than default font to keep it visually distinct.")
;; Require dash functions to be included:
(eval-when-compile
(declare-function -> 'dash))
(defconst icejam-font-height 14
"Default height of then font.
It is used to calculated the height in relation to the screen
in `icejam-set-font-to-screen`.")
(defcustom icejam-mut-default-font-family
icejam-default-font-family
"Current font, defaults to the one loaded in the beginning."
:type 'string
:group 'icejam)
(defcustom icejam-mut-variable-font-family
icejam-default-font-family
"Current variable-pitch font. Defaults to `icejam-variable-font-family`."
:type 'string
:group 'icejam)
(defcustom icejam-mut-markdown-font-family
icejam-markdown-font-family
"Current markdown font family, defaults to the one loaded in the beginning."
:type 'string
:group 'icejam)
(defcustom icejam-mut-font-height
icejam-font-height
"Current font height."
:type 'integer
:group 'icejam)
;;;;;;;;;;;;;;;;;;;;;; Font configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun icejam-set-font (family height)
"Set font to FAMILY and its HEIGHT to X.
Not all faces will be set to this value. Some of them look better with being
slightly smaller than the default face, by 1 point. Those are: `tooltip'.
Modeline faces (`mode-line' and `mode-line-inactive') look better if they are
two points smaller."
(interactive "sNew font: \nnEnter height for %s: ")
(setopt icejam-mut-default-font-family family)
(setopt icejam-mut-font-height height)
(setopt icejam-mut-variable-font-family icejam-variable-font-family)
;; Set default font.
(dolist (face '(default))
(set-face-attribute face nil
:family family
:height (-> height (* 10))
:width 'medium
:weight 'semi-light))
;; Set variable-pitch font
(dolist (face '(variable-pitch))
(set-face-attribute face nil
:family icejam-mut-variable-font-family
:height (-> height (* 10))))
;; Tooltips look better when they are 1 point smaller.
(dolist (face '(tooltip))
(set-face-attribute face nil :height (-> height
(- 1)
(* 10))))
;; Modeline looks better when it is 2 points smaller.
(dolist (face '(mode-line
mode-line-inactive))
(set-face-attribute face nil :height (-> height
(- 2)
(* 10)))))
(defun icejam-set-font-to-screen ()
"Automatically set font height to suit the monitor."
(interactive)
;; Only do anything if there's a display at all.
(when (x-display-list)
(let* ((pixel-height (x-display-pixel-height))
(adjustment (cond
((>= 1080 pixel-height) 2) ;; Built-in 14" Macbook screen
((>= 1440 pixel-height) 3) ;; 27" screen connected to a Macbook
((>= 2160 pixel-height) -3)))) ;; 4K screen (i.e Linux)
(when adjustment
(icejam-set-font icejam-default-font-family
(+ icejam-font-height adjustment))))))
;; Run the above function once, after elpaca finishes all downloads.
(add-hook 'elpaca-after-init-hook 'icejam-set-font-to-screen)
(defun icejam-set-font-height (height)
"Set font to a specified HEIGHT."
(interactive "nEnter height for font: ")
(icejam-set-font icejam-mut-default-font-family height))
(defun icejam-set-font-height-for-this-frame (new-height)
"Set font NEW-HEIGHT for this frame only."
(interactive "nEnter new height for font in this frame: ")
(set-frame-font (format "%s %d" icejam-mut-default-font-family new-height)))
(provide 'icejam-fonts)
;;; icejam-fonts.el ends here

View file

@ -1,65 +0,0 @@
;;; icejam-keys-mode.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; My global mode, to house my custom keys.
;;; Code:
(define-minor-mode icejam-keys-mode
"Minor mode for all of my personal key bindings."
:global t
:group 'icejam
:keymap (make-sparse-keymap))
;; Globally enable my minor mode
(icejam-keys-mode)
(defun icejam-revert-buffer-no-confirm ()
"Revert buffer without confirmation."
(interactive) (revert-buffer t t))
;; Splitting window
(keymap-set icejam-keys-mode-map "C-c \\" #'split-window-right)
(keymap-set icejam-keys-mode-map "C-c /" #'split-window-below)
(keymap-set icejam-keys-mode-map "C-c \"" #'split-window-right)
(keymap-set icejam-keys-mode-map "C-c %" #'split-window-below)
(keymap-set icejam-keys-mode-map "C-c '" #'split-window-right)
(keymap-set icejam-keys-mode-map "C-c 5" #'split-window-below)
;; Move between windows
(keymap-set icejam-keys-mode-map "C-c <left>" #'windmove-left)
(keymap-set icejam-keys-mode-map "C-c <right>" #'windmove-right)
(keymap-set icejam-keys-mode-map "C-c <up>" #'windmove-up)
(keymap-set icejam-keys-mode-map "C-c <down>" #'windmove-down)
;; History of buffers
(keymap-set icejam-keys-mode-map "C-c s [" #'previous-buffer)
(keymap-set icejam-keys-mode-map "C-c s ]" #'next-buffer)
;; These are slightly more conveniently located on an Ergodox/Moonlander
(keymap-set icejam-keys-mode-map "C-c s <left>" #'previous-buffer)
(keymap-set icejam-keys-mode-map "C-c s <right>" #'next-buffer)
;; List of buffers buffer
(keymap-set icejam-keys-mode-map "C-c b" #'ibuffer)
;; Manipulate buffers (kill or revert)
(keymap-set icejam-keys-mode-map "C-c q" #'kill-buffer-and-window)
(keymap-set icejam-keys-mode-map "C-c r" #'icejam-revert-buffer-no-confirm)
;; Make emacs behave like a normal editor from 21st century.
(keymap-set icejam-keys-mode-map "<home>" #'beginning-of-line)
(keymap-set icejam-keys-mode-map "<end>" #'end-of-line)
;;;;;;;;; Translate keys ;;;;;;;;;;;;;;;;;;;;;
(keymap-set key-translation-map "<f6>" "C-c l") ;; On F6, send C-c l
(keymap-set key-translation-map "<f7>" "C-c c") ;; On F7, send C-c c
(keymap-set key-translation-map "<f8>" "C-c p") ;; On F8, send C-c p
(provide 'icejam-keys-mode)
;;; icejam-keys-mode.el ends here

View file

@ -1,27 +0,0 @@
;;; icejam-magit.el -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(eval-when-compile
(declare-function git-commit-setup-capf 'git-commit)
(defvar git-commit-setup-hook)
(defvar icejam-keys-mode-map)
(defvar magit-blame-mode-map))
(use-package magit
:ensure t
:commands (magit-blame-quit)
:defer t
:bind
(:map icejam-keys-mode-map
("<f5> c" . magit-checkout)
("<f5> b" . magit-blame-addition)
("<f5> g" . magit-status))
(:map magit-blame-mode-map
("<f5> b" . 'magit-blame-quit))
:config
(setopt git-commit-setup-hook
(remove #'git-commit-setup-capf git-commit-setup-hook)))
(provide 'icejam-magit)
;;; icejam-magit.el ends here

View file

@ -1,89 +0,0 @@
;;; sys-specific -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Make Emacs play nicer with specific operating systems
;;; Code:
(defconst IS-MAC (eq system-type 'darwin))
(defconst IS-GNU (eq system-type 'gnu/linux))
(eval-when-compile (defvar icejam-keys-mode-map))
(defun icejam-function-delete-window ()
"Kill a window."
(interactive) (delete-window))
;; Mac-specific config
(if IS-MAC
(progn
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'hyper)
(defun icejam-mac-switch-meta nil
"Switch meta between Option and Command."
(interactive)
(if (eq mac-option-modifier nil)
(progn
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'hyper))
(progn
(setq mac-option-modifier nil)
(setq mac-command-modifier 'meta))))
;; Mac binding (fix)
(keymap-set icejam-keys-mode-map "H-<right>" #'end-of-line)
(keymap-set icejam-keys-mode-map "H-<left>" #'beginning-of-line)
(keymap-set icejam-keys-mode-map "H-<up>" #'scroll-down) ; WTF is this reverse, I dunno
(keymap-set icejam-keys-mode-map "H-<down>" #'scroll-up)
;; Use CMD bindings that you know from the operating system
(keymap-set icejam-keys-mode-map "H-a" #'mark-whole-buffer) ;; Select all
(keymap-set icejam-keys-mode-map "H-v" #'yank) ;; Paste
(keymap-set icejam-keys-mode-map "H-x" #'kill-region) ;; Cut
(keymap-set icejam-keys-mode-map "H-c" #'kill-ring-save) ;; Copy
(keymap-set icejam-keys-mode-map "H-s" #'save-buffer) ;; Save
(keymap-set icejam-keys-mode-map "H-z" #'undo) ;; Undo
(keymap-set icejam-keys-mode-map "H-Z" #'undo-redo) ;; Redo
(keymap-set icejam-keys-mode-map "H-q" #'kill-emacs) ;; Close emacs
(keymap-set icejam-keys-mode-map "H-w" #'icejam-function-delete-window) ;; Close window
;; And then some extras
(keymap-set icejam-keys-mode-map "H-l" #'goto-line) ;; Goto Line
;; Disable meta on right alt (useful for Polish characters)
;; (setq mac-right-option-modifier nil)
;; Allow for fullscreen frames without gaps
(setq frame-resize-pixelwise t)))
(defun icejam-switch-right-left-alt ()
"Set keyboard to das keyboard."
(interactive)
(if (eq mac-right-option-modifier nil)
(progn
(setq mac-right-option-modifier 'meta)
(setq mac-option-modifier nil))
(progn
(setq mac-option-modifier 'meta)
(setq mac-right-option-modifier nil))))
;; Linux-specific config
(if IS-GNU
(progn
;; Save and undo
(keymap-set icejam-keys-mode-map "s-s" #'save-buffer)
(keymap-set icejam-keys-mode-map "s-z" #'undo)
(keymap-set icejam-keys-mode-map "s-Z" #'undo-redo)
(keymap-set icejam-keys-mode-map "s-a" #'mark-whole-buffer)
;; Copy and paste bindings
(keymap-set icejam-keys-mode-map "s-x" #'kill-region)
(keymap-set icejam-keys-mode-map "s-v" #'yank)
(keymap-set icejam-keys-mode-map "s-c" #'kill-ring-save)
;; Linux Ergo bindings (fix)
(keymap-set icejam-keys-mode-map "C-<right>" #'end-of-line)
(keymap-set icejam-keys-mode-map "C-<left>" #'beginning-of-line)
(keymap-set icejam-keys-mode-map "C-<up>" #'scroll-down) ; WTF is this reverse, I dunno
(keymap-set icejam-keys-mode-map "C-<down>" #'scroll-up)))
(provide 'icejam-sys-specific)
;;; icejam-sys-specific.el ends here

View file

@ -1,37 +0,0 @@
;;; icejam-themes.el -- Theme configuration -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(use-package spaceline :ensure t
:hook ((elpaca-after-init . spaceline-emacs-theme))
:config
;; Recompile spaceline after each theme has been reloaded to ensure
;; that there are no artifacts instead of arrows on the screen.
(setopt enable-theme-functions 'spaceline-compile))
(use-package base16-theme :ensure t)
(use-package modus-themes :ensure t)
;; Disable cursor blinking
(blink-cursor-mode 0)
;; Scroll with the trackpad smoothly
(pixel-scroll-precision-mode 1)
;; My own theme modifications:
(with-eval-after-load 'base16-theme
(setopt base16-theme-256-color-source 'colors)
(load-theme 'base16-equilibrium-light t t)
(load-theme 'base16-gruvbox-dark-pale t t)
(load-theme 'base16-onedark t t)
(load-theme 'modus-operandi-tinted t t)
(require 'icejam-base16-zenburn)
(require 'icejam-base16-harmonic-light)
(require 'icejam-base16-catppuccin-frappe)
(if (memq window-system '(x mac ns))
(enable-theme 'icejam-base16-zenburn)
(enable-theme 'icejam-base16-zenburn)))
(provide 'icejam-themes)
;;; icejam-themes.el ends here

View file

@ -1,174 +0,0 @@
;;; icejam-transient -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Global Transient definitions.
;;; Code:
(eval-when-compile
(defvar icejam-keys-mode-map)
(defvar icejam-project-menu)
(defvar icejam-code-menu)
(defvar icejam-buffer-menu)
(defvar icejam-elpaca-menu)
(defvar icejam-language-menu)
(defvar icejam-command-palette)
(declare-function transient-define-prefix 'transient)
(declare-function icejam-project-menu 'icejam-transient)
(declare-function icejam-code-menu 'icejam-transient)
(declare-function icejam-buffer-menu 'icejam-transient)
(declare-function icejam-command-palette 'icejam-transient))
(use-package transient :ensure (:wait t))
(defun icejam-mark-and-indent-whole-buffer ()
"Mark and indent whole buffer."
(interactive)
(indent-region (point-min) (point-max)))
(transient-define-prefix icejam-project-menu ()
"Project Commands."
[["Project"
("s" "Switch project" project-switch-project)
("f" "Find file in project" project-find-file)
("g" "Grep in project" consult-ripgrep)
("t" "Find file anywhere" find-file)]
["Magit"
("m" "Git status" magit-status)
("C" "Git checkout" magit-checkout)
("M" "Git blame" magit-blame)]
["Completions"
("a" "Find line by contents" consult-line)
("b" "Find buffer by name" consult-buffer)]]
[["LISP"
("i" "IELM" ielm)
("B" "iBuffer" ibuffer)
("e" "eval-region" eval-region)]
["Other"
("d" "deft" deft)
("T" "Speed Type" speed-type-text)]]
[[""
("q" "Quit" keyboard-quit)]])
(transient-define-prefix icejam-code-menu ()
"Code Commands."
[["Manipulate"
("c" "Toggle Comment" comment-line)
("r" "Replace" vr/replace)
("i" "Indent" indent-region)]]
[["Find"
("s" "Swiper" consult-line)
("u" "Vundo" vundo)
("d" "Dash" dash-at-point)]])
(transient-define-prefix icejam-buffer-menu ()
"Buffers and windows."
[""
["Move Cursor"
:pad-keys t
("<left>" "Left buffer" windmove-left)
("<right>" "Right buffer" windmove-right)
("<up>" "Top buffer" windmove-up)
("<down>" "Bottom buffer" windmove-down)]
["Move this buffer"
:pad-keys t
("v[" "To left" buf-move-left)
("v]" "To right" buf-move-right)
("h[" "Up" buf-move-up)
("h]" "Down" buf-move-down)]]
[["Jump to"
("w" "Word" avy-goto-word-1)
("l" "Line" avy-goto-line)
("c" "Character" avy-goto-char-2)]
["Split"
("sr" "To right" split-window-right)
("sb" "To bottom" split-window-below)
("\\" "To right" split-window-right)
("/" "To bottom" split-window-below)]]
[["Buffers"
:pad-keys t
("s[" "Go to previous buffer" previous-buffer)
("s]" "Go to next buffer" next-buffer)
("bi" "iBuffer" ibuffer)
("bf" "Find buffer" consult-buffer)
("k" "Kill buffer and window" kill-buffer-and-window)]]
[["Fonts"
:pad-keys t
("fs" "Adjust font size globally" global-text-scale-adjust)
("fi" "Increase by one in this buffer"
(lambda () (interactive) (text-scale-increase 1)))
("fd" "Decrease by one in this buffer"
(lambda () (interactive) (text-scale-decrease 1)))
("fr" "Reset this buffer"
(lambda () (interactive) (text-scale-adjust 0)))]]
[[""
("q" "Quit" keyboard-quit)]])
(transient-define-prefix icejam-language-menu ()
"Language (Buffer) Commands."
[[:description
(lambda ()
(concat (propertize "Code actions for " 'face 'transient-heading)
(propertize (format "%s" major-mode) 'face 'transient-key)
(propertize ":\n" 'face 'transient-heading)))
("r" "Reload buffer" icejam-revert-buffer-no-confirm)
("e" "Show errors" flymake-show-buffer-diagnostics)
("f" "Format buffer with apheleia formatter" apheleia-format-buffer)
;; This only appears for emacs-lisp-mode
("d" "Explain thing at point" helpful-at-point :if-mode emacs-lisp-mode)
("m" "iMenu" consult-imenu)
;; Finally, quit.
("q" "Quit" keyboard-quit)]])
(transient-define-prefix icejam-elpaca-menu ()
"Commands related to packages."
[["Packages and compilation"
("m" "Open Elpaca manager" elpaca-manager)
("f" "Fetch all package updates" elpaca-fetch-all)
("s" "Symlink treesitter grammar objects" icejam-tree-sitter-symlink-grammar-objects)
("p" "Prune native compilation cache" native-compile-prune-cache)
("w" "Write elpaca lockfile" icejam-elpaca-write-lock)]]
[[""
("q" "Quit" keyboard-quit)]])
(defcustom icejam-language-transient-alist
'()
"List of functions to call for language transient."
:group 'icejam
:type '(repeat (cons (symbol :tag "Major mode name")
(symbol :tag "Function to call"))))
;; Use different thing for different language
(defun icejam-language-transient-for-mode (&optional maybe-mode)
"Get transient for major mode.
You can pass MAYBE-MODE to find mode explicitly."
(let* ((mode (if maybe-mode maybe-mode major-mode)))
(alist-get mode icejam-language-transient-alist 'icejam-language-menu)))
(defun icejam-transient-for-lang ()
"Call transient for current major mode."
(interactive)
(funcall (icejam-language-transient-for-mode)))
(transient-define-prefix icejam-command-palette ()
"All transient menus in one place."
["Command palette\n"
["The thing you are editing"
("p" "Project" icejam-project-menu)
("c" "Code" icejam-code-menu)
("l" "Language" icejam-transient-for-lang)
("r" "Revert Buffer" icejam-revert-buffer-no-confirm)]
["The editor itself"
("b" "iBuffer" ibuffer)
("P" "Packages" icejam-elpaca-menu)
("w" "Window" icejam-buffer-menu)]])
(keymap-set icejam-keys-mode-map "C-c p" #'icejam-project-menu)
(keymap-set icejam-keys-mode-map "C-c c" #'icejam-code-menu)
(keymap-set icejam-keys-mode-map "C-c w" #'icejam-buffer-menu)
(keymap-set icejam-keys-mode-map "C-c l" #'icejam-transient-for-lang)
(keymap-set icejam-keys-mode-map "H-p" #'icejam-command-palette)
(provide 'icejam-transient)
;;; icejam-transient.el ends here

View file

@ -1,36 +0,0 @@
;;; icejam-treesitter.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Load treesitter grammars automatically, based on the grammars provided by the
;; community.
;;; Code:
(use-package tree-sitter-langs :ensure t :defer t
:commands tree-sitter-langs--bin-dir
:hook
(elpaca-after-init . (lambda () (add-to-list
'treesit-extra-load-path
(tree-sitter-langs--bin-dir)))))
(defun icejam-tree-sitter-symlink-grammar-objects ()
"Create symlinks for treesitter grammars.
Tree-sitter-langs-build releases grammars as LANG.so. Treesit needs
libtree-sitter-LANG.so"
(interactive)
(dolist (file (directory-files (tree-sitter-langs--bin-dir) 'full
(concat "\\" (car tree-sitter-load-suffixes) "$")))
;; make symlink (or copy) libtree-sitter-c.so -> c.so
(let ((target (concat (file-name-as-directory (file-name-directory file))
"libtree-sitter-"
(file-name-nondirectory file))))
(if (memq system-type '(ms-dos windows-nt cygwin))
(copy-file file target)
(make-symbolic-link file target)))))
(provide 'icejam-tree-sitter)
;;; icejam-tree-sitter.el ends here

View file

@ -1,27 +0,0 @@
;;; languages/elisp -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-elisp-capfs 'icejam-complete-at-point)
(declare-function icejam-set-indent 'icejam-prog-mode))
(add-to-list 'auto-mode-alist '("/Eask\\'" . emacs-lisp-mode))
(use-package lispy :ensure t :defer t :commands (lispy-mode))
;; (use-package geiser-guile :ensure t :defer t)
(defun icejam-activate-emacs-lisp-mode ()
"Goodies for editing Emacs files."
(icejam-set-indent 2) ;; Default indentation of 2 characters
(column-enforce-n 80) ;; Use 80 char limit.
(lispy-mode t) ;; Modal editing for Lisp
(icejam-set-elisp-capfs))
(add-hook 'emacs-lisp-mode-hook 'icejam-activate-emacs-lisp-mode)
(add-hook 'ielm-mode-hook 'icejam-set-elisp-capfs)
(provide 'icejam-lang-elisp)
;;; icejam-lang-elisp.el ends here

View file

@ -1,68 +0,0 @@
;;; languages/elixir -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(eval-when-compile
(declare-function -> 'dash)
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-start-eglot 'icejam-eglot)
(declare-function transient-define-prefix 'transient)
(declare-function yas--remove-template-by-uuid 'yasnippet)
(declare-function yas--table-get-create 'yasnippet)
(defvar apheleia-mode-alist)
(defvar icejam-elixir-lang-menu)
(defvar icejam-language-transient-alist))
(use-package elixir-ts-mode :ensure t :defer t :after (apheleia)
:config
(add-to-list 'apheleia-mode-alist '(heex-ts-mode . mix-format)))
(transient-define-prefix icejam-elixir-lang-menu ()
[[:description
(lambda ()
(concat (propertize "Code actions for " 'face 'transient-heading)
(propertize (format "%s" major-mode) 'face 'transient-key)
(propertize ":\n" 'face 'transient-heading)))
("m" "iMenu" consult-imenu)
("r" "Reload buffer" icejam-revert-buffer-no-confirm)
("e" "Show errors" flymake-show-buffer-diagnostics)
("f" "Format buffer with Elixir formatter" apheleia-format-buffer)
("q" "Quit" keyboard-quit)]])
(defun icejam-delete-elixir-snippets ()
"This function deletes Elixir snippets I don't use."
(-> 'elixir-mode
(yas--table-get-create)
(yas--remove-template-by-uuid "defmodule XXX end")))
(add-to-list
'icejam-language-transient-alist '(elixir-ts-mode . icejam-elixir-lang-menu))
(defun icejam-activate-elixir-ts-mode ()
"All things Elixir."
(icejam-set-indent 2)
(column-enforce-n 98)
(icejam-set-eglot-capfs)
(icejam-start-eglot)
(icejam-delete-elixir-snippets))
(add-hook 'heex-ts-mode-hook 'icejam-activate-elixir-ts-mode)
(add-hook 'elixir-ts-mode-hook 'icejam-activate-elixir-ts-mode)
;; (use-package ert :ensure nil :defer t)
;; (ert-deftest icejam-activate-elixir-ts-mode ()
;; "Test `elixir-ts-mode` activation."
;; (with-temp-buffer
;; (elixir-ts-mode)
;; (icejam-activate-elixir-ts-mode)
;; (should (eq major-mode 'elixir-ts-mode))
;; (should (bound-and-true-p column-enforce-mode))
;; (should (equal " 98col" (buffer-local-value 'column-enforce-mode-line-string
;; (current-buffer))))
;; (should (eq 2 (buffer-local-value 'tab-width (current-buffer))))))
(provide 'icejam-lang-elixir)
;;; icejam-lang-elixir.el ends here

View file

@ -1,25 +0,0 @@
;;; languages/erlang -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(declare-function column-enforce-n 'column-enforce-mode)
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(use-package erlang :defer t :ensure (:depth 1))
(defun icejam-activate-erlang-mode ()
"Start Erlang related editing process."
(icejam-set-indent 4)
(column-enforce-n 80)
;; Start LSP
(eglot-ensure)
;; Capf override
(icejam-set-eglot-capfs))
(add-hook 'erlang-mode-hook 'icejam-activate-erlang-mode)
(provide 'icejam-lang-erlang)
;;; icejam-lang-erlang.el ends here

View file

@ -1,31 +0,0 @@
;;; gleam.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Gleam language support
;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package gleam-ts-mode :defer t :ensure t :mode (rx ".gleam" eos))
;; (add-to-list 'auto-mode-alist '("\\.gleam\\'" . gleam-ts-mode))
(defun icejam-lang-activate-gleam-mode ()
"All things Gleam."
(icejam-set-indent 2)
(column-enforce-n 100)
(icejam-start-eglot)
(icejam-set-eglot-capfs))
(add-hook 'gleam-ts-mode-hook 'icejam-lang-activate-gleam-mode)
(provide 'icejam-lang-gleam)
;;; icejam-lang-gleam.el ends here

View file

@ -1,49 +0,0 @@
;;; java -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(declare-function transient-define-prefix 'transient)
(defvar icejam-java-lang-menu)
(defvar icejam-language-transient-alist))
(add-to-list 'auto-mode-alist '("\\.java\\'" . java-ts-mode))
;; (use-package eglot-java :ensure t)
(transient-define-prefix icejam-java-lang-menu ()
[[:description
(lambda ()
(concat (propertize "Code actions for " 'face 'transient-heading)
(propertize (format "%s" major-mode) 'face 'transient-key)
(propertize ":\n" 'face 'transient-heading)))
("m" "iMenu" consult-imenu)
("r" "Reload buffer" icejam-revert-buffer-no-confirm)
("e" "Show errors" flymake-show-buffer-diagnostics)
("f" "Format" eglot-format-buffer)
("q" "Quit" keyboard-quit)]])
(dolist (mode '(java-ts-mode))
(add-to-list 'icejam-language-transient-alist
`(,mode . icejam-java-lang-menu)))
(defun icejam-activate-java-mode ()
"Java mode overrides."
;; Set indentation to two spaces
(icejam-set-indent 2)
(setq-local java-ts-mode-indent-offset tab-width)
(eglot-ensure)
(column-enforce-n 80)
(icejam-set-eglot-capfs))
;; (add-hook 'java-ts-mode-hook 'eglot-java-mode)
(add-hook 'java-ts-mode-hook 'icejam-activate-java-mode)
(provide 'icejam-lang-java)
;;; icejam-lang-java.el ends here

View file

@ -1,34 +0,0 @@
;;; kotlin.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; kotlin does a thing.
;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point))
(use-package kotlin-ts-mode :ensure t :defer t)
(add-to-list 'auto-mode-alist '("\\.kt\\'" . kotlin-ts-mode))
(add-to-list 'auto-mode-alist '("\\.kts\\'" . kotlin-ts-mode))
(use-package gradle-mode :defer t :ensure t)
(defun icejam-activate-kotlin-mode ()
"All things Kotlin."
(icejam-set-indent 2)
(column-enforce-n 100)
(eglot-ensure)
(icejam-set-eglot-capfs))
(add-hook 'kotlin-ts-mode-hook 'icejam-activate-kotlin-mode)
(provide 'icejam-lang-kotlin)
;;; icejam-lang-kotlin.el ends here

View file

@ -1,30 +0,0 @@
;;; icejam-lang-lua.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Lua mode
;;; Code:
(eval-when-compile
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(defvar icejam-language-transient-alist))
(use-package lua-mode :ensure t :defer t)
(defun icejam-activate-lua-mode ()
"All things related to Lua."
(icejam-set-indent 4)
(column-enforce-n 100)
(eglot-ensure)
(icejam-set-eglot-capfs))
(add-hook 'lua-mode-hook 'icejam-activate-lua-mode)
(provide 'icejam-lang-lua)
;;; icejam-lang-lua.el ends here

View file

@ -1,38 +0,0 @@
;;; markdown -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(eval-when-compile
(declare-function elpaca-installed-p "elpaca")
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-no-eglot-capfs 'icejam-prog-mode)
(declare-function rxt--re-builder-switch-pcre-mode "pcre2el"))
(use-package markdown-mode :ensure t :defer t
:commands (markdown-preview)
:config
;; Render preview and open it in browser.
(keymap-set markdown-mode-map "C-c C-v" #'markdown-preview)
;; Render HTML preview with pandoc
(setq-default markdown-command '("pandoc"
"-f"
"markdown_mmd"
"-t"
"html5"
"--template"
"github.html5"
"--highlight-style"
"pygments")))
(defun icejam-lang-activate-markdown-mode ()
"Reconfigure markdown mode for your own purposes."
(icejam-set-indent 2))
(add-hook 'markdown-mode-hook 'icejam-lang-activate-markdown-mode)
(add-hook 'markdown-mode-hook 'display-line-numbers-mode)
(provide 'icejam-lang-markdown)
;;; icejam-lang-markdown.el ends here

View file

@ -1,49 +0,0 @@
;;; icejam-lang-php.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; php related settings
;;; Code:
(eval-when-compile
(defvar icejam-language-transient-alist)
(defvar icejam-php-lang-menu)
(declare-function column-enforce-n 'column-enforce-mode (number))
(declare-function icejam-set-indent 'icejam-prog-mode)
(declare-function icejam-set-eglot-capfs 'icejam-complete-at-point)
(declare-function transient-define-prefix 'transient))
(use-package php-mode :ensure t :defer t)
(transient-define-prefix icejam-php-lang-menu ()
"PHP Buffer Commands."
[""
["LSP"
("m" "iMenu" consult-imenu)]
["Buffer"
("r" "Reload" icejam-revert-buffer-no-confirm)
("f" "Format" eglot-format-buffer)
("i" "Indent" icejam-mark-and-indent-whole-buffer)
("e" "Show Errors" flymake-show-buffer-diagnostics)]]
[""
("q" "Quit" keyboard-quit)])
(add-to-list
'icejam-language-transient-alist '(php-mode . icejam-php-lang-menu))
(defun icejam-activate-php-mode ()
"All things php."
(icejam-set-indent 4)
(column-enforce-n 80)
;; Capf override
(icejam-set-eglot-capfs))
(add-hook 'php-mode-hook 'icejam-activate-php-mode)
(provide 'icejam-lang-php)
;;; icejam-lang-php.el ends here

View file

@ -1,12 +0,0 @@
;;; sh -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(use-package fish-mode :ensure t :defer t)
(dolist
(ending '("\\.zsh\\'" "\\.zshrc\\'" "\\.envrc\\'" "\\.zshrc\\'"))
(add-to-list 'auto-mode-alist (cons ending 'sh-mode)))
(provide 'icejam-lang-sh)
;;; icejam-lang-sh.el ends here

View file

@ -1,47 +0,0 @@
;; icejam-base16-catppuccin-frappe.el -- A base16 colorscheme -*- lexical-binding: t; -*-
;;; Commentary:
;; Base16: (https://github.com/tinted-theming/home)
;;; Authors:
;; Scheme: https://github.com/catppuccin/catppuccin
;; Template: Kaleb Elwert <belak@coded.io>
;;; Code:
(declare-function base16-theme-define "base16-theme" (theme-name theme-colors))
(defvar icejam-base16-catppuccin-frappe-theme-colors
'(:base00 "#303446"
:base01 "#292c3c"
:base02 "#414559"
:base03 "#5f667f"
:base04 "#626880"
:base05 "#c6d0f5"
:base06 "#f2d5cf"
:base07 "#babbf1"
:base08 "#e78284"
:base09 "#ef9f76"
:base0A "#e5c890"
:base0B "#a6d189"
:base0C "#81c8be"
:base0D "#8caaee"
:base0E "#ca9ee6"
:base0F "#eebebe")
"All colors for Base16 Catppuccin Frappe are defined here.")
;; Define the theme
(deftheme icejam-base16-catppuccin-frappe)
(with-eval-after-load 'base16-theme
(base16-theme-define 'icejam-base16-catppuccin-frappe
icejam-base16-catppuccin-frappe-theme-colors))
;; Add all the faces to the theme
(base16-theme-define 'icejam-base16-catppuccin-frappe
icejam-base16-catppuccin-frappe-theme-colors)
;; Mark the theme as provided
(provide-theme 'icejam-base16-catppuccin-frappe)
(provide 'icejam-base16-catppuccin-frappe)
;;; icejam-base16-catppuccin-frappe.el ends here

View file

@ -1,49 +0,0 @@
;; icejam-base16-catppuccin-latte.el -- A base16 colorscheme
;;; Commentary:
;; Base16: (https://github.com/tinted-theming/home)
;;; Authors:
;; Scheme: https://github.com/catppuccin/catppuccin
;; Template: Kaleb Elwert <belak@coded.io>
;;; Code:
;; Modifications:
;; 03 darker by 8% #bcc0cc => #aaafbe
(eval-when-compile
(declare-function base16-theme-define "base16-theme" (theme-name theme-colors)))
(defvar icejam-base16-catppuccin-latte-theme-colors
'(:base00 "#eff1f5"
:base01 "#e6e9ef"
:base02 "#ccd0da"
:base03 "#aaafbe"
:base04 "#acb0be"
:base05 "#4c4f69"
:base06 "#dc8a78"
:base07 "#7287fd"
:base08 "#d20f39"
:base09 "#fe640b"
:base0A "#df8e1d"
:base0B "#40a02b"
:base0C "#179299"
:base0D "#1e66f5"
:base0E "#8839ef"
:base0F "#dd7878")
"All colors for Base16 Catppuccin Latte are defined here.")
;; Define the theme
(deftheme icejam-base16-catppuccin-latte)
;; Add all the faces to the theme
(with-eval-after-load 'base16-theme
(base16-theme-define 'icejam-base16-catppuccin-latte
icejam-base16-catppuccin-latte-theme-colors))
;; Mark the theme as provided
(provide-theme 'icejam-base16-catppuccin-latte)
(provide 'icejam-base16-catppuccin-latte)
;;; icejam-base16-catppuccin-latte.el ends here

View file

@ -1,41 +0,0 @@
;;; base16-modus-operandi-tinded.el --- summary
;;; Commentary:
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Code:
(use-package icejam-themes :ensure nil)
(defvar base16-modus-operandi-tinted-colors
'(:base00 "#fbf7f0"
:base01 "#efe9dd"
:base02 "#c9b9b0"
:base03 "#595959"
:base04 "#595959"
:base05 "#000000"
:base06 "#193668"
:base07 "#193668"
:base08 "#a60000"
:base09 "#006300"
:base0A "#006300"
:base0B "#0031a9"
:base0C "#721045"
:base0D "#00598b"
:base0E "#731c52"
:base0F "#80601f")
"All colors for Base16 Modus Operandi are defined here.")
;; Define the theme
(deftheme base16-modus-operandi-tinted)
;; Add all the faces to the theme
(declare-function base16-theme-define 'base16-theme)
(base16-theme-define 'base16-modus-operandi-tinted base16-modus-operandi-tinted-colors)
;; Mark the theme as provided
(provide-theme 'base16-modus-operandi-tinted)
(provide 'icejam-base16-modus-operandi-tinted)
;;; icejam-base16-modus-operandi-tinted.el ends here