A => early-init.el +48 -0
@@ 1,48 @@
+;;; early-init.el --- dawn of shaolin -*- lexical-binding: t; -*-
+;;
+;; Copyright (C) 2020 Elais Player
+;;
+;; Author: Elais Player <http://github/elais>
+;; Maintainer: Elais Player <elais@fastmail.com>
+;; Created: May 11, 2020
+;; Modified: May 11, 2020
+;; Version: 0.0.1
+;; Keywords:
+;; Homepage: https://github.com/elais/early-init
+;; Package-Requires: ((emacs 28.0.50) (cl-lib "0.5"))
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; description
+;;
+;;; Code:
+
+
+;; Emacs HEAD (27+) introduces early-init.el, which is run before init.el,
+;; before package and UI initialization happens.
+
+;; Defer garbage collection further back in the startup process
+;; (setq gc-cons-threshold most-positive-fixnum)
+
+;; In Emacs 27+, package initialization occurs before `user-init-file' is
+;; loaded, but after `early-init-file'. Doom handles package initialization, so
+;; we must prevent Emacs from doing it early!
+(setq package-enable-at-startup nil)
+
+;; Prevent the glimpse of un-styled Emacs by disabling these UI elements early.
+(push '(menu-bar-lines . 0) default-frame-alist)
+(push '(tool-bar-lines . 0) default-frame-alist)
+(push '(vertical-scroll-bars) default-frame-alist)
+
+;; Resizing the Emacs frame can be a terribly expensive part of changing the
+;; font. By inhibiting this, we easily halve startup times with fonts that are
+;; larger than the system default.
+(setq frame-inhibit-implied-resize t)
+
+;; Ignore X resources; its settings would be redundant with the other settings
+;; in this file and can conflict with later config (particularly where the
+;; cursor color is concerned).
+
+;;; early-init.el ends here
A => guix.scm +100 -0
@@ 1,100 @@
+(use-modules (gnu)
+ (guix packages)
+ (gnu packages emacs-xyz)
+ (guix build-system emacs)
+ (guix download)
+ (guix licenses))
+
+(define-public emacs-selectrum-prescient
+ (package
+ (name "emacs-selectrum-prescient")
+ (version "20200404.1550")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://melpa.org/packages/selectrum-prescient-"
+ version
+ ".el"))
+ (sha256
+ (base32
+ "155bsilm5db16a47vpnvylwy031rwsfzvyw76mxsc343aggiv16g"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-prescient" ,emacs-prescient)
+ ("emacs-selectrum" ,emacs-selectrum)))
+ (home-page
+ "https://github.com/raxod502/prescient.el")
+ (synopsis "Selectrum integration")
+ (description
+ "selectrum-prescient.el provides an interface for using prescient.el
+to sort and filter candidates in Selectrum menus. To enable its
+functionality, turn on `selectrum-prescient-mode' in your init-file
+or interactively.
+
+For more information, see https://github.com/raxod502/prescient.el.
+")
+ (license #f)))
+
+(define-public emacs-hyperbole
+ (package
+ (name "emacs-hyperbole")
+ (version "7.0.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://elpa.gnu.org/packages/hyperbole-"
+ version
+ ".tar"))
+ (sha256
+ (base32
+ "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab"))))
+ (build-system emacs-build-system)
+ (home-page
+ "http://www.gnu.org/software/hyperbole")
+ (synopsis
+ "GNU Hyperbole: The Everyday Hypertextual Information Manager")
+ (description "way too long")
+ (license gpl3+)))
+
+(define-public emacs-boon
+ (package
+ (name "emacs-boon")
+ (version "20200507.1851")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://melpa.org/packages/boon-"
+ version
+ ".tar"))
+ (sha256
+ (base32
+ "0yxfgm94zlykgqaqi2yvrg3l5d327cxzcgxkw83b30xilw10nyk4"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-expand-region" ,emacs-expand-region)
+ ("emacs-dash" ,emacs-dash)
+ ("emacs-multiple-cursors"
+ ,emacs-multiple-cursors)
+ ("emacs-spaceline" ,emacs-spaceline)))
+ (home-page "unspecified")
+ (synopsis "Ergonomic Command Mode for Emacs.")
+ (description
+ "Boon brings modal editing capabilities to Emacs and...
+
+- It tries to be as ergonomic as possible.
+- It remains lightweight (~300 loc for its core.)
+- It attempts to integrate with Emacs as smoothly as possible
+")
+ (license #f)))
+
+(packages->manifest
+ (list emacs-use-package emacs-tao-theme emacs-modus-operandi-theme
+ ;; ghost-eating-techniques
+ emacs-yasnippet emacs-yasnippet-snippets emacs-no-littering
+ ;; shaolin-movement
+ emacs-boon emacs-which-key emacs-ctrlf emacs-selectrum
+ emacs-general emacs-selectrum-prescient emacs-magit
+ emacs-prescient))
A => init.el +51 -0
@@ 1,51 @@
+;;; init.el -- the first *- lexical-binding: t; -*-
+;;
+;; Copyright (C) 2020 Elais Player
+;;
+;; Author: Elais Player <http://github/elais>
+;; Maintainer: Elais Player <elais@fastmail.com>
+;; Created: May 11, 2020
+;; Modified: May 11, 2020
+;; Version: 0.0.1
+;; Keywords:
+;; Homepage: https://github.com/elais/init
+;; Package-Requires: ((emacs 28.0.50) (cl-lib "0.5"))
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; description
+;;
+;;; Code:
+
+(require 'package)
+;; Prevent double loading of libraries
+(setq package-enable-at-startup nil)
+(package-initialize)
+(unless (package-installed-p 'hyperbole)
+ (package-refresh-contents)
+ (package-install 'hyperbole))
+(require 'hyperbole)
+
+
+(eval-when-compile
+ (add-to-list 'load-path "/home/elais/.guix-extra-profiles/shaolin-emacs/shaolin-emacs/share/emacs/site-lisp")
+ (require 'use-package))
+
+(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))
+
+(use-package modus-operandi-theme
+ :config (load-theme 'modus-operandi t))
+
+;; Credentials
+(setq user-name "Elais Player"
+ user-mail-address "elais@fastmail.com")
+
+;; Set defaults
+
+;; Local Packages
+(require 'shao-defaults)
+(require 'init-snippets)
+(require 'shao-fingers)
+(require 'shao-vc)
A => lisp/init-snippets.el +11 -0
@@ 1,11 @@
+;;; init-snippets.el --- Initialize yasnippet config. -*- lexical-binding: t -*-
+
+(use-package yasnippet
+ :diminish yas-minor-mode
+ :hook (after-init . yas-global-mode))
+
+(use-package yasnippet-snippets
+ :requires yasnippet)
+
+(provide 'init-snippets)
+;;; init-snippets.el ends here
A => lisp/shao-defaults.el +59 -0
@@ 1,59 @@
+;;; shao-defaults.el --- defaults -*- lexical-binding: t; -*-
+
+
+(prefer-coding-system 'utf-8)
+(set-default-coding-systems 'utf-8)
+(set-terminal-coding-system 'utf-8)
+(set-keyboard-coding-system 'utf-8)
+
+;; smart tab behavior
+(setq-default indent-tabs-mode nil)
+(setq-default tab-width 8)
+(setq tab-always-indent 'complete)
+
+;; Startup optimizations
+(setq inhibit-startup-message t
+ inhibit-startup-echo-area-message user-login-name
+ inhibit-default-init t
+ initial-major-mode 'fundamental-mode
+ initial-scratch-message nil)
+
+;; Find .authinfo
+(setq auth-sources (list "~/.authinfo.gpg"))
+
+(setq-default truncate-lines t)
+
+;; revert buffers automatically when underlying files are changed externally
+(global-auto-revert-mode t)
+
+(savehist-mode +1)
+(setq-default save-place t)
+
+;; Packages
+
+(use-package paren
+ :config
+ (show-paren-mode +1))
+
+(use-package elec-pair
+ :config
+ (electric-pair-mode +1))
+
+(use-package abbrev
+ :config
+ (setq save-abbrevs 'silently))
+
+(use-package recentf
+ :init
+ (global-set-key (kbd "C-x C-r") 'recentf-open-files)
+ (setq recentf-max-saved-items 50)
+ :config
+ (recentf-mode +1))
+
+(use-package no-littering
+ :config
+ (setq auto-save-file-name-transforms
+ `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
+ (setq custom-file (no-littering-expand-etc-file-name "custom.el")))
+
+(provide 'shao-defaults)
A => lisp/shao-fingers.el +33 -0
@@ 1,33 @@
+;;; shao-fingers.el -*- lexical-binding: t; -*-
+
+(use-package general
+ :demand t)
+
+(use-package boon
+ :demand t
+ :general
+ (:keymaps 'boon-command-mode
+ "r" 'ctrlf-forward-regexp)
+ :init
+ (require 'boon-qwerty)
+ :config
+ (boon-mode))
+
+(use-package selectrum
+ :config
+ (selectrum-mode +1))
+
+(use-package selectrum-prescient
+ :config
+ (selectrum-prescient-mode +1)
+ (prescient-persist-mode +1))
+
+(use-package ctrlf
+ :config
+ (ctrlf-mode +1))
+
+(use-package which-key
+ :config
+ (which-key-mode))
+
+(provide 'shao-fingers)
A => lisp/shao-vc.el +7 -0
@@ 1,7 @@
+;;; shao-vc.el -*- lexical-binding: t; -*-
+
+(use-package magit
+ :general
+ ("C-x g" 'magit-status))
+
+(provide 'shao-vc)