This is my emacs configuration file.
;;; 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
:
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)))
Change yes and no to y and n.
(fset 'yes-or-no-p 'y-or-n-p)
(setq visible-bell t)
(setq create-lockfiles nil)
(global-display-line-numbers-mode t)
(column-number-mode t)
(setq with-editor-emacsclient-executable "/usr/local/bin/emacsclient")
(mouse-avoidance-mode 'banish)
(use-package ace-window
:ensure t
:config
(global-set-key (kbd "C-x o") 'ace-window))
(global-set-key (kbd "C-x C-b") (global-key-binding (kbd "C-x b")))
(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")
(use-package rainbow-delimiters
:ensure t
:hook (prog-mode . rainbow-delimiters-mode))
(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))
(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)
(use-package flycheck
:ensure t)
(use-package ivy
:ensure t
:init (ivy-mode t))
(use-package swiper
:ensure t)
(use-package which-key
:ensure t
:init (which-key-mode))
(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))
(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))
(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/"))
(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)))))
(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)))
(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))
(use-package projectile
:ensure t
:init
(projectile-mode +1))
(use-package ripgrep
:ensure t)
(use-package treemacs
:ensure t
(global-set-key (kbd "C-x C-M-t") #'treemacs))
(use-package tree-sitter
:ensure t)
(use-package tree-sitter-langs
:ensure t
:pin "melpa")
(use-package dired-subtree
:ensure t)
(use-package dired-sidebar
:ensure t)
(use-package todotxt
:ensure nil)
(use-package use-package-ensure-system-package
:ensure t)
(use-package quelpa
:ensure t)
(use-package quelpa-use-package
:ensure t)
(use-package codespaces
:ensure-system-package gh
:config (codespaces-setup)
:bind ("C-c S" . #'codespaces-connect))
(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)))
(use-package editorconfig
:ensure t)
(use-package dash
:ensure t)
(use-package undo-tree
:ensure t
:config
(setq undo-tree-history-directory-alist
'(("." . "/home/apollo/.undo-tree")))
:init (global-undo-tree-mode t))
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)
(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)))
(use-package dockerfile-mode
:ensure t)
(use-package docker
:ensure t
:config (setq docker-compose-command "docker compose")
:bind ("C-c d" . docker))
(use-package restclient
:ensure t)
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))
(setq inferior-lisp-program "sbcl")
(load (expand-file-name "~/.quicklisp/slime-helper.el"))
(slime-setup '(slime-asdf
slime-fuzzy
slime-autodoc
slime-repl))
(use-package rustic
:ensure t
:init
(setq rustic-analyzer-command '("rustup run stable rust-analyzer")))
(use-package protobuf-mode
:ensure t)
(use-package elpy
:ensure t
:defer t
:init
(advice-add 'python-mode :before 'elpy-enable))
(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))
(defun live-delete-whitespace-except-one ()
"Remove all whitespace except one."
(interactive)
(cycle-spacing -1))
(use-package ts-fold
:quelpa (ts-fold :fetcher github :repo "emacs-tree-sitter/ts-fold"))
(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))))))
(use-package muse
:ensure t)
(use-package gptel
:ensure t)