├── .dir-locals.el ├── .doomrc └── README.md /.dir-locals.el: -------------------------------------------------------------------------------- 1 | ((nil (git-commit-major-mode . git-commit-elisp-text-mode) 2 | (fill-column . 80)) 3 | (org-mode (mode . doom-docs-org))) 4 | -------------------------------------------------------------------------------- /.doomrc: -------------------------------------------------------------------------------- 1 | ;;; .doomrc --- doom runtime config -*- mode: emacs-lisp; lexical-binding: t; -*- 2 | ;;; Commentary: 3 | ;;; Code: 4 | (require 'doom) ; be silent, byte-compiler 5 | 6 | (after! doom-cli-ci 7 | ;;; Commit linter types 8 | (add-to-list 'doom-ci-commit-types 'module) 9 | (add-to-list 'doom-ci-commit-scopeless-types 'module) 10 | ;;; Commit linter scopes 11 | (add-to-list 'doom-ci-commit-scopes #'ci-check-module-scope)) 12 | 13 | (after! doom-cli-make 14 | ;;; Codeowners 15 | (dolist (path (doom-module-load-path (dir!))) 16 | ;; I will be the default owner for everything in the repo unless a later 17 | ;; match takes precedence. 18 | (add-to-list 'doom-make-codeowners "# The default owner(s) unless another takes precedence") 19 | (add-to-list 'doom-make-codeowners '("*" . "@doomemacs/maintainers")) 20 | ;; Module maintainers (see https://git.doomemacs.org/teams) 21 | (save-match-data 22 | (add-to-list 'doom-make-codeowners "# Module maintainers") 23 | (when (string-match "/modules/\\([^/]+\\)/\\([^/]+\\)/$" path) 24 | (push (cons (substring (match-string 0 path) 1) 25 | (format "@doomemacs/%s-%s" 26 | (match-string 1 path) 27 | (match-string 2 path))) 28 | doom-make-codeowners))))) 29 | 30 | 31 | ;;; Helpers 32 | (defun ci-check-module-scope (scope _plist) 33 | "Only allow :CATEGORY or MODULE scopes if they actually exist." 34 | (doom-glob (dir!) "modules" (if (string-prefix-p ":" scope) 35 | (format "%s" (substring scope 1)) 36 | (format "*/%s" scope)))) 37 | 38 | (provide 'cli) 39 | ;;; cli.el ends here 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > :warning: **Be aware that this repository is a work-in-progress.** Until Doom 2 | > Emacs v3.0 is released, some links may be broken and documentation may reflect 3 | > unreleased features and behavior. 4 | 5 |
6 | 7 | # Doom Emacs Community Modules 8 | 9 | ![Latest release](https://img.shields.io/github/tag/doomemacs/contrib-modules.svg?style=flat-square&label=release&color=58839b) ![Latest commit](https://img.shields.io/github/last-commit/doomemacs/contrib-modules/master?style=flat-square) ![Build status: master](https://img.shields.io/github/workflow/status/doomemacs/contrib-modules/CI/master?style=flat-square) 10 | 11 | [Install](#install) • [Update](#update) • [Documentation] • [Changelog] • [Community] 12 | 13 |
14 | 15 | # Introduction 16 | 17 | This is a library of [Doom Emacs](https://doomemacs.org) modules submitted and 18 | maintained by its community. Unlike [Doom's official module 19 | library](https://git.doomemacs.org/modules), the criteria for these modules is 20 | more relaxed and subject to fewer quality checks by Doom's author, but in 21 | exchange cover a larger spectrum of features and use-cases. 22 | 23 | Each module has their own documentation, accessible in Doom via `M-x 24 | doom/help-modules` or online at https://docs.doomemacs.org/-/contrib-modules: 25 | 26 | # Install 27 | 28 | ## Before Doom v3.0 29 | 30 | 1. Clone this repository locally: 31 | ```sh 32 | $ mkdir -p ~/.doom.d/repos/contrib-modules 33 | $ git clone https://github.com/doomemacs/contrib-modules ~/.doom.d/repos/contrib-modules 34 | ``` 35 | 36 | 2. Add the path to its `modules/` directory to `doom-modules-load-path` in `$DOOMDIR/init.el`: 37 | ```emacs-lisp 38 | ;;; in $DOOMDIR/init.el 39 | (add-to-list 'doom-modules-load-path (expand-file-name "repos/contrib-modules/" doom-user-dir)) 40 | ``` 41 | 42 | 3. Activate modules contained in this library like normal. For example, to 43 | enable this library's `:editor meow` module: 44 | ```emacs-lisp 45 | (doom! ... 46 | 47 | :editor 48 | meow 49 | 50 | ...) 51 | ``` 52 | 53 | 4. Run `$ doom sync` to ensure your changes take effect. 54 | 55 | ## After Doom v3.0 56 | 57 | 1. Register it as a module library from within your `doom!` block, like so: 58 | ```emacs-lisp 59 | ;;; in $DOOMDIR/init.el 60 | (doom! (modules :repo "doomemacs/contrib-modules") 61 | ...) 62 | ``` 63 | 64 | 2. Activate modules contained in this library like normal. For example, to 65 | enable this library's `:editor meow` module: 66 | ```emacs-lisp 67 | (doom! (modules :repo "doomemacs/contrib-modules") 68 | 69 | :editor 70 | meow 71 | 72 | ...) 73 | ``` 74 | 75 | If two libraries have the same module, the order of your `modules` 76 | declaration dictates precedence (from highest to lowest). The first matching 77 | module will be used. 78 | 79 | 3. Run `$ doom sync` to ensure your changes take effect. 80 | 81 | 82 | # Update 83 | 84 | - Run `$ doom upgrade` to update Doom and your module libraries. 85 | - Run `$ doom upgrade --modules` to only update your module libraries. 86 | - Run `$ doom upgrade --modules doomemacs/contrib-modules` to update only one. 87 | 88 | Module libraries can be pinned with `:pin "REF"`, where REF is a commit or a 89 | version string (e.g. a partial version string: `v22.11` or full one: 90 | `v22.11.02`). 91 | 92 | 93 | # `TODO `Contribute 94 | 95 | 96 | [Changelog]: https://docs.doomemacs.org/contrib-modules/changelog 97 | [Community]: https://docs.doomemacs.org/-/community 98 | [discord]: https://doomemacs.org/discord 99 | [discourse]: https://discourse.doomemacs.org 100 | [documentation]: https://docs.doomemacs.org/contrib-modules 101 | --------------------------------------------------------------------------------