### Doom Emacs Installation Steps Source: https://docs.doomemacs.org/latest/index A step-by-step guide to installing Doom Emacs, including prerequisites and initial configuration. ```shell 1. Install Emacs. 2. Install Git and Ripgrep. 3. Clone doom-emacs to $HOME/.emacs.d. 4. Modify $DOOMDIR/init.el and customize what modules you want enabled. 5. Run $ doom install ``` -------------------------------- ### Gentoo: Install Required and Optional Dependencies Source: https://docs.doomemacs.org/latest/index Installs essential and optional packages required for Doom Emacs on Gentoo. This includes version-specific installations for Git and ripgrep, and standard installations for findutils and fd. ```bash # required emerge '>=dev-vcs/git-2.23' '>=sys-apps/ripgrep-11.0' sys-apps/findutils # optional emerge '>=sys-apps/fd-7.3.0' ``` -------------------------------- ### Doom Emacs Git Commit Footer Examples Source: https://docs.doomemacs.org/latest/index Provides concrete examples of how to format various references and meta-information within the footer of a Doom Emacs Git commit. ```git Close #55 Close user/repo#952 Fix #1 Fix #25 Fix https://git.forge.fake/repo#123 Fix user/repo#84 Ref #4 Ref #5 Ref 3bedae38dd9f Ref https://en.wikipedia.org/wiki/Git Ref https://git.forge.fake/repo#123 Ref user/repo#25 Ref user/repo@3bedae38dd9f Revert 3bedae38dd9f Co-authored-by: John Doe Signed-off-by: Jane Doe ``` -------------------------------- ### Example Usage: Syntax Check Reminder Source: https://docs.doomemacs.org/latest/index An example of a user interaction related to syntax checking, reminding about forgotten semicolons. ```shell Tasing you for every semicolon you forget ``` -------------------------------- ### Example Usage: Helm Search Engine Source: https://docs.doomemacs.org/latest/index A descriptive phrase highlighting the purpose of Helm integration. ```shell the *other* search engine for love and life ``` -------------------------------- ### Doom Emacs Tutorials: Discovery and Navigation Source: https://docs.doomemacs.org/latest/index Tutorials covering the discovery of keybindings using which-key, understanding modules, commands, and packages within Doom Emacs. Also includes guides on navigating the editor, including cursor motions, window manipulation, buffer switching, and bookmarks. ```emacs-lisp ;; Tutorial: Keybinds Discovery ;; Using which-key to explore keybindings. ;; Describing bindings for better understanding. ``` ```emacs-lisp ;; Tutorial: Navigating Doom Emacs ;; Mastering cursor motions. ;; Efficient window manipulation. ;; Opening and switching buffers. ;; Using bookmarks for quick access. ``` -------------------------------- ### Doom Emacs Migration Guide Source: https://docs.doomemacs.org/latest/index This section details the process of migrating to Doom Emacs from other popular editors like vanilla Emacs, Spacemacs, (Neo)Vim, and VSCode. It highlights comparisons and potential gotchas for each migration path. ```emacs-lisp ;; Migration from Vanilla Emacs ;; Comparison of features and configurations. ;; Potential gotchas and workarounds. ``` ```emacs-lisp ;; Migration from Spacemacs ;; Comparison of features and configurations. ;; Potential gotchas and workarounds. ``` ```emacs-lisp ;; Migration from (Neo)Vim ;; Comparison of features and configurations. ;; Potential gotchas and workarounds. ``` ```emacs-lisp ;; Migration from VSCode ;; Comparison of features and configurations. ;; Potential gotchas and workarounds. ``` -------------------------------- ### Doom Emacs Contribution Guide Source: https://docs.doomemacs.org/latest/index This section details how users can contribute to the Doom Emacs project. It covers guidelines for reporting issues, suggesting enhancements, and contributing code. ```emacs-lisp ;; Contributing to Doom Emacs ;; How can I help? ;; - Do not PR ;; - Do not bump ;; Reporting issues ;; - Before you create that report ;; - How to write a good bug report ;; Reporting outdated packages ;; Suggesting enhancements ``` -------------------------------- ### Example Usage: Code Completion Backend Source: https://docs.doomemacs.org/latest/index A descriptive phrase indicating the function of the company-mode module. ```shell The ultimate code completion backend ``` -------------------------------- ### Install Third-Party Theme in Doom Emacs Source: https://docs.doomemacs.org/latest/index Instructions for installing a third-party Emacs theme like solarized-theme. It involves adding the theme package to `packages.el` and configuring the desired theme in `config.el`. Remember to run `doom sync` after modifying `packages.el`. ```emacs-lisp ;;; add to $DOOMDIR/packages.el (package! solarized-theme) ;;; add to $DOOMDIR/config.el (setq doom-theme 'solarized-dark) ``` -------------------------------- ### Doom Emacs User Manual Sections Source: https://docs.doomemacs.org/latest/index This section outlines the structure and content of the Doom Emacs User Manual, providing a guide for setting up, maintaining, and troubleshooting Doom Emacs. It covers essential concepts for beginners and experienced users alike. ```APIDOC User Manual: Introduction: https://docs.doomemacs.org/v21/#/users/intro - Overview of the project, its goals, and the author. Quick start: https://docs.doomemacs.org/v21/#/users/quickstart - A concise crash course for beginners. Install: https://docs.doomemacs.org/v21/#/users/install - Instructions for installing Emacs, its dependencies, and Doom. Update: https://docs.doomemacs.org/v21/#/users/update - Guidance on updating Doom Emacs or rolling back to previous versions. Concepts: https://docs.doomemacs.org/v21/#/users/concepts - Glossary of essential concepts and terms used in Doom Emacs. Environment: https://docs.doomemacs.org/v21/#/users/environment - Setting up the user's environment for Doom Emacs to locate programs. Configure: https://docs.doomemacs.org/v21/#/users/configure - Instructions for configuring Doom Emacs, managing keybindings, and plugins. Troubleshoot: https://docs.doomemacs.org/v21/#/users/troubleshoot - Strategies for debugging problems and resolving issues within Doom Emacs. ``` -------------------------------- ### Nim Development Environment Setup Source: https://docs.doomemacs.org/latest/index This module enhances the Doom Emacs experience for Nim development. It integrates tools like nimsuggest for code completion and syntax checking, along with company and flycheck for improved developer workflow. It also includes support for Org babel integration via ob-nim. ```emacs-lisp ;; Enable Nim module with LSP support (add-hook! 'nim-mode-hook (lambda () (require 'nimsuggest) (require 'company) (require 'flycheck) (require 'ob-nim))) ``` -------------------------------- ### Gentoo: Install Emacs 28.0 native-comp Source: https://docs.doomemacs.org/latest/index Installs Emacs version 28.0.9999 with native compilation support on Gentoo using the Portage package manager. This command assumes the necessary USE flags and unmasking have been applied. ```bash emerge =app-editors/emacs-28.0.9999 ``` -------------------------------- ### Doom Emacs Inline Syntax Examples Source: https://docs.doomemacs.org/latest/index Illustrates the use of inline syntax for various elements in Doom Emacs documentation, including file paths, technical terms, shell commands, Emacs commands, module flags, and Elisp symbols. ```text * Inline verbatim blocks for: * File paths (e.g. ~/.emacs.d/init.el or [$DOOMDIR](https://docs.doomemacs.org/v21/#/users/concepts/doom-specific/doomdir "The path to your private config")/config.el) * Technical nouns (references to [external] packages, programs, libraries, concepts, versions, etc). e.g. * zls is the name of an external package. * “Please install git so you can use `git`” – The first git refers to the system package, the second refers to the executable. * Do not use this for proper product names. e.g. Windows 10 vs win10-x86. One is a product name (which should be linked to its homepage), the other is a technical reference to a particular build of Windows. * Meta annotations (like DEPRECATED): * Referring to org syntax literally. e.g. ~this would normally be a code block~ and this would be *bolded*. * Inline `code` blocks are used for special syntax or * ~rg~ or ~doom~ – refers to shell commands. * ~M-x some-command~ – is special syntax for issuing a command in Emacs * ~+flag~ – is the syntax for a Doom module flag. However, use `[[doom-module:][+flag]]` instead for references of actual Doom flags. * ~display-buffer-alist~ – is a reference to a elisp symbol. * [[doom-package:][js2-mode]] installs ~js2-mode~ – first js2-mode refers to an elisp package, the second is a major mode symbol. ``` -------------------------------- ### indent-guides Module Source: https://docs.doomemacs.org/latest/index Enables indent guides to visually align indentation columns in the editor. This module improves code structure readability by making indentation levels clear. ```emacs-lisp ;; indent-guides module ;; Adds visual guides for indentation columns ;; Improves code structure readability ``` -------------------------------- ### Doom Emacs CLI Commands Source: https://docs.doomemacs.org/latest/index Common commands for the Doom Emacs CLI to manage installations, packages, and environment. ```shell $ doom doctor Diagnose common issues in your environment and list missing external dependencies for your enabled modules. ``` ```shell $ doom sync Ensures that all missing packages are installed, orphaned packages are removed, and metadata properly generated. ``` ```shell $ doom install Install any missing packages. ``` ```shell $ doom update Update all packages that Doom’s (enabled) modules use. ``` ```shell $ doom env Regenerates your envvar file, which contains a snapshot of your shell environment for Doom Emacs to load on startup. You need to run this for changes to your shell environment to take effect. ``` ```shell $ doom purge -g Purge orphaned packages (i.e. ones that aren’t needed anymore) and regraft your repos. ``` ```shell $ doom upgrade Upgrade Doom to the latest version (then update your packages). This is equivalent to: $ git pull $ doom sync $ doom update ``` -------------------------------- ### Emacs Lisp Style Guide Exceptions Source: https://docs.doomemacs.org/latest/index This snippet outlines the specific exceptions to the general emacs-lisp style guide followed by Doom Emacs. It highlights preferred functions over others and specific formatting rules. ```emacs-lisp ;; Use `mapc` instead of `seq-do`. ;; No hanging parentheses. ;; Use DEPRECATED to indicate code that will eventually be removed. ;; Top-level `use-package!` and `after!` blocks should be separated with two blank lines. ``` -------------------------------- ### Doom Emacs Developer Conventions Source: https://docs.doomemacs.org/latest/index Details Doom Emacs' conventions for code, projects, documentation, and keybindings. Includes specific guides for Emacs Lisp style, Git branching and commit formatting, and keybinding standards. ```APIDOC Doom Emacs Developer Conventions: Conventions: - Project: Covers project structure and organization. - Documentation: Formatting and conventions for writing documentation. - Formatting: Standards for document structure and content. - Conventions: General rules for documentation. - Emacs lisp: Style guide for Emacs Lisp code and comments. - Code Style: Guidelines for writing idiomatic Emacs Lisp. - Comments: Standards for commenting code. - Git branches: How Doom organizes its Git repository and formats commits. - Repository Structure: Branching strategy and naming conventions. - Commit Formatting: Standards for commit messages. - Git commits: How Doom organizes its Git repository and formats commits. - Commit Messages: Guidelines for writing clear and informative commit messages. - Keybinds: Conventions for defining and using keybindings. - Definition: Standards for defining keymaps and key sequences. - Usage: Best practices for user-facing keybindings. Releases: - Versioning Scheme: Explains Doom's approach to version numbering. - Release Schedule: Information on when new versions are released. Forking: - Forking Process: How to create and maintain your own fork of Doom Emacs. - Branch Maintenance: Strategies for managing custom branches. Modules: - Module Breakdown: Description of Doom's modular architecture. - Module Development: Guides on how to create and integrate new modules. CLI: - Usage: How to utilize the Doom Emacs command-line interface. - Extension: Methods for extending the CLI for custom automation. CI/CD: - Infrastructure: Explanation of Doom's continuous integration and continuous deployment pipelines. ``` -------------------------------- ### Bind Multiple Leader Keys and Prefixes Source: https://docs.doomemacs.org/latest/index This example shows how to bind multiple leader keys and prefixes in Doom Emacs. It includes setting the primary leader key and then mapping additional key sequences to the `doom/leader` command for different modes and key combinations. ```emacs-lisp (setq doom-leader-key "SPC") (map! :map override "C-クリル" #'doom/leader ; ctrl + ; "M-SPC" #'doom/leader ; meta + space :n "," #'doom/leader ; , in normal mode :leader "l" #'doom/leader') ; SPC l ``` -------------------------------- ### Gentoo: Install Emacs 27 on Doom Emacs Source: https://docs.doomemacs.org/latest/index Installs the latest unmasked version of Emacs 27 compatible with Doom Emacs on Gentoo. This command ensures the correct version is installed via the Portage package manager. ```bash emerge '>=app-editors/emacs-27.0' ``` -------------------------------- ### Example Usage: Spell Check Correction Source: https://docs.doomemacs.org/latest/index An example of a user interaction with the spell checker, highlighting a misspelling. ```shell Tasing you for misspelling mispelling ``` -------------------------------- ### Bind Keys Under Leader Prefix Source: https://docs.doomemacs.org/latest/index This example shows how to bind new keys under the leader prefix using the `map!` macro with the `:leader` keyword. It illustrates binding a command, executing a message, and unbinding a key. ```emacs-lisp (map! :leader ;; x will invoke the dosomething command "x" #'dosomething ;; y will print "Hello world" in the minibuffer "y" (cmd! (message "Hello world")) ;; This unbinds what was previously bound to f "f" nil) ``` -------------------------------- ### Doom Emacs Developer Conventions: Documentation Formatting Source: https://docs.doomemacs.org/latest/index This guide outlines the formatting conventions for documentation within the Doom Emacs project. It covers the use of special tags, notices, and general syntax to ensure clarity and consistency across all documentation files. ```emacs-lisp ;; Special tags: ;; - `TODO`: Indicates a task that needs to be completed. ;; - `FIXME`: Indicates a known issue that needs to be fixed. ;; Notices: ;; - `NOTICE:`: For general information or important notes. ;; - `WARNING:`: For potential issues or risks. ;; - `IMPORTANT:`: For critical information. ;; Syntax: ;; - Use Markdown for formatting where applicable. ;; - Use code blocks for code examples. ;; - Ensure consistent indentation and spacing. ``` -------------------------------- ### Doom Emacs Tutorials: Editing and Text Manipulation Source: https://docs.doomemacs.org/latest/index Guides on various editing functionalities in Doom Emacs, including copy-pasting, text manipulation, resizing fonts, region selection, narrowing, replacing text (single and multiple files), commenting, file operations, keyboard macros, scratch buffer usage, reformatting, and expandable snippets. ```emacs-lisp ;; Tutorial: Editing Text ;; Copy, paste, and cut operations. ;; Advanced text manipulation techniques. ;; On-the-fly font resizing. ;; Efficient region selection. ;; Using narrowing to focus on specific parts of a buffer. ;; Replacing text in current and multiple files. ;; Commenting and uncommenting code. ;; Deleting, renaming, and moving files. ;; Creating and using keyboard macros. ;; Utilizing the scratch buffer for quick edits. ;; Reformatting code for consistency. ;; Leveraging expandable snippets for faster coding. ``` -------------------------------- ### Emacs Universal Argument Example Source: https://docs.doomemacs.org/latest/index Illustrates how the universal argument modifies command behavior in Emacs. The example shows how pressing `C-u` before a command can change its execution, such as deleting a whole buffer instead of a line. Doom Emacs users typically use `SPC u`. ```emacs-lisp ;; Standard Emacs behavior C-c d ; Deletes the current line C-u C-c d ; Deletes the whole buffer ;; Doom Emacs (evil-mode) behavior SPC u C-c d ; Deletes the whole buffer ``` -------------------------------- ### Breaking Change Commit Example Source: https://docs.doomemacs.org/latest/index Demonstrates how to format a commit message to indicate a breaking change, including the '!' suffix and the BREAKING CHANGE footer. ```git-commit refactor!: remove X functionality BREAKING CHANGE: Without X, A and B will not work. Enable Y to get similar behavior. ``` ```git-commit fix!(zig): remove lsp support BREAKING CHANGE: removing LSP support reduces how much Microsoft you must ingest to write Zig, but it means no more LSP. Only workaround is to meme on the internet, especially in obscure git convention guides that only a handful of people will ever read. ``` -------------------------------- ### Doom Emacs Shell Command Formatting Source: https://docs.doomemacs.org/latest/index Details the convention for prefixing complete shell commands with a '$' in Doom Emacs documentation, and provides examples of correct usage. ```shell * Complete shell commands should be prefixed with a `$` (and never with `sudo`, unless root access is absolutely necessary), e.g. * ~$ doom sync~ * ~$ git clone https://github.com/hlissner/doom-emacs ~/.emacs.d~ * ~rg~ – Not a complete command! Simply a reference to the executable. ``` -------------------------------- ### Emacs Lisp Association List (Alist) Example Source: https://docs.doomemacs.org/latest/index Demonstrates the structure and usage of an association list (alist) in Emacs Lisp, a common data structure for key-value pairs. Alists are lists of cons cells where the CAR is the key and the CDR is the value. ```emacs-lisp (setq alist-of-colors '((rose . red) (lily . white) (buttercup . yellow))) ``` -------------------------------- ### Doom Emacs Documentation Formatting Conventions Source: https://docs.doomemacs.org/latest/index Details the required formatting for Doom Emacs documentation files, including navigation bars, titles, subtitles, setup files, and heading structures. It also specifies the use of special heading tags for controlling content visibility during export or within the `doom-docs-mode`. ```org-mode #+TITLE: Sentence case title #+SUBTITLE: Sentence case subtitle with no trailing punctuation #+SETUPFILE: relative/link/to/docs/.setupfile #+STARTUP: unfold * Heading 1 ** Heading 2 *** Heading 3 **** Heading 4 ***** Heading 5 ****** Heading 6 #+begin_comment This content is hidden during export and in doom-docs-mode. #+end_comment * :ignore: Ignored Heading * :unfold: Unfolded Heading * :noorg: Hidden in doom-docs-mode * :noexport: Hidden during export ``` -------------------------------- ### Doom Emacs Leader/Local Leader Key Configuration Source: https://docs.doomemacs.org/latest/index Explains the configuration of leader and local leader keys in Doom Emacs, differentiating behavior based on Evil mode (Vim emulation) enablement. It covers keybindings for both Evil and non-Evil setups. ```emacs-lisp ;; If evil is enabled: ;; SPC and SPC m in any mode but insert mode, respectively. ;; M-SPC and M-SPC m in insert or emacs mode. ;; If evil is disabled: ;; C-c and C-c l instead. ``` -------------------------------- ### Doom Emacs Navigation Tutorials Source: https://docs.doomemacs.org/latest/index This section covers tutorials on navigating within Doom Emacs. It includes information on cursor movements, window management, buffer switching, and bookmarking. ```emacs-lisp ;; Navigation Tutorials: ;; - Cursor motions: Efficiently moving the cursor ;; - Window manipulation: Managing editor windows ;; - Opening files: Techniques for opening files ;; - Switching buffers: Navigating between open buffers ;; - Bookmarks: Setting and using bookmarks for quick access ``` -------------------------------- ### Doom Emacs Tutorials Overview Source: https://docs.doomemacs.org/latest/index This section provides a high-level overview of the available tutorials for Doom Emacs. It lists the main categories of tutorials, such as discovery, navigation, editing, and programming, along with brief descriptions of their content. ```emacs-lisp ;; Tutorials for Doom Emacs ;; - Discovery: How to discover features, packages, or commands ;; - Navigating: Navigation within the editor ;; - Editing: Text manipulation and editing features ;; - Searching: How to search for files and text ;; - Projects: Managing projects in Emacs ;; - Programming: Using Emacs as a programming IDE ;; - Org: Utilizing the Org mode for productivity ;; - Magit: Interacting with Git using Magit ;; - Emacs server: Communicating with Emacs from the command line ;; - External tools: Integrating external tools with Doom Emacs ;; - Workspaces: Managing different Emacs workspaces ``` -------------------------------- ### Doom Emacs Tutorials: Searching and Projects Source: https://docs.doomemacs.org/latest/index Tutorials focused on searching within Doom Emacs, including searching in the current buffer, across multiple files, and online. It also covers looking up documentation and using dictionaries/thesauri. Additionally, it touches upon project management within Doom Emacs. ```emacs-lisp ;; Tutorial: Searching ;; Searching within the current buffer. ;; Performing searches across multiple files. ;; Online search capabilities. ;; Looking up definitions in dictionaries and thesauri. ;; Accessing and searching documentation. ``` ```emacs-lisp ;; Tutorial: Projects ;; Managing projects within Doom Emacs. ``` -------------------------------- ### Doom Emacs Discovery Tutorials Source: https://docs.doomemacs.org/latest/index This section details tutorials focused on discovering features within Doom Emacs. It covers keybindings, module exploration, command lookup, and package management. ```emacs-lisp ;; Discovery Tutorials: ;; - Keybinds: Understanding and using keybindings (Which-key, Describe bindings) ;; - Modules: Exploring available modules ;; - Commands: Finding and executing commands ;; - Packages: Managing installed packages ``` -------------------------------- ### Comparison: Doom Emacs vs. Spacemacs Source: https://docs.doomemacs.org/latest/index Highlights key differences between Doom Emacs and Spacemacs, focusing on performance, abstraction, opinionation, development resources, beginner-friendliness, management, and package management. ```APIDOC Doom Emacs vs. Spacemacs Comparison: - **Performance:** - Doom Emacs: Lighter, faster startup, better optimized. - Spacemacs: More features, but potentially slower startup. - **Abstraction:** - Doom Emacs: Thinner abstractions, closer to vanilla Emacs, easier to hack. - Spacemacs: More abstractions, potentially more to understand. - **Opinionation:** - Doom Emacs: Highly opinionated, enforces specific workflows, single developer's tastes. - Spacemacs: Less opinionated, aims for a broader user base. - **Development & Community:** - Doom Emacs: Smaller team, bugs may persist longer, lighter documentation, dependent on maintainer's schedule. - Spacemacs: Larger community, more tutorials and guides, likely to work out-of-the-box. - **Beginner Friendliness:** - Doom Emacs: Less beginner-friendly, requires some elisp, shell, and git knowledge. - Spacemacs: More beginner-friendly, better out-of-the-box experience. - **Management:** - Doom Emacs: Managed via `bin/doom` CLI for package management, config, and elisp functionality. - Spacemacs: Uses standard Emacs package management. - **Package Management:** - Doom Emacs: Declarative, rolling release is opt-in, inspired by nix for reproducibility. - Spacemacs: Uses `package.el`, which is rolling release by default. ``` -------------------------------- ### Doom Emacs Loading Process Source: https://docs.doomemacs.org/latest/index Explains the process by which Doom Emacs loads modules, covering concepts, module notation, and load order. ```APIDOC Doom Emacs Loading Process: - Concepts: Fundamental ideas behind module loading. - Module notation: How modules are referenced and defined. - Load order: The sequence in which modules are loaded. ``` -------------------------------- ### Terraform: Infrastructure as Code Source: https://docs.doomemacs.org/latest/index Adds support for working with Terraform files, including syntax highlighting, code completion, and running Terraform commands directly from Emacs. ```emacs-lisp ;; Module for Terraform integration ;; Supports Terraform files with highlighting and completion ;; Usage: (terraform-init) ``` -------------------------------- ### Doom Emacs CLI Usage Source: https://docs.doomemacs.org/latest/index Demonstrates the usage of the `bin/doom` command-line interface for managing Doom Emacs configurations, package management, and other elisp functionalities. ```shell bin/doom \ # Example: Manage package management # Example: Manage your config # Example: Utilize elisp functionality externally (e.g., org tangling, batch processing) ``` -------------------------------- ### Module Commit Conventions Source: https://docs.doomemacs.org/latest/index These commits reflect changes to the module list, such as adding, removing, renaming, or deprecating modules. Scope goes after the colon. Examples show adding, moving, and removing modules. ```emacs-lisp module: add :lang zig ``` ```emacs-lisp module: move :feature evil to :editor evil ``` ```emacs-lisp module: move :feature vc to :emacs vc, :ui vc-gutter ``` ```emacs-lisp module: remove :ui fill-column With Emacs 26.x support dropped and `display-fill-column-indicator-mode' introduced in Emacs 27.1, this module is reduced to a single line, and so has become too trivial to warrant remaining a module. ``` ```emacs-lisp module: deprecate :tools rgb The module is too trivially small; it's simply one hydra, and :ui hydra is deprecated, so this module will be next to go. ``` -------------------------------- ### Web Development Support Source: https://docs.doomemacs.org/latest/index Adds support for various web languages and frameworks including HTML5, CSS, SASS/SCSS, Pug/Jade/Slim, HAML, ReactJS, Wordpress, Jekyll, Phaser, AngularJS, and Django. ```web The tubes This module adds support for various web languages, including HTML5, CSS, SASS/SCSS, Pug/Jade/Slim, and HAML, as well as various web frameworks, like ReactJS, Wordpress, Jekyll, Phaser, AngularJS, Djano, and more. ``` -------------------------------- ### Doom Emacs Tutorials: Programming Source: https://docs.doomemacs.org/latest/index This tutorial section covers programming-specific functionalities and workflows within Doom Emacs, enabling users to write and manage code effectively. ```emacs-lisp ;; Tutorial: Programming ;; Utilizing Doom Emacs for software development tasks. ``` -------------------------------- ### Doom Emacs Git Commit Footer Conventions Source: https://docs.doomemacs.org/latest/index Details the structure and content of the footer section in Doom Emacs Git commits. It specifies reference keywords, formats for issues, commits, and URLs, and includes examples of co-authored-by and signed-off-by lines. ```APIDOC Git Commit Footer: - Structure: References section followed by git meta lines, separated by a blank line. - Reference Lines: - Keyword: 'Ref', 'Fix', 'Close', 'Revert' (followed by a single space). - Reference Format: - Issue/PR: '#123', 'user/repo#123', 'https://git.forge.fake/repo#123' - Commit: '3bedae38dd9f', 'user/repo@3bedae38dd9f', 'https://git.forge.fake/repo@3bedae38dd9f' - URL: External resource URL. - Git Meta Lines: 'Co-authored-by:', 'Signed-off-by:'. - Grouping: Lines should be grouped by keyword. ``` -------------------------------- ### Doom Emacs Help Command Source: https://docs.doomemacs.org/latest/index Describes how to access Doom Emacs's internal documentation using the `doom/help` command, providing a shortcut for users familiar with the Emacs environment. ```emacs-lisp M-x doom/help ``` -------------------------------- ### Org-mode Overview and Capabilities Source: https://docs.doomemacs.org/latest/index This section provides a general overview of Org-mode, emphasizing its capabilities for plain text organization, note-taking, task management, agenda, and literate programming. ```APIDOC Org-mode: Description: A system for writing plain text notes with syntax highlighting, code execution, task scheduling, agenda management, and more. Core Concepts: - Plain text organization - Note-taking - Task scheduling and agenda management - Literate programming (mixing code with its output) Key Features: - Syntax highlighting for plain text - Executable code blocks supporting various languages - Customizable workflows for capture and agenda - Export capabilities to various formats (HTML, PDF, etc.) Use Cases: - Personal knowledge management - Project planning and task tracking - Writing and publishing documents - Reproducible research and literate programming ``` -------------------------------- ### Accessing Doom Emacs Help Source: https://docs.doomemacs.org/latest/index Users can access a more up-to-date version of the documentation directly within Emacs using the `doom/help` command. This is recommended as the online documentation may be outdated. ```emacs-lisp M-x doom/help ``` -------------------------------- ### Make: Build System Integration Source: https://docs.doomemacs.org/latest/index Adds commands for executing Makefile targets, integrating the 'make' build system into Emacs. This allows for streamlined build processes. ```emacs-lisp ;; Module for Make integration ;; Executes Makefile targets ;; Usage: (make-target "build") ``` -------------------------------- ### Doom Emacs CLI (bin/doom) Source: https://docs.doomemacs.org/latest/index Documentation for the `bin/doom` command, Doom Emacs's command-line interface. This section likely covers commands for managing modules, packages, and other aspects of the Doom Emacs configuration. ```emacs-lisp bin/doom (Doom's CLI) ``` -------------------------------- ### Reporting Issues for Doom Emacs Source: https://docs.doomemacs.org/latest/index Guidance on reporting issues for Doom Emacs. It advises users to consult the Troubleshooting guide first and explicitly states not to file or answer issues on platforms like Reddit, Twitter, or StackOverflow, directing users to the official channels for better tracking and information. ```markdown > **Please do not file _or answer_ Doom Emacs issues on Reddit, Twitter, or StackOverflow.** Kindly refer them to this section. > Questions posted on other platforms are difficult to track, difficult for posterity to find, and rarely include enough information to investigate. ``` -------------------------------- ### Doom Emacs CI/CD Workflows Source: https://docs.doomemacs.org/latest/index Describes the various workflows managed by the CI/CD system for Doom Emacs, including testing, linting commits, bumping packages, and building documentation. ```yaml # Example CI/CD workflow configuration (conceptual) name: Doom Emacs CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Emacs # ... setup Emacs environment ... - name: Run Tests run: | # ... execute Doom Emacs tests ... lint_commits: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Lint Commits # ... lint commit messages ... bump_packages: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Bump Packages # ... logic to bump package versions ... build_docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build Documentation # ... build documentation using appropriate tools ... ``` -------------------------------- ### Launch VS Code Integration (Emacs) Source: https://docs.doomemacs.org/latest/index This Emacs Lisp command initiates the VS Code integration within Doom Emacs, leveraging the LSP module. It's a key command for accessing IDE-like features. ```emacs-lisp M-x vscode ``` -------------------------------- ### Common Lisp Language Support in Doom Emacs Source: https://docs.doomemacs.org/latest/index Provides support for Common Lisp and the Sly development environment. It assumes Steel Bank Common Lisp (SBCL) is installed but configurable. Common Lisp is known for its mature specification, rich standard library, powerful REPL, and debugger, enabling an interactive programming style. ```common-lisp If you've seen one lisp, you've seen them all ``` -------------------------------- ### Doom Emacs CI/CD Workflows Source: https://docs.doomemacs.org/latest/index Details the Continuous Integration and Continuous Deployment (CI/CD) workflows used in Doom Emacs, including testing and commit linting. ```APIDOC CI/CD Workflows: - Testing: Workflows for running automated tests. - Linting commits: Workflows for ensuring Git commit messages adhere to conventions. ``` -------------------------------- ### Doom Emacs Lookup Module Functionality Source: https://docs.doomemacs.org/latest/index This module provides tools for navigating code and looking up definitions, references, documentation, dictionary definitions, or synonyms. It features jump-to-definition, find-references, xref integration, and supports searching online providers like devdocs.io, stackoverflow, google, duckduckgo, and youtube. It also integrates with Dash.app docsets and online/offline dictionaries and thesauruses. ```emacs-lisp ;; Module: lookup ;; Description: Code navigation and documentation lookup tools ;; Flags: +dictionary, +docsets, +offline ;; Core functionality: ;; - Jump-to-definition and find-references ;; - Xref integration ;; - Online provider search (devdocs.io, stackoverflow, google, duckduckgo, youtube) ;; - Dash.app docset integration ;; - Online/offline dictionary and thesaurus support ``` -------------------------------- ### Doom Emacs OS Modules Documentation Source: https://docs.doomemacs.org/latest/index Provides links to documentation for operating system specific modules in Doom Emacs, such as macOS and TTY configurations. ```markdown * [7.10.1. macos](https://docs.doomemacs.org/latest/#/modules/os/macos) * [7.10.2. tty](https://docs.doomemacs.org/latest/#/modules/os/tty) ``` -------------------------------- ### Gentoo: Enable JIT for Emacs native-comp Source: https://docs.doomemacs.org/latest/index Configures Gentoo to use the live ebuild for Emacs 28.0 with the 'jit' USE flag enabled for native compilation support. This involves unmasking the ebuild and setting the USE flag. ```bash =app-editors/emacs-28.0.9999 ** ``` ```bash =app-editors/emacs-28.0.9999 jit ``` -------------------------------- ### Doom Emacs CLI Documentation Generation Source: https://docs.doomemacs.org/latest/index Illustrates the command-line tools used to generate documentation menus and ensure documentation conformity within the Doom Emacs project. ```shell $ doom make docs:menu $ doom make docs:conform ``` -------------------------------- ### Solidity Language Support Source: https://docs.doomemacs.org/latest/index This module provides support for the Solidity programming language in Doom Emacs, commonly used for smart contract development on blockchains. It includes syntax checking via flycheck, code completion with company-solidity, and gas estimation functionality. ```solidity Do you need a blockchain? No. ``` -------------------------------- ### Go Language Support in Emacs Source: https://docs.doomemacs.org/latest/index Provides comprehensive support for the Go programming language, including LSP integration via gopls. Features include code completion, documentation lookup, REPL, formatting, and testing code generation. ```emacs-lisp ;; The hipster dialect ;; This module adds [Go](https://golang.org) support, with optional (but recommended) LSP support via [gopls](https://github.com/golang/tools/blob/master/gopls/README.md). ;; * Code completion (`gocode`) ;; * Documentation lookup (`godoc`) ;; * Eldoc support (`go-eldoc`) ;; * REPL (`gore`) ;; * Syntax-checking (`flycheck`) ;; * Auto-formatting on save (`gofmt`) (requires [:editor format +onsave](https://docs.doomemacs.org/v21.12/modules/editor/format/#/description/module-flags/onsave "Opens the documentation for the ':editor format' Doom module's '+onsave' flag")) ;; * Code navigation & refactoring (`go-guru`) ;; * [File templates](https://docs.doomemacs.org/editor/file-templates/templates/go-mode) ;; * [Snippets](https://github.com/hlissner/doom-snippets/tree/master/go-mode) ;; * Generate testing code (`go-gen-test`) ;; * Code checking (`flycheck-golangci-lint`) ;; Flags: [+lsp](https://docs.doomemacs.org/v21.12/modules/lang/go/#/description/module-flags/lsp "Opens the documentation for the ':lang go' Doom module's '+lsp' flag") ``` -------------------------------- ### Emacs Community Resources Source: https://docs.doomemacs.org/latest/index This section lists external communities and platforms for users whose issues are not specific to Doom Emacs, but rather to Emacs in general. It includes subreddits, IRC channels, Stack Exchange, mailing lists, and more. ```APIDOC General Emacs Community Resources: Reddit: - r/emacs - r/orgmode IRC: Emacs on IRC Stack Exchange: emacs.stackexchange.com Mailing Lists: Emacs mailing lists Newsgroups: Emacs newsgroups Websites: - emacs-china.org - Emacs Quora ``` -------------------------------- ### Doom Emacs Upload Module Source: https://docs.doomemacs.org/latest/index Maps local directories to remotes via ssh/ftp using the ssh-deploy package. It facilitates effortless deployment of local files and directories to remote hosts via Tramp (SSH, SFTP, FTP), mimicking PhpStorm's deployment functionality. ```emacs-lisp ;; Maps local directories to remotes via ssh/ftp ;; Uses ssh-deploy for deployment ;; Refer to https://github.com/cjohansson/emacs-ssh-deploy/blob/master/README.md for details. ``` -------------------------------- ### Loading Doom Emacs Color Themes Source: https://docs.doomemacs.org/latest/index Demonstrates two methods for loading color themes in Doom Emacs: setting the `doom-theme` variable or using the `load-theme` function. ```emacs-lisp ;;; add to $DOOMDIR/config.el (setq doom-theme 'doom-tomorrow-night) ;; or (load-theme 'doom-tomorrow-night t) ``` -------------------------------- ### Doom Emacs Editing Tutorials Source: https://docs.doomemacs.org/latest/index This section provides tutorials on various text editing functionalities in Doom Emacs. It covers copy-pasting, text manipulation, font resizing, region selection, text replacement, commenting, file operations, keyboard macros, and reformatting. ```emacs-lisp ;; Editing Tutorials: ;; - Copy/Paste: Standard copy and paste operations ;; - Text manipulation: Advanced text editing commands ;; - Resize fonts on-the-fly: Adjusting font size dynamically ;; - Region selection: Selecting text regions for editing ;; - Narrowing: Focusing on specific parts of a buffer ;; - Replacing text: Replacing text within a buffer ;; - Replacing text in multiple files: Bulk text replacement ;; - Commenting: Adding and removing comments ;; - Deleting, renaming, or moving files: File system operations ;; - Keyboard macros: Recording and replaying keyboard actions ;; - Scratch buffer: Using the scratch buffer for testing code ;; - Reformatting: Code reformatting and pretty-printing ``` -------------------------------- ### Doom Emacs Community Resources Source: https://docs.doomemacs.org/latest/index This section outlines the various platforms where Doom Emacs users can find help and engage with the community. It includes official forums like Discourse and Discord, as well as alternative channels like Twitter. It also advises against contacting the maintainer directly for support. ```APIDOC Community Resources: Discourse: https://discourse.doomemacs.org - Official nexus for discussion, support, announcements, guides, tutorials, cheat sheets, and more. - Tracks project state and provides a platform for user questions. Discord: https://doomemacs.org/discord - Less formal environment for social interaction and engaging with the maintainer. Twitter: https://twitter.com/doomemacs - Alternative channel for announcements; Discourse subscription is recommended if not using Twitter. Matrix: (Currently unavailable) - Planned open-source alternative to Discord, bridged to Discord server. - Awaiting finalized support for Spaces in the Matrix ecosystem. Support Guidelines: - Do not contact Henrik or moderators directly (email/DM) for assistance. - Present issues to the community on Discourse or Discord for broader input and to avoid overwhelming maintainers. ``` -------------------------------- ### Workspaces Module Source: https://docs.doomemacs.org/latest/index Adds support for workspaces powered by `persp-mode`, enabling tab emulation, persistence, and separate workspaces for different tasks. Includes an API for manipulating these workspaces. ```emacs-lisp ;; Tab emulation, persistence, & separate workspaces ;; Powered by persp-mode.el ;; API for manipulating workspaces. ``` -------------------------------- ### Doom Emacs Modules Overview Source: https://docs.doomemacs.org/latest/index This section provides a high-level overview of the different modules available in Doom Emacs. It categorizes modules into terminal, tools, and UI functionalities, with links to detailed documentation for each. ```emacs-lisp ;; Terminal Modules ;; vterm ;; Tools Modules ;; ansible ;; biblio ;; debugger ;; direnv ;; docker ;; editorconfig ;; ein ;; eval ;; gist ;; lookup ;; lsp ;; magit ;; make ;; pass ;; pdf ;; prodigy ;; rgb ;; taskrunner ;; terraform ;; tmux ;; upload ;; UI Modules ;; deft ;; doom ;; doom-dashboard ;; doom-quit ;; emoji ;; hl-todo ;; hydra ;; indent-guides ;; ligatures ;; minimap ;; modeline ;; nav-flash ;; neotree ;; ophints ;; popup ;; tabs ;; treemacs ;; unicode ;; vc-gutter ;; vi-tilde-fringe ;; window-select ;; workspaces ;; zen ``` -------------------------------- ### Taskrunner: Project Task Execution Source: https://docs.doomemacs.org/latest/index Integrates the 'taskrunner' Emacs package to scrap and execute runnable tasks from various build systems like make, gradle, and npm. ```emacs-lisp ;; Module for Taskrunner integration ;; Executes tasks from build systems ;; Usage: (taskrunner-run "build") ```