;; -------------------------------------------------
;; Package Management Setup
;; -------------------------------------------------
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Uncomment the line below to enable MELPA Stable if desired.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
;; -------------------------------------------------
;; PlantUML Setup
;; -------------------------------------------------
(setq org-plantuml-jar-path "/home/gianm/.emacs.d/plantuml-gplv2-1.2024.7.jar")
(setq package-selected-packages '(lsp-mode yasnippet lsp-treemacs helm-lsp
projectile hydra flycheck company avy which-key helm-xref dap-mode))
(when (cl-find-if-not #'package-installed-p package-selected-packages)
(package-refresh-contents)
(mapc #'package-install package-selected-packages))
;; sample `helm' configuration use https://github.com/emacs-helm/helm/ for details
(helm-mode)
(require 'helm-xref)
(define-key global-map [remap find-file] #'helm-find-files)
(define-key global-map [remap execute-extended-command] #'helm-M-x)
(define-key global-map [remap switch-to-buffer] #'helm-mini)
(which-key-mode)
(add-hook 'c-mode-hook 'lsp)
(add-hook 'c++-mode-hook 'lsp)
(setq gc-cons-threshold (* 100 1024 1024)
read-process-output-max (* 1024 1024)
treemacs-space-between-root-nodes nil
company-idle-delay 0.0
company-minimum-prefix-length 1
lsp-idle-delay 0.1) ;; clangd is fast
(with-eval-after-load 'lsp-mode
(add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration)
(require 'dap-cpptools)
(yas-global-mode))
;; -------------------------------------------------
;; Custom Variables
;; -------------------------------------------------
(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.
'(custom-safe-themes
'("046a2b81d13afddae309930ef85d458c4f5d278a69448e5a5261a5c78598e012"
default))
'(org-agenda-files nil)
'(package-selected-packages
'(all-the-icons-dired auctex dashboard dired-sidebar gruvbox-theme
htmlize modus-themes org-bullets org-download
org-modern page-break-lines pdf-tools
yasnippet zenburn-theme)))
;; -------------------------------------------------
;; Custom Faces
;; -------------------------------------------------
(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.
'(org-block ((t (:inherit fixed-pitch))))
'(org-code ((t (:inherit (shadow fixed-pitch)))))
'(org-document-info ((t (:foreground "dark orange"))))
'(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
'(org-indent ((t (:inherit (org-hide fixed-pitch)))))
'(org-link ((t (:foreground "royal blue" :underline t))))
'(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
'(org-property-value ((t (:inherit fixed-pitch))))
'(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
'(org-table ((t (:inherit fixed-pitch :foreground "#83a598"))))
'(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
'(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
;; -------------------------------------------------
;; Dashboard Setup
;; -------------------------------------------------
(defun my/dashboard-banner ()
(setq dashboard-banner-logo-title
(format "Emacs ready in %.2f seconds with %d garbage collections."
(float-time (time-subtract after-init-time before-init-time)) gcs-done)))
(use-package page-break-lines
:ensure t
:demand t)
(use-package dashboard
:ensure t
:after page-break-lines
:custom
(dashboard-page-separator "\n\f\n")
:init
(add-hook 'after-init-hook 'dashboard-refresh-buffer)
(add-hook 'dashboard-mode-hook 'my/dashboard-banner)
:config
(setq dashboard-startup-banner "/home/gianm/.emacs.d/doomgui.png")
(dashboard-setup-startup-hook)
(setq dashboard-center-content t)
(setq dashboard-set-heading-icons t))
;; -------------------------------------------------
;; Theme Setup
;; -------------------------------------------------
;;(load-theme 'zenburn t)
(load-theme 'gruvbox-dark-medium)
;; Uncomment the lines below if you want to enable Doom Themes.
;; (use-package doom-themes
;; :ensure t
;; :config
;; ;; Global settings (defaults)
;; (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-one t)
;;
;; ;; Enable flashing mode-line on errors
;; (doom-themes-visual-bell-config)
;;
;; ;; Enable custom neotree theme (all-the-icons must be installed!)
;; ;;(doom-themes-neotree-config)
;;
;; ;; For treemacs users:
;; (setq doom-themes-treemacs-theme "doom-atom")
;; (doom-themes-treemacs-config)
;;
;; ;; Improve org-mode's native fontification
;; (doom-themes-org-config))
;; -------------------------------------------------
;; Org-Mode Configuration
;; -------------------------------------------------
(use-package org-bullets
:config
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
(add-hook 'org-mode-hook 'visual-line-mode)
(setq org-hide-emphasis-markers t)
(add-hook 'org-mode-hook 'org-indent-mode)
;; Hide emphasis markers in org-mode
(font-lock-add-keywords 'org-mode
'(("^ *\\([-]\\) "
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "."))))))
;; Set fixed-pitch for Org elements for better readability
(custom-theme-set-faces
'user
'(org-block ((t (:inherit fixed-pitch))))
'(org-code ((t (:inherit (shadow fixed-pitch)))))
'(org-document-info ((t (:foreground "dark orange"))))
'(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
'(org-indent ((t (:inherit (org-hide fixed-pitch)))))
'(org-link ((t (:foreground "royal blue" :underline t))))
'(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
'(org-property-value ((t (:inherit fixed-pitch))) t)
'(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
'(org-table ((t (:inherit fixed-pitch :foreground "#83a598"))))
'(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
'(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
;; -------------------------------------------------
;; Org-Babel Configuration
;; -------------------------------------------------
(org-babel-do-load-languages
'org-babel-load-languages
'((plantuml . t))) ;; this line activates PlantUML
;; -------------------------------------------------
;; Miscellaneous Settings
;; -------------------------------------------------
;; Disable the toolbar
(menu-bar-mode -1)
(tool-bar-mode -1)
;; Start the week on Monday in the calendar
(setq calendar-week-start-day 1)
;; Use PDF Tools as the default viewer and enable sync between source and PDF
(setq TeX-view-program-selection '((output-pdf "PDF Tools")))
(setq TeX-source-correlate-start-server t)
;; Automatically refresh the PDF buffer after compilation
(add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer)
;; Auto-save and parse LaTeX documents
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master t)
;; LaTeX mode hooks for additional functionality
(add-hook 'LaTeX-mode-hook 'visual-line-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(add-hook 'LaTeX-mode-hook 'prettify-symbols-mode)
(add-hook 'LaTeX-mode-hook 'TeX-fold-mode)
;; Enable RefTeX support
(setq reftex-plug-into-AUCTeX t)
;; Optional: PDF mode (deprecated in newer versions of AUCTeX)
(setq TeX-PDF-mode t)
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
;; org-modern
;; Minimal UI
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; Add frame borders and window dividers
(modify-all-frames-parameters
'((right-divider-width . 20)
(internal-border-width . 20)))
(dolist (face '(window-divider
window-divider-first-pixel
window-divider-last-pixel))
(face-spec-reset-face face)
(set-face-foreground face (face-attribute 'default :background)))
(set-face-background 'fringe (face-attribute 'default :background))
(setq
;; Edit settings
org-auto-align-tags nil
org-tags-column 0
org-catch-invisible-edits 'show-and-error
org-special-ctrl-a/e t
org-insert-heading-respect-content t
;; Org styling, hide markup etc.
org-hide-emphasis-markers t
org-pretty-entities t
org-ellipsis "…"
;; Agenda styling
org-agenda-tags-column 0
org-agenda-block-separator ?─
org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
(global-org-modern-mode)
(with-eval-after-load 'org (global-org-modern-mode))
(electric-pair-mode 1)
(use-package dired-sidebar
:bind (("C-x C-n" . dired-sidebar-toggle-sidebar))
:ensure t
:commands (dired-sidebar-toggle-sidebar)
:init
(add-hook 'dired-sidebar-mode-hook
(lambda ()
(unless (file-remote-p default-directory)
(auto-revert-mode))))
:config
(push 'toggle-window-split dired-sidebar-toggle-hidden-commands)
(push 'rotate-windows dired-sidebar-toggle-hidden-commands)
(setq dired-sidebar-subtree-line-prefix "__")
(setq dired-sidebar-theme 'vscode)
(setq dired-sidebar-use-term-integration t)
(setq dired-sidebar-use-custom-font t))
(add-hook 'dired-mode-hook 'all-the-icons-dired-mode)
(require 'tramp)
(setq tramp-default-method "scp")
Author: Gianmarco
Created: 2025-01-17 Fri 00:36
Validate