GithubHelp home page GithubHelp logo

kickstart.el's Introduction

WORK IN PROGRESS DO NOT USE

kickstart.el

Introduction

A starting point for Emacs that is:

  • Small (<500 lines)
  • Two-file
  • Documented
  • Modular

This repo is meant to be used as a starting point for your Emacs configuration; remove the things you don’t use and add what you miss.

If you are interested in a more full-featured, modular configuration. Please use Doom emacs.

Installation

Kickstart.el at this time targets Emacs 29. If you are experiencing issues, please make sure you have the latest version.

  • Backup your previous configuration
    mv $HOME/.config/emacs{,.bak}
        
  • Recommended: Fork this repo so that you have your own copy you can modify.
  • Clone the kickstart repo into `$HOME/.config/emacs/`
    git clone https://github.com:mjlbach/kickstart.el.git $HOME/.config/emacs/
        
  • Start Emacs (`emacs`) and allow `elpaca` to complete installation.

Additional system requirements:

  • ripgrep is required for multiple vertico pickers.

Contribution

Pull-requests are welcome. The goal of this repo is not to create an Emacs configuration framework, but to offer a starting template that shows, by example, available features in Emacs.

Each PR, especially those which increase the line count, should have a description as to why the PR is necessary.

Limitations

  • The startup time for Emacs is poor, please help me optimize lazy-loading
    • You can Emacs as a daemon and attach to the server with clients for instant startup
  • Emacs client/server model was not designed to have separate settings for TUI/GUI clients
    • This mainly manifests in being unable to customize the UI layer for GUI/TUI without restarting the daemon
  • Emacs lacks a unified UI layer around childframes, so some feature (namely eldoc-box, corfu) have an inconsitent or degraded experience in the TUI
  • Emacs requires significantly more boilerplate in its plugins
  • Elisp (even native or byte-compiled elisp) is much slower than comparable scripting languages like javascript or luajit
  • Emacs is not designed with Vim bindings in mind, and requires emulation packages like evil

Attribution

  • Nicholas Vollmer (progfolio), Henrik Lissner (hlissner), and all the other configurations/README’s I’ve ripped off.

kickstart.el's People

Contributors

bdarcus avatar mjlbach avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

kickstart.el's Issues

Modularity suggestion

I know this is WIP, and that you want to keep this super focused and minimal, but I wonder if you might consider adding some way for users to add their own modules to a subdirectory, without them having to figure out how to do this themselves, and modify the main init.el file?

Say adding something like:

(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))

... and then, I dunno, some standard feature init.el will load, which can in turn load other user features, like:

;;; init-user.el --- user init -*- lexical-binding: t; -*-
;;;
;;; Code:

(require 'init-bd) ; my stuff

(provide 'init-user)
;;; init-user.el ends here

Could have the benefit that one can still easily update the main init.el file as it evolves, and also demonstrate how to modularize functionality into separate files/features.

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.