;; Automatically update packages and removes old ones. (use-package auto-package-update :ensure t :config (setq auto-package-update-delete-old-versions t) (setq auto-package-update-hide-results t) (auto-package-update-maybe)) ;; Light theme for using laptop outside. (use-package basic-theme :ensure t) ;;; Languages (use-package haskell-mode :ensure t :config (setq haskell-interactive-popup-errors nil) :init (add-hook 'haskell-mode-hook 'interactive-haskell-mode)) (use-package geiser :ensure t :config ;; Make geiser flash the region being evaluated on C-c C-c, like SLIME does. (add-hook 'geiser-mode-hook (lambda () (define-key geiser-mode-map (kbd "C-c C-c") nil) ;; remove default C-c C-c binding (local-set-key (kbd "C-c C-c") (lambda () (interactive) (fez/flash-region) (geiser-eval-definition))))) ;; geiser requires extra packages for every implementation you want to use (use-package geiser-guile :ensure t) (use-package geiser-mit :ensure t) (use-package geiser-chez :ensure t)) (use-package sly :ensure t :config (setq inferior-lisp-program "sbcl") (add-hook 'sly-mode-hook (lambda () (defun sly-flash-region (start end) (fez/flash-region)) (defun sly-mrepl-default-prompt (_package nickname error-level entry-idx _condition) "SLY REPL prompt." (concat (when (cl-plusp error-level) (concat (sly-make-action-button (format "[%d]" error-level) #'sly-db-pop-to-debugger-maybe) " ")) (propertize (concat (number-to-string entry-idx) ":" nickname "> ") 'face 'sly-mrepl-prompt-face 'font-lock-face 'sly-mrepl-prompt-face)))))) ;; Amazing s-expression editing mode. (use-package paredit :ensure t :config (add-hook 'scheme-mode-hook 'paredit-mode) (add-hook 'lisp-mode-hook 'paredit-mode) (add-hook 'emacs-lisp-mode-hook 'paredit-mode)) ;;; Utility packages ;; undo-tree is mainly used for its redo functionality. (use-package undo-tree :ensure t :bind ("C-_" . 'undo-tree-undo) ("M-_" . 'undo-tree-redo) :config (global-undo-tree-mode)) ;; Nice startup screen. (use-package dashboard :ensure t :config (setq dashboard-banner-logo-title "") (setq dashboard-startup-banner 3) ; add own image? (setq dashboard-center-content t) (setq dashboard-set-footer nil) (dashboard-setup-startup-hook)) ;; Easier selection for s-expressions and other things. (use-package expand-region :ensure t :bind ("C-=" . er/expand-region) :config (pending-delete-mode t)) ; if you start typing while a word is selected, overwrite it ;; Multiple cursors make it easier to refactor stuff. (use-package multiple-cursors :ensure t :config (global-set-key (kbd "C->") 'mc/mark-next-like-this) (setq mc/always-run-for-all t)) ;; avy - jump around files more easily (use-package avy :ensure t :bind ("M-s" . avy-goto-char)) ;; Amazing git porcelain. (use-package magit :ensure t) ;; Minibuffer completion. Vertical display and faster than ido. (use-package selectrum :ensure t :config (selectrum-mode t)) ;; better incremental search with minibuffer (use-package swiper :ensure t :bind ("C-s" . 'swiper)) ;; Instead of opening windows inside of Emacs, create new frames. This is great ;; for tiling window managers. (use-package frames-only-mode :ensure t :config (frames-only-mode)) ;; Mode for browsing gemini/gopher sites. (use-package elpher :ensure t) ;; Highlight parentheses for Lisp (use-package highlight-parentheses :ensure t :config (add-hook 'scheme-mode-hook 'highlight-parentheses-mode) (add-hook 'lisp-mode-hook 'highlight-parentheses-mode) (add-hook 'emacs-lisp-mode-hook 'highlight-parentheses-mode)) ;; org-mode (use-package org :ensure t :config ;;; org-capture ;; Default location for org-capture is ~/org/notes.org (setq org-default-notes-file (concat org-directory "/notes.org")) (setq org-capture-templates '(("t" "Task" entry (file+headline "~/org/tasks.org" "Tasks") "* TODO %?\n %i\n %a") ("j" "Journal" entry (file+datetree "~/org/journal.org") "* %?\nEntered on %U\n %i\n %a"))) (global-set-key (kbd "C-c o") 'org-capture)) ;; Notes (use-package org-roam :ensure t :config (setq org-roam-directory "~/Documents/org-roam")) ;; better shell-command (use-package shell-command+ :ensure t :config (global-set-key (kbd "M-!") 'shell-command+)) (provide 'packages)