Skip to content

Latest commit

 

History

History
608 lines (500 loc) · 12.4 KB

config.org

File metadata and controls

608 lines (500 loc) · 12.4 KB

Literate emacs

This is my emacs configuration file.

header

  ;;; config.el --- Emacs configuration file  -*- lexical-binding: t; -*-
  ;;;
  ;;;  **********************************
  ;;;  **  THIS FILE IS AUTOGENERATED  **
  ;;;  **    DO NOT MANUALLY EDIT IT   **
  ;;;  **********************************
  ;;;  **    (OR EDIT BY YOUR RISK)    **
  ;;;  **********************************

  ;;; Copyright (C) 2010-2021 GV
  ;;; Author: Gustavo Valente <github.com/gmsvalente>

  ;;; Commentary:
  ;;; This file is generated from ~/.emacs.d/config.org
  
  ;;; Code
:

General Settings

backup directory

Store the backup files ‘*~’ into ‘.backups~’ folder.

	(defun create-tmp-folder (dir)
	  (if (not (directory-name-p dir))
	    (when-let (tmp-dir (make-directory dir))
	      (setq temporary-file-directory tmp-dir))
	    (setq temporary-file-directory dir)))


 ;  (setq temporary-file-directory "/.emacs-backups~") ;(create-tmp-folder (concat "/tmp/emacs-backup-files/" (format-time-string "%b%d/"  (current-time))))

   (setq backup-directory-alist '((".*" . "/tmp/emacs-backups~")))
   (setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))

yes-or-no-p

Change yes and no to y and n.

(fset 'yes-or-no-p 'y-or-n-p)

visible-bell

(setq visible-bell t)

lock-files

(setq create-lockfiles nil)

global line numbers

(global-display-line-numbers-mode t)
(column-number-mode t)

with-editor

(setq with-editor-emacsclient-executable "/usr/local/bin/emacsclient")

mouse-avoidance

