Multi-term is currently broken, I think this may be related to Emacs 26, but as I don't actively use it much I haven't investigated more.
		
			
				
	
	
		
			179 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| ;;; init.el --- Package bootstrapping. -*- lexical-binding: t; -*-
 | |
| 
 | |
| ;; Packages are installed via Nix configuration, this file only
 | |
| ;; initialises the newly loaded packages.
 | |
| 
 | |
| (require 'use-package)
 | |
| (require 'seq)
 | |
| 
 | |
| (package-initialize)
 | |
| 
 | |
| ;; Add 'init' folder that contains other settings to load.
 | |
| (add-to-list 'load-path (concat user-emacs-directory "init"))
 | |
| 
 | |
| ;; Initialise all packages installed via Nix.
 | |
| ;;
 | |
| ;; TODO: Generate this section in Nix for all packages that do not
 | |
| ;; require special configuration.
 | |
| 
 | |
| ;;
 | |
| ;; Packages providing generic functionality.
 | |
| ;;
 | |
| 
 | |
| (use-package ace-window
 | |
|   :bind (("C-x o" . ace-window))
 | |
|   :init
 | |
|   (progn  (setq aw-keys '(?f ?j ?d ?k ?s ?l ?a)
 | |
|                 aw-scope 'frame)
 | |
|           ;; Show previews of ace-window numbers in the mode line for each window.
 | |
|           (ace-window-display-mode)))
 | |
| 
 | |
| (use-package adjust-parens :hook ((lisp-mode . adjust-parens-mode)
 | |
|                                   (emacs-lisp-mode . adjust-parens-mode)))
 | |
| (use-package auth-source-pass :init (auth-source-pass-enable))
 | |
| 
 | |
| (use-package avy
 | |
|   :bind (("M-j" . avy-goto-char)
 | |
|          ("M-p" . avy-pop-mark)
 | |
|          ("M-g g" . avy-goto-line)))
 | |
| 
 | |
| (use-package browse-kill-ring)
 | |
| 
 | |
| (use-package company
 | |
|   :hook ((prog-mode . company-mode))
 | |
|   :bind (:map rust-mode-map ("<tab>" . company-indent-or-complete-common)
 | |
|          :map lisp-mode-map ("<tab>" . company-indent-or-complete-common))
 | |
|   :init (setq company-tooltip-align-annotations t))
 | |
| 
 | |
| (use-package dash)
 | |
| (use-package dash-functional)
 | |
| (use-package edit-server :init (edit-server-start))
 | |
| (use-package gruber-darker-theme)
 | |
| (use-package ht)
 | |
| (use-package hydra)
 | |
| (use-package idle-highlight-mode :hook ((prog-mode . idle-highlight-mode)))
 | |
| (use-package paredit :hook ((lisp-mode . paredit-mode)
 | |
|                             (emacs-lisp-mode . paredit-mode)))
 | |
| (use-package multiple-cursors)
 | |
| 
 | |
| (use-package pinentry
 | |
|   :init
 | |
|   (setq epa-pinentry-mode 'loopback)
 | |
|   (pinentry-start))
 | |
| 
 | |
| (use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode))
 | |
| (use-package rainbow-mode)
 | |
| (use-package s)
 | |
| (use-package smartparens :init (smartparens-global-mode))
 | |
| (use-package string-edit)
 | |
| (use-package telephone-line) ;; configuration happens outside of use-package
 | |
| (use-package undo-tree :init (global-undo-tree-mode))
 | |
| (use-package uuidgen)
 | |
| (use-package which-key :init (which-key-mode t))
 | |
| 
 | |
| ;;
 | |
| ;; Applications in emacs
 | |
| ;;
 | |
| 
 | |
| (use-package magit
 | |
|   :bind ("C-c g" . magit-status)
 | |
|   :init (setq magit-repository-directories '(("/home/vincent/projects" . 2))))
 | |
| 
 | |
| ;; (use-package multi-term
 | |
| ;;   :bind ("C-x t" . counsel-switch-to-term)
 | |
| ;;   :init (progn
 | |
| ;;           ;; term-mode's attempt to use isearch is not my favourite thing in the
 | |
| ;;           ;; world.
 | |
| ;;           (delete '("C-r" . isearch-backward) term-bind-key-alist)
 | |
| ;;           (delete '("C-s" . isearch-forward) term-bind-key-alist)
 | |
| 
 | |
| ;;           (add-to-list 'term-bind-key-alist '("C-r" . term-send-reverse-search-history))
 | |
| ;;           (add-to-list 'term-bind-key-alist '("C-c C-l" . term-line-mode))
 | |
| ;;           (add-to-list 'term-bind-key-alist '("C-s" . swiper))
 | |
| ;;           (add-to-list 'term-bind-key-alist '("C-c C-r" . term-rename))))
 | |
| 
 | |
| (use-package password-store)
 | |
| (use-package pg)
 | |
| (use-package restclient)
 | |
| 
 | |
| ;;
 | |
| ;; Packages providing language-specific functionality
 | |
| ;;
 | |
| 
 | |
| (use-package cargo :hook ((rust-mode . cargo-minor-mode)
 | |
|                           (cargo-process-mode . visual-line-mode)))
 | |
| 
 | |
| (use-package dockerfile-mode)
 | |
| 
 | |
| (use-package eglot
 | |
|   :init (defvar rust-eglot-initialized nil)
 | |
|   :hook ((rust-mode . (lambda ()
 | |
|                         (unless rust-eglot-initialized
 | |
|                           (call-interactively #'eglot)
 | |
|                           (setq rust-eglot-initialized t))))))
 | |
| 
 | |
| (use-package erlang
 | |
|   :hook ((erlang-mode . (lambda ()
 | |
|                           ;; Don't indent after '>' while I'm writing
 | |
|                           (local-set-key ">" 'self-insert-command)))))
 | |
| 
 | |
| (use-package go-mode)
 | |
| (use-package haskell-mode)
 | |
| 
 | |
| (use-package jq-mode
 | |
|   :init (add-to-list 'auto-mode-alist '("\\.jq\\'" . jq-mode)))
 | |
| 
 | |
| (use-package kotlin-mode)
 | |
| 
 | |
| (use-package markdown-mode
 | |
|   :init
 | |
|   (add-to-list 'auto-mode-alist '("\\.txt\\'" . markdown-mode))
 | |
|   (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
 | |
|   (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)))
 | |
| 
 | |
| (use-package markdown-toc)
 | |
| (use-package nginx-mode)
 | |
| (use-package rust-mode)
 | |
| (use-package terraform-mode)
 | |
| (use-package toml-mode)
 | |
| (use-package web-mode)
 | |
| (use-package yaml-mode)
 | |
| 
 | |
| ;;
 | |
| ;; EXWM / NixOS related packages
 | |
| ;;
 | |
| 
 | |
| ;; Configure a few basics before moving on to package-specific initialisation.
 | |
| (setq custom-file (concat user-emacs-directory "init/custom.el"))
 | |
| (load custom-file)
 | |
| 
 | |
| (defvar home-dir (expand-file-name "~"))
 | |
| 
 | |
| ;; Seed RNG
 | |
| (random t)
 | |
| 
 | |
| (defun load-other-settings ()
 | |
|   (mapc 'require '(nixos
 | |
| 		   mail-setup
 | |
|                    look-and-feel
 | |
|                    functions
 | |
|                    settings
 | |
|                    modes
 | |
|                    bindings
 | |
|                    term-setup
 | |
|                    eshell-setup
 | |
|                    ))
 | |
|   (telephone-line-setup)
 | |
| 
 | |
|   (use-package sly
 | |
|     :init (setq inferior-lisp-program (concat (nix-store-path "sbcl") "/bin/sbcl"))
 | |
|     ;;(add-to-list 'company-backends 'sly-company)
 | |
|     ))
 | |
| 
 | |
| ;; Some packages can only be initialised after the rest of the
 | |
| ;; settings has been applied:
 | |
| 
 | |
| 
 | |
| (add-hook 'after-init-hook 'load-other-settings)
 | |
| (put 'narrow-to-region 'disabled nil)
 | |
| (put 'upcase-region 'disabled nil)
 |