Git Product home page Git Product logo

doom-emacs's Introduction

Practicalli Doom Emacs

██████╗ ██████╗  █████╗  ██████╗████████╗██╗ ██████╗ █████╗ ██╗     ██╗     ██╗
██╔══██╗██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██║██╔════╝██╔══██╗██║     ██║     ██║
██████╔╝██████╔╝███████║██║        ██║   ██║██║     ███████║██║     ██║     ██║
██╔═══╝ ██╔══██╗██╔══██║██║        ██║   ██║██║     ██╔══██║██║     ██║     ██║
██║     ██║  ██║██║  ██║╚██████╗   ██║   ██║╚██████╗██║  ██║███████╗███████╗██║
╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝   ╚═╝   ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝╚═╝

Project on hold

Practicalli is not actively developing this configuration, although it should be useable with current versions of Doom Emacs and Emacs 28 onward.

Book status

MegaLinter Publish Book pages-build-deployment

Ideas & issues GitHub pull requests

GitHub commit activity

Creative commons license

Creative Commons License This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License (including images & stylesheets).

Overview

The Practicalli Doom Emacs provides practical guides to software development tasks, using predominantly the Clojure and ClojureScript languages. Most of the editing techniques and tools are applicable to any editing tasks.

Doom Emacs is an open source project to provide configuration to add 150+ packages to Emacs, without having to writing a lot of common configuration code.

Discuss this guide on #practicalli channel of the Clojurians Slack community.

Create a free Clojurians Slack community account.

This book will cover the following topics:

  • Emacs basics, common commands and tools
  • Powerful editing and refactor tools (iedt, narrowing, helm-ag, multiple cursors, visual undo)
  • Adding and enhancing the Clojure layer
  • Running the REPL, evaluating code, inspecting data, debug, reloaded workflow
  • Running tests & test reports
  • Structural editing (smartparens/evil-cleverparens)
  • Clojure docs, auto-completion, snippets
  • Clojurescript development, figwheel-main and reagent
  • Org-mode for project documentation, literate programming & presentations

Contributing

Issues and pull requests are most welcome. Please detail issues as much as you can. Pull requests are simpler to work with when they are specific to a page or at most a section. The smaller the change the quicker it is to review and merge.

Please see the detailed contributing section of the book before raising an issue or pull request

practicalli/doom-emacs-config GitHub repository contains the Practicalli Doom Emacs configuration used in this guide and issues and pull requests can also be made there.

Contributing

Please read the contributing section of the book page before raising an issue or pull request

By submitting content ideas and corrections you are agreeing they can be used in this workshop under the Creative Commons Attribution ShareAlike 4.0 International license. Attribution will be detailed via GitHub contributors.

Sponsor Practicalli

Sponsor Practicalli via GitHub

All sponsorship funds are used to support the continued development of Practicalli series of books and videos, although most work is done at personal cost and time.

Thanks to Cognitect, Nubank and a wide range of other sponsors for your continued support

GitHub Actions

The megalinter GitHub actions will run when a pull request is created,checking basic markdown syntax.

A review of the change will be carried out by the Practicalli team and the PR merged if the change is acceptable.

The Publish Book GitHub action will run when PR's are merged into main (or the Practicalli team pushes changes to the default branch).

Publish book workflow installs Material for MkDocs version 9

Local development

Install mkdocs version 9 using the Python pip package manager

pip install mkdocs-material=="9.*"

Install the plugins used by the Practicalli site using Pip (these are also installed in the GitHub Action workflow)

pip3 install mkdocs-material mkdocs-callouts mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-redirects pillow cairosvg

pillow and cairosvg python packages are required for Social Cards

Fork the GitHub repository and clone that fork to your computer,

git clone https://github.com/<your-github-account>/<repository>.git

Run a local server from the root of the cloned project

mkdocs serve

The website will open at http://localhost:8000

doom-emacs's People

Contributors

junghan0611 avatar practicalli-johnny avatar sutyrin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

doom-emacs's Issues

Migrate Practicalli Doom Emacs to MkDocs Material version 9

Update Material for MkDocs to version 9

The GitHub Publish Book workflow installs version 9 of Material for MkDocs

Install Material for MkDocs version 9 locally

pip install mkdocs-material=="9.*" 

Update mkdocs.yml configuration to include features that became optional in version 9

    - content.code.copy
    - content.action.edit
    - content.action.view
    - navigation.footer

Reference

Create Practicalli Emacs Doom book

Create a guide to Clojure REPL driven development using Emacs Doom configuration

The book should be comparable to Practicalli Spacemacs in terms of topics covered.

Using Ivy

Doom Emacs is configured to use Ivy by default, although Helm is available.

Ivy is not as feature rich as Helm and therefore may use less computer resources to run.

The test is does Ivy provide all the functionality that Practicalli uses with Helm, so Ivy can comfortably be used as a replacement for Helm in daily work.

Create a section on Ivy use and try to replicate all the techniques used in Helm.

Helm features commonly used

  • edit search results and commit them back to the original files
  • complete directory paths and filenames, showing options at the specific branch of the filesystem tree
  • complete function names when using SPC SPC
  • follow mode (used less often) - view each option in a completion list whilst scrolling through that list (eg. file previews, themes, etc)

Ivy features not in Helm (or more effective)

Org GitHub Issues

Manage GitHub issues from an Org-mode file

Options

  • magit-forge can view, create and edit (browse then , e)
  • org-sync
  • https://github.com/iensu/org-github-issues - conversion from markdown to org is not great (carrage returns, * in an issue become headings in org so should be avoided for lists), only seems to be sync'ing from GitHub to Emacs (not Emacs to GitHub)

org-github-issues

Is this part of Doom?
If not, how should it be added

Add to Spacemacs using the dotspacemacs-additional-package directive using a package recipe

Evaluate Doom Emacs

  • Clojure & Clojure LSP support
  • Mnemonic Key bindings
  • multiple projects (https://github.com/nex3/perspective-el)
  • iedit - Renaming search results - evil-multiedit R
  • toggle last buffer (scoped to project)
  • Customising Key bindings
  • Magit & Forge support
  • Yasnippets
  • Wrapping text - truncate lines
  • relative line numbers

Resources

Evaluate Clojure layer default keybindings and behaviour

Add Clojure as a layer

(clojure +lsp)
https://github.com/ericdallo/dotfiles/blob/master/.doom.d/init.el#L100

Is extra config needed?
https://github.com/ericdallo/dotfiles/blob/master/.doom.d/config.el#L99-L134

https://github.com/rschmukler/doom.d

How to configure keybindings

  • in general
  • for a specific layer

Configure Clojure specific key bindings

Emulate all the good things from the Spacemacs key bindings for the Clojure layer

  • should this be a set of over-rides?
  • or should there be a practicalli-clojure layer

Changing Dooms default Clojure behaviour

  • stop errors being sent to REPL buffer
  • do not open REPL buffer

Evaluating Clojure Code using Vim-style editing and easy-motion

Use Vim Style editing in Normal mode
gr
gs

gr - evaluate subforms as an alternative to ,ee
use any motion after gr
grab or gra( or gra)) - evaluate the form in the surrounding parens.

graf - evaluate the top-level form under the cursor
grag - evaluate the whole buffer

gr and gs can be combined

grgsj and choose a line from the overlay to evaluate from the current cursor position to the target line.

References

https://github.com/PythonNut/evil-easymotion

keycast with doom-emacs

Add configuration for keycast package to the practicalli/doom-emacs-config repository

Include keycast use in practical.li/doom-emacs/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.