(mouse-avoidance-mode 'banish)

ace-window

(use-package ace-window
  :ensure t
  :config
  (global-set-key (kbd "C-x o") 'ace-window))

global-keys

(global-set-key (kbd "C-x C-b") (global-key-binding (kbd "C-x b")))

theme

(use-package zenburn-theme
  :ensure t
  :config
  (load-theme 'zenburn 'no-confirm)
  (set-face-attribute 'default nil :height 140))

(use-package all-the-icons
  :ensure t
  :if (display-graphic-p))

(use-package doom-modeline
  :ensure t
  :init
  (doom-modeline-mode 1))

(use-package nerd-icons
  :ensure t)

(use-package beacon
  :ensure t
  :config
  (setq beacon-color "#ff0000")
  (setq beacon-size 80)
  :init
  (beacon-mode 1))

(global-hl-line-mode 1)
(set-face-background 'hl-line "#335522")

rainbow-delimiters

(use-package rainbow-delimiters
  :ensure t
  :hook (prog-mode . rainbow-delimiters-mode))

nyan cat

(use-package nyan-mode
  :ensure t
  :init
  (setq nyan-wavy-trail t)
  (setq nyan-bar-length 15)
;  (setq nyan-cat-face 1)
  (setq nyan-animate-nyancat t)
  (nyan-mode))

yasnippet

(use-package yasnippet
  :ensure t
  :init
  (yas-global-mode t))

(use-package clojure-snippets :ensure t)
(use-package java-snippets :ensure t)
(use-package aws-snippets :ensure t)
(use-package common-lisp-snippets :ensure t)
(use-package yasnippet-classic-snippets :ensure t)
(use-package yasnippet-snippets :ensure t)

flycheck

(use-package flycheck
  :ensure t)

ivy

(use-package ivy
  :ensure t
  :init (ivy-mode t))

swiper

(use-package swiper
  :ensure t)

which-key

(use-package which-key
  :ensure t
  :init (which-key-mode))

paredit

(use-package paredit
  :ensure t
  :commands paredit-mode
  :hook ((emacs-lisp-mode
	    cider-repl-mode
	    clojure-mode
	    clojurescript-mode
	    slime-repl-mode
	    lisp-mode) . paredit-mode))

dashboard

  (use-package dashboard
    :ensure t
    :config
;    (setq dashboard-banner-logo-title "<yourmessagehere>")
;    (setq dashboard-startup-banner "<yourimagehere>")
    (setq dashboard-items '((recents . 10)
			    (projects . 15)
			    (bookmarks . 3)
			    (agenda . 10)
			    (registers . 3)))
    :init
    (dashboard-setup-startup-hook))

org-mode

(use-package org
  :ensure t
  :config
  (org-babel-do-load-languages
   'org-babel-load-languages
   '((emacs-lisp . t)
     (shell . t))))

(define-key org-mode-map (kbd "C-c c") 'org-cycle-global)

(use-package org-bullets
  :ensure t
  :hook (org-mode . org-bullets-mode))

(defun org-present-start ()
  (lambda ()
    (org-present-big)
    (org-display-inline-images)
    (org-present-hide-cursor)
    (org-present-read-only)))

(defun org-present-quit ()
  (lambda ()
    (org-present-small)
    (org-remove-inline-images)
    (org-present-show-cursor)
    (org-present-read-write)))

(use-package org-present
  :ensure t
  :init
  (add-hook 'org-present-mode-hook 'org-present-start)
  (add-hook 'org-present-mode-quit-hook 'org-present-quit)
  :config
  (setq visual-fill-column-width 150
	  visual-fill-column-center-text t)
  (define-key org-present-mode-keymap (kbd "<right>") nil)
  (define-key org-present-mode-keymap (kbd "<left>") nil))

(setq org-directory (concat (getenv "HOME") "/.notes/"))

org-roam

(use-package org-roam
  :ensure t
  :after org
  :init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade
  :custom
  (org-roam-directory (file-truename org-directory))
  :config
  (org-roam-setup)
  :bind (("C-c n f" . org-roam-node-find)
	   ("C-c n r" . org-roam-node-random)		    
	   (:map org-mode-map
		 (("C-c n i" . org-roam-node-insert)
		  ("C-c n o" . org-id-get-create)
		  ("C-c n t" . org-roam-tag-add)
		  ("C-c n a" . org-roam-alias-add)
		  ("C-c n l" . org-roam-buffer-toggle)))))

multiple-cursors

(use-package multiple-cursors
  :ensure t
  :bind (("C-S-c C-S-c" . mc/edit-lines)
	   ("C->" . mc/mark-next-like-this)
	   ("C-<" . mc/mark-previous-like-this)
	   ("C-c C-<" . mc/mark-all-like-this)))

company

(use-package company
  :ensure t
  :pin "gnu"
  :config
  (add-hook 'after-init-hook 'global-company-mode)
  :init
  (setq company-idle-delay 0)
  (setq company-minimum-prefix-length 1)
  (setq company-selection-wrap-around t))

projectile

(use-package projectile
  :ensure t
  :init
  (projectile-mode +1))

ripgrep

(use-package ripgrep
  :ensure t)

treemacs

(use-package treemacs
  :ensure t
  (global-set-key (kbd "C-x C-M-t") #'treemacs))

emacs-tree

tree-sitter

(use-package tree-sitter
  :ensure t)

(use-package tree-sitter-langs
  :ensure t
  :pin "melpa")

dired-sidebar

(use-package dired-subtree
  :ensure t)

(use-package dired-sidebar
  :ensure t)

todotxt

(use-package todotxt
  :ensure nil)

ensure-system-package

(use-package use-package-ensure-system-package
  :ensure t)

quelpa

(use-package quelpa
  :ensure t)

(use-package quelpa-use-package
  :ensure t)

straight

github-codespaces

(use-package codespaces
  :ensure-system-package gh
  :config (codespaces-setup)
  :bind ("C-c S" . #'codespaces-connect))

github-copilot

(use-package copilot
  :quelpa (copilot.el :fetcher github
			:repo "zerolfx/copilot.el"
			:branch "main"
			:files ("dist" "*.el"))
;;; write the :bind using the keymap
  :bind (:map copilot-mode-map
		("M-o C-c" . copilot-accept-completion)
		("M-o C-d" . copilot-mode)
		("M-o C-n" . copilot-next-completion)))

editorconfig

(use-package editorconfig
  :ensure t)

dash

(use-package dash
  :ensure t)

undo-tree

(use-package undo-tree
  :ensure t
  :config
  (setq undo-tree-history-directory-alist
	  '(("." . "/home/apollo/.undo-tree")))
  :init (global-undo-tree-mode t))

magit

Magit is the git interface for emacs. It is AWESOME

(use-package magit
  :ensure t)

(use-package magit-section
  :ensure t)

(use-package git-timemachine
:ensure t
:config
(transient-insert-suffix 'magit-file-dispatch "B"
  '("x" "Time Machine" git-timemachine)))

(pinentry-start)

lsp

(use-package lsp-mode
  :ensure t
  :commands lsp
  :hook ((rustic-mode) . #'lsp))

;; hooks for lsp clj's lsp suck!!
;; (clojure-mode
;;  clojurec-mode
;;  clojurescript-mode)



(use-package lsp-treemacs
  :ensure t
  :after 'lsp)

(use-package lsp-ui
  :ensure t
  :commands lsp-ui-mode
  :init
  (with-eval-after-load 'lsp-mode
    (setq lsp-headerline-breadcrumb-enable t)))

docker

(use-package dockerfile-mode
  :ensure t)

(use-package docker
  :ensure t
  :config (setq docker-compose-command "docker compose")
  :bind ("C-c d" . docker))

restclient

(use-package restclient
  :ensure t)

Languages

clojure

Clojure is my main programming language

(use-package clojure-mode
  :ensure t
  :config 
  (require 'flycheck-clj-kondo))

(use-package flycheck-clj-kondo :ensure t)

(use-package cider
  :ensure t
  :config
  (setq org-babel-clojure-backend 'cider)
  (setq cider-debug-prompt 'minibuffer)
  (setq cider-debug-display-locals t))

(defun clj-refactor-hook-fn ()
  (clj-refactor-mode 1)
  (yas-minor-mode 1))

(use-package clj-refactor
  :ensure t
  :init
  (add-hook 'clojure-mode #'clj-refactor-hook-fn)
  (add-hook 'clojurescript-mode #'clj-refactor-hook-fn)
  (add-hook 'cider-repl-mode #'clj-refactor-hook-fn))

common-lisp

(setq inferior-lisp-program "sbcl")
(load (expand-file-name "~/.quicklisp/slime-helper.el"))
(slime-setup '(slime-asdf
		 slime-fuzzy
		 slime-autodoc
		 slime-repl))

rust

(use-package rustic
  :ensure t
  :init
  (setq rustic-analyzer-command '("rustup run stable rust-analyzer")))

toml

protobuf

(use-package protobuf-mode
  :ensure t)

python

(use-package elpy
  :ensure t
  :defer t
  :init
  (advice-add 'python-mode :before 'elpy-enable))

typescript

(defun setup-tide-mode ()
  (interactive)
  (tide-setup)
  (flycheck-mode t)
  (setq flycheck-check-syntax-automatically '(save mode-enabled))
  (eldoc-mode +1)
  (tide-hl-identifier-mode t)
  (company-mode t))

(use-package tide
  :ensure t
  :init
  (add-hook 'before-save-hook 'tide-format-before-save)
  (add-hook 'typescript-mode #'setup-tide-mode))

misc

whitespace deletion

(defun live-delete-whitespace-except-one ()
  "Remove all whitespace except one."
  (interactive)
  (cycle-spacing -1))

ts-fold

(use-package ts-fold
  :quelpa (ts-fold :fetcher github :repo "emacs-tree-sitter/ts-fold"))

browser-function

 (setq browse-url-browser-function
	(lambda (url &optional new-window)
	  (interactive (browse-url-interactive-arg "URL: "))
	  (let ((process-environment (browse-url-process-environment)))
	    (apply #'start-process
		   (concat "firefox -P " "emacs")
		   nil
		   "/opt/firefox/firefox"   ; update this path to your Firefox executable
		   (append (list "-new-instance" "-P" "emacs" "--no-remote" url))))))

Writings

muse

(use-package muse
  :ensure t)

gptel

(use-package gptel
  :ensure t)