;;
;; Package Manager
;;
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")
("elpa" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
;;
;; Use Package
;;
(unless ( package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;;
;; Packages
;;
;; selctrum
(use-package selectrum)
(selectrum-mode +1)
;; evil
(use-package evil)
(require 'evil)
(evil-mode 1)
;; undo-tree
(use-package undo-tree)
(require 'undo-tree)
;; buffer names
(setq frame-title-format
'((:eval (if (buffer-file-name)
(abbreviate-file-name (buffer-file-name))
"%b"))
(:eval (if (buffer-modified-p)
" •"))
" - Emacs")
)
(defvar ww/original-frame-title-format frame-title-format
"The original frame title format")
(setq frame-title-format '(:eval (if (eq major-mode 'dired-mode) "dired" ww/original-frame-title-format)))
;; dired
(use-package dired-subtree
:config
(bind-keys :map dired-mode-map
("<right>" . dired-subtree-insert)
("<left>" . dired-subtree-remove)))
;; (add-hook 'dired-mode-hook (lambda () (set-frame-name "dired")))
;; nix-mode
(use-package nix-mode
:mode "\\.nix\\'")
;; latex
(use-package auctex
:demand t
:no-require t
:mode ("\\.tex\\'" . TeX-latex-mode)
:config
(setq TeX-auto-save t))
(use-package tex-site
:ensure auctex
:no-require
:mode ("\\.tex\\" . TeX-latex-mode))
(use-package tex-mode
:hook (TeX-mode . latex-electric-env-pair-mode))
(add-hook 'pdf-tools-enabled-hook 'pdf-view-midnight-minor-mode)
;; OrgMode
(add-hook 'org-mode-hook 'org-indent-mode)
(add-hook 'org-mode-hook 'visual-line-mode)
(use-package org-roam)
;; ;; (make-directory "~/org-roam")
;;(setq org-roam-directory "~/org-roam")
;;(add-hook 'after-init-hook 'org-roam-mode)
(setq org-pretty-entities t)
(setq org-pretty-entities-include-sub-superscripts t)
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0))
(add-hook 'org-mode-hook 'flyspell-mode)
(use-package org-appear)
(use-package org-fragtog)
(add-hook 'org-mode-hook 'org-appear-mode)
(add-hook 'org-mode-hook 'org-fragtog-mode)
(add-hook 'org-mode-hook 'org-latex-preview)
(setq org-appear-autolinks 1)
;; pdf tools
(use-package pdf-tools
:pin manual
:config
(pdf-tools-install)
(setq-default pdf-view-display-size 'fit-width)
(define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward)
:custom
(pdf-annot-activate-created-annotations t "automatically annotate highlights"))
(setq TeX-view-program-selection '((output-pdf "PDF Tools"))
TeX-view-program-list '(("PDF Tools" TeX-pdf-tools-sync-view))
TeX-source-correlate-start-server t)
(add-hook 'TeX-after-compilation-finished-functions
#'TeX-revert-document-buffer)
;; language server protcol
(use-package lsp-mode
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l")
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
(java-mode . lsp)
;; if you want which-key integration
(lsp-mode . lsp-enable-which-key-integration)
;;(haskell-mode . lsp)
)
:commands lsp)
;; optionally
(use-package lsp-ui :commands lsp-ui-mode)
;;(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
;; optionally if you want to use debugger
(use-package dap-mode)
;; (use-package dap-LANGUAGE) to load the dap adapter for your language
;; optional if you want which-key integration
(use-package company)
(require 'lsp-mode)
(use-package lsp-java)
(use-package haskell-mode)
;; pinentry
(use-package pinentry)
(pinentry-start)
(setenv "GPG_AGENT_INFO" nil)
;;magit
(use-package forge
:after magit)
(use-package ghub)
(ghub-request "GET" "/user" nil
:forge 'github
:host "api.github.com"
:username "wizardwatch"
:auth 'forge)
(setq auth-sources '("~/.authinfo.gpg"))
;;
;; Graphics
;;
;; Disable stuff
(setq inhibit-startup-message t)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(setq use-dialog-box nil)
;; ;; Enable stuff
(global-hl-line-mode t)
(add-to-list 'default-frame-alist '(font . "Iosevka-14"))
(set 'pop-up-frames 'graphic-only)
;; ;; Theme
(use-package doom-themes
:config
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
(load-theme 'doom-dracula t)
;; Enable flashing mode-line on errors
;; (doom-themes-visual-bell-config)
;; ;; Treemacs
;; (setq doom-themes-treemacs-theme "doom-colors") ; use the colorful treemacs theme
;; (doom-themes-treemacs-config)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config))
(use-package rainbow-identifiers)
(add-hook 'prog-mode-hook 'rainbow-identifiers-mode)
;;
;; frames-only-mode
;;
(use-package frames-only-mode)
;;
;; Behavior
;;
(setq
backup-by-copying t ; don't clobber symlinks
backup-directory-alist
'(("." . "~/.saves/")) ; don't litter my fs tree
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t) ; use versioned backups
;; (global-set-key (kbd "TAB") 'self-insert-command);
(setq-default indent-tabs-mode t)
(setq indent-line-function 'insert-tab)
(setq tab-width 4)
;; (defvaralias 'c-basic-offset 'tab-width)
;; (defvaralias 'cperl-indent-level 'tab-width)
(server-start)
;;(setq evil-shift-width 8)
(setq backward-delete-char-untabify-method 'hungry)
;;
;; debugging
;;
(add-to-list 'after-init-hook
(lambda ()
(message (concat "emacs (" (number-to-string (emacs-pid)) ") started in " (emacs-init-time)))))
(defun executable-find (command)
"Search for COMMAND in `exec-path' and return the absolute file name.
Return nil if COMMAND is not found anywhere in `exec-path'."
;; Use 1 rather than file-executable-p to better match the behavior of
;; call-process.
(locate-file command exec-path exec-suffixes 1))
;; Auto insert
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(org-agenda-files '("~/Documents/agenda.org"))
'(package-selected-packages
'(centaur-tabs use-package undo-tree treemacs-projectile treemacs-persp treemacs-magit treemacs-icons-dired treemacs-evil selectrum)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)