blau_araujo/bmacs
3
6
Fork
You've already forked bmacs
0
Minhas configurações para o Emacs
  • Emacs Lisp 98.9%
  • Shell 1.1%
2025年12月21日 10:53:11 -03:00
mods Correção do problema de mudar para o dashboard ao fechar o vterm. 2024年08月12日 16:37:26 -03:00
templates Aviso sobre o arquivo das funções. 2024年08月09日 13:41:35 -03:00
bmacs.org várias atualizações 2025年12月21日 10:49:17 -03:00
bmacs.png Print da configuração. 2024年08月11日 01:58:44 -03:00
LICENSE Initial commit 2024年08月07日 12:22:11 +00:00
README.org várias atualizações 2025年12月21日 10:53:11 -03:00

Minhas configurações do Emacs (BMACS)

Importante!

  • Altere a localização das suas configurações na propriedade :tangle, acima.
  • Após alterar este arquivo, tecle C-c C-v t para gerar um novo arquivo init.el.
  • As minhas funções estão no arquivo bmacs.org.

/blau_araujo/bmacs/media/branch/main/bmacs.png

Configurações gerais

O que temos até agora...

Coleta de lixo

(setq gc-cons-threshold 16777216)

Desativar buffer de boas-vindas

(setq inhibit-startup-message t)

Ajustes gerais

(menu-bar-mode -1) ; no menu bar
(tool-bar-mode -1) ; no tools bar
(scroll-bar-mode -1) ; no scroll bars
(tooltip-mode -1) ; no tooltips
(set-fringe-mode 10) ; frame edges set to 10px
(column-number-mode 1) ; modeline shows column number
(save-place-mode 1) ; remember cursor position
(recentf-mode 1) ; remember recent files
(savehist-mode 1) ; enable history saving
(electric-pair-mode 1) ; enable keep pairs balanced
(global-auto-revert-mode t) ; Load external changes
(global-hl-line-mode 1) ; Current line highlight
(delete-selection-mode t) ; Overwrite/delete selected text

Texto inicial do buffer de rascunho (scratch)

(setq initial-scratch-message ";; BMACS: Scratch buffer...\n\n")

Numeração de linhas

(setq display-line-numbers-type 'relative)
(dolist (mode '(prog-mode-hook
 conf-mode-hook))
 (add-hook mode (lambda () (display-line-numbers-mode 1))))

Rolagem mais suave

(setq mouse-wheel-scroll-amount '(2 ((shift) . 1))
 mouse-wheel-progressive-speed nil
 mouse-wheel-follow-mouse 't
 scroll-step 1)

Prompt yes/no mais curto

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

Evita o uso de diálogos gráficos do sistema

(setq use-dialog-box nil)

Impedir o dired de abrir novos buffers

(setq dired-kill-when-opening-new-dired-buffer t)

Seguir links simbólicos ao abrir arquivos

(setq vc-follow-symlinks t)

Alguns mapeamentos de teclas globais

Desativar C-z

(global-unset-key (kbd "C-z"))

Teclar ESC para fechar o minibuffer

(global-set-key (kbd "<escape>") 'keyboard-escape-quit)

Zoom in/out mais prático

(global-set-key (kbd "C-=") 'text-scale-increase) 
(global-set-key (kbd "C--") 'text-scale-decrease)

Definições de arquivos de trabalho

Adicionar modos automáticos segundo nomes de arquivos

(add-to-list 'auto-mode-alist '("\\.bash_aliases\\|\.bash_functions\\'" . sh-mode))

Arquivo custom.el

(setq custom-file (locate-user-emacs-file "custom.el"))
(load custom-file 'noerror 'nomessage)

Enviar arquivos de backup para a lixeira

(setq backup-directory-alist '((".*" . "~/.local/share/Trash/files")))

Funções e variáveis customizadas para o BMACS

Definições de variáveis

Localização dos arquivos de configuração

(setq bmacs-git-config "~/git/bmacs/")

Localização do arquivo README.org

(setq readme-org-file (expand-file-name "README.org" bmacs-git-config))

Localização do arquivo bmacs.org

(setq bmacs-functions-file (expand-file-name "bmacs.org" bmacs-git-config))

Diretório de templates

(setq bmacs-templates-dir (expand-file-name "templates/" bmacs-git-config))

Diretório de módulos

(setq bmacs-mods-dir (expand-file-name "mods/" bmacs-git-config))

Carga das funções (bmacs.el)

(load (expand-file-name "bmacs.el" user-emacs-directory))

Carga e hook do dashboard (mods/bmacs-dashboard.el)

Ainda não está publicado, por isso o comentário.

(load (expand-file-name "bmacs-dashboard.el" bmacs-mods-dir))
(add-hook 'emacs-startup-hook 'bmacs/dashboard)

Hook para forçar mudança do cursor no terminal (evil-mode)

(add-hook 'post-command-hook 'bmacs/evil-update-cursor)

Gerenciamento de pacotes

Configurações e inicialização do package

(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
 ("elpa" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
 (package-refresh-contents))

Configurações do use-package

(unless (package-installed-p 'use-package)
 (package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;; (setq use-package-verbose t)

O melhor dos dois mundos

Evil Mode

(use-package evil
 :init
 (setq evil-want-integration t
 evil-want-keybinding nil
 evil-vsplit-window-right t
 evil-split-window-below t
 evil-undo-system 'undo-redo)
 (evil-mode))

Evil Collection

(use-package evil-collection
 :after evil
 :config
 (add-to-list 'evil-collection-mode-list 'help)
 (evil-collection-init))

Evil Terminal Cursor Changer

(use-package evil-terminal-cursor-changer
 :ensure t
 :config
 (unless (display-graphic-p)
 (evil-terminal-cursor-changer-activate)))

Aparência

Doom Themes

(use-package doom-themes
 :config
 (setq doom-themes-enable-bold t
 doom-themes-enable-italic t)
 (load-theme 'doom-moonlight t)
 (doom-themes-org-config))

Doom Modeline

(use-package doom-modeline
 :ensure t
 :hook
 (after-init . doom-modeline-mode)
 :config
 (setq doom-modeline-enable-word-count t))

Dashboard (apenas para registro)

;; Dashboard
;; (use-package dashboard
;; :init
;; (progn
;; (setq dashboard-items '((recents . 5)
;; 	 (projects . 5)))
;; (setq dashboard-show-shortcuts t)
;; (setq dashboard-center-content t)
;; (setq dashboard-set-file-icons t)
;; (setq dashboard-set-heading-icons t)
;; (setq dashboard-startup-banner "~/pic/emacs-typo-03.png"))
;; :config
;; (dashboard-setup-startup-hook))

Diminish (reduz excesso de informações na modeline)

(use-package diminish)
(diminish 'visual-line-mode "")
(diminish 'eldoc-mode "")
(diminish 'flyspell-mode "Spell")
(diminish 'evil-collection-unimpaired-mode "")

Keycast (não funciona com a Doom Modeline)

(use-package keycast
 :init
 (add-to-list 'global-mode-string '("" mode-line-keycast)))

Aprimoramento nas interfaces de seleção

Vertico

(use-package vertico
 :bind (:map vertico-map
 ("C-j" . vertico-next)
 ("C-k" . vertico-previous)
 ("C-f" . vertico-exit)
 :map minibuffer-local-map
 ("M-h" . backward-kill-word))
 :custom
 (vertico-cycle t)
 :init
 (vertico-mode))

Marginalia

(use-package marginalia
 :after vertico
 :custom
 (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-ligh nil))
 :init
 (marginalia-mode))

Orderless

(use-package orderless
 :config
 (setq completion-styles '(orderless basic)))

Consult

(use-package consult)

Which key

(use-package which-key
 :defer 0
 :diminish
 :config
 (which-key-mode 1)
 (setq which-key-side-window-location 'bottom
	which-key-sort-order #'which-key-key-order-alpha
	which-key-allow-imprecise-window-fit nil
	which-key-sort-uppercase-first nil
	which-key-add-column-padding 1
	which-key-max-display-columns nil
	which-key-min-display-lines 6
	which-key-side-window-slot -10
	which-key-side-window-max-height 0.25
	which-key-idle-delay 0.8
	which-key-max-description-length 25
	which-key-allow-imprecise-window-fit nil
	which-key-separator " → " ))

Complemento de texto/código

Company

(use-package company
 :defer 2
 :diminish
 :custom
 (company-begin-commands '(self-insert-command))
 (company-idle-delay .1)
 (company-minimum-prefix-length 2)
 (company-show-numbers t)
 (company-tooltip-align-annotations t)
 (global-company-mode t)
 (company-require-match nil)
 :config
 ;; TAB não navega nem completa no company
 (define-key company-active-map (kbd "TAB") nil)
 (define-key company-active-map (kbd "<tab>") nil)
 ;; ENTER aceita a seleção
 (define-key company-active-map (kbd "RET")
 #'company-complete-selection)
 ;; Priorizar snippets no menu
 (setq company-backends
 '((company-yasnippet company-capf company-files))))

Company Box (exibe ícones no Company)

(use-package company-box
 :after company
 :diminish
 :hook (company-mode . company-box-mode))

Destaque de pares

Rainbow Delimiters

(use-package rainbow-delimiters
 :hook ((prog-mode . rainbow-delimiters-mode))
 :config
 (set-face-foreground 'rainbow-delimiters-depth-1-face "#c66")
 (set-face-foreground 'rainbow-delimiters-depth-2-face "#6c6")
 (set-face-foreground 'rainbow-delimiters-depth-3-face "#69f")
 (set-face-foreground 'rainbow-delimiters-depth-4-face "#cc6")
 (set-face-foreground 'rainbow-delimiters-depth-5-face "#6cc")
 (set-face-foreground 'rainbow-delimiters-depth-6-face "#c6c")
 (set-face-foreground 'rainbow-delimiters-depth-7-face "#ccc")
 (set-face-foreground 'rainbow-delimiters-depth-8-face "#999")
 (set-face-foreground 'rainbow-delimiters-depth-9-face "#666"))

Rainbow Mode (visualização de cores)

(use-package rainbow-mode
 :hook (prog-mode . rainbow-mode))

Projetos

Gerenciamento de Git (MaGit)

(use-package magit
 :defer 2
 :custom
 (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))

Projectile

(use-package projectile
 :diminish projectile-mode
 :config
 (projectile-mode))

NeoTree

(use-package neotree
 :bind (("C-\\" . 'neotree-toggle))
 :config
 (setq neo-smart-open t
	projectile-switch-project-action 'neotree-projectile-action))

Treemacs

(use-package treemacs
 :ensure t
 :defer t
 :config
 ;; Ajustes visuais
 (setq treemacs-width 30
 treemacs-indentation 2
 treemacs-position 'right
 treemacs-is-never-other-window t
 treemacs-show-hidden-files t)
 ;; Ativar ícones (se tiver fonts compatíveis)
 (when (fboundp 'treemacs-resize-icons)
 (treemacs-resize-icons 14)))
;; Integração LSP + Treemacs
(use-package lsp-treemacs
 :after (lsp-mode treemacs)
 :ensure t
 :config
 ;; Opções adicionais (customizáveis)
 (setq lsp-treemacs-error-list-current-project t) ;; mostrar erros só do projeto atual
 (setq lsp-treemacs-sync-mode t)) ;; mantém erros e símbolos atualizados

Suporte a linguagens

Common Lisp (Sly)

Requer sbcl e quicllisp instalados!

(use-package sly
 :commands (sly)
 :hook (lisp-mode . sly)
 :config (setq inferior-lisp-program "/usr/bin/sbcl"))

Web Mode

(use-package web-mode
 :mode ("\\.html?\\'" "\\.css\\'" "\\.php\\'")
 :config
 (setq web-mode-enable-css-colorization t)
 (setq web-mode-enable-auto-pairing t)
 (setq web-mode-enable-comment-keywords t)
 (setq web-mode-enable-current-element-highlight t))

PHP Mode

(use-package php-mode
 :mode "\\.php\\'"
 :config
 (add-hook 'php-mode-hook
 (lambda ()
 (set (make-local-variable 'company-backends)
 '((company-php company-files))))
 (setq php-manual-path "/usr/share/doc/php-doc/manual")
 (setq php-manual-url "http://www.php.net/manual/en/")))

C Mode

(use-package cc-mode
 :config
 (defun bmacs/c-mode-config ()
 "Configuração personalizada para C-mode."
 (c-set-style "k&r")
 (setq c-default-style "k&r"
 c-basic-offset 4
 indent-tabs-mode nil))
 :hook ((c-mode-common . bmacs/c-mode-config)))

Assembly NASM

(use-package nasm-mode
 :mode "\\.asm\\'")

Markdown

(use-package markdown-mode
 :mode "\\.md\\'"
 :config
 (setq markdown-command "pandoc")
 (setq markdown-asymmetric-header t)
 (setq markdown-header-scaling t)
 (setq markdown-enable-math t))

Markdown Preview

(use-package markdown-preview-mode
 :commands markdown-preview)

Correção ortográfica em markdown

(add-hook 'markdown-mode-hook 'flyspell-mode)

Verificação de sintaxe e servidores de linguagens

Flycheck

(use-package flycheck
 :init (global-flycheck-mode))

LSP Mode (PHP, Web, C/C++)

(use-package lsp-mode
 :hook ((web-mode . lsp)
 (php-mode . lsp)
	 (c-mode . lsp)
	 (c++-mode . lsp))
 :commands lsp
 :config
 (setq lsp-clients-clangd-executable "/usr/bin/clangd") 
 (setq lsp-completion-provider :capf))

LSP UI

(use-package lsp-ui
 :commands lsp-ui-mode
 :after lsp-mode
 :hook (lsp-mode . lsp-ui-mode))

Snippets (YASnippet)

(use-package yasnippet
 :init (setq yas-snippet-dirs '("~/git/bmacs/yas"))
 :hook ((prog-mode . yas-minor-mode))
 :config (yas-reload-all))

Verificação ortográfica

Flyspell (aspell/pt-BR)

(use-package flyspell
 :init
 (setq ispell-program-name "aspell")
 (setq ispell-extra-args '("--sug-mode=ultra" "--lang=pt_BR"))
 :hook ((text-mode . flyspell-mode)
 (prog-mode . flyspell-prog-mode))
 :config
 (setq flyspell-issue-welcome-flag nil
 flyspell-issue-message-flag nil))

Flyspell Correct (interfaces adicionais para o Flyspell)

(use-package flyspell-correct
 :after flyspell
 :custom
 (flyspell-correct-interface #'flyspell-correct-completing-read))

Terminal

Vterm

(use-package vterm
 :defer 2
 :config
 (setq shell-file-name "/bin/bash"
	vterm-max-scrollback 5000))

Vterm Toggle

(use-package vterm-toggle
 :after vterm
 :config
 (evil-define-key 'normal vterm-mode-map (kbd "<escape>") 'vterm--self-insert)
 (setq vterm-toggle-fullscreen-p nil)
 (setq vterm-toggle-scope 'project)
 (add-to-list 'display-buffer-alist
 '((lambda (buffer-or-name _)
 (let ((buffer (get-buffer buffer-or-name)))
 (with-current-buffer buffer
 (or (equal major-mode 'vterm-mode)
 (string-prefix-p vterm-buffer-name (buffer-name buffer))))))
 (display-buffer-reuse-window display-buffer-at-bottom)
 (reusable-frames . visible)
 (window-height . 0.3))))

Org Mode

Org Tempo (templates de blocos)

(with-eval-after-load 'org
 (require 'org-tempo)
 (setq org-structure-template-alist
 '(("b" . "src bash :results code")
 ("c" . "comment")
 ("e" . "example")
 ("el" . "src emacs-lisp")
 ("h" . "export html")
 ("l" . "src lisp :results org")
 ("m" . "center")
 ("q" . "quote")
 ("s" . "src")
 ("t" . "src emacs-lisp :tangle FILENAME")
 ("T" . "src emacs-lisp :tangle FILENAME :mkdirp yes")
 ("x" . "export"))))

Evita fechamento de pares <> em Org Mode

(add-hook 'org-mode-hook (lambda ()
			 (setq-local electric-pair-inhibit-predicate
				 `(lambda (c)
					 (if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))

Org Indent

(require 'org-indent)
(setq org-edit-src-content-indentation 0)
(add-hook 'org-mode-hook 'org-indent-mode)
(eval-after-load 'org-indent '(diminish 'org-indent-mode))

Quebra de linhas na coluna 80

(add-hook 'org-mode-hook (lambda () (setq fill-column 80)))

Visual Fill Column (para centralizar texto)

(use-package visual-fill-column
 ;; Descomentar se quiser iniciar sempre com org mode centralizado.
 ;; :hook (org-mode . visual-fill-column-mode)
 :config
 (setq visual-fill-column-width 90)
 (setq-default visual-fill-column-center-text t))

Org Appear (exibir/ocultar marcações)

(use-package org-appear
 :hook (org-mode . org-appear-mode)
 :config
 (setq org-hide-emphasis-markers t)
 (setq org-appear-autolinks t
 org-appear-autosubmarkers t
 org-appear-autokeywords t
 org-appear-delay 0))

Estilos dos cabeçalhos

(with-eval-after-load 'org
 (set-face-attribute 'org-level-1 nil :foreground "#93b7FF" :weight 'bold)
 (set-face-attribute 'org-level-2 nil :foreground "#60B093" :weight 'bold)
 (set-face-attribute 'org-level-3 nil :foreground "#A865FF" :weight 'bold)
 (set-face-attribute 'org-level-4 nil :foreground "#DDBB67" :weight 'bold)
 (set-face-attribute 'org-level-5 nil :foreground "#4E9EB4" :weight 'bold)
 (set-face-attribute 'org-level-6 nil :foreground "#E97A83" :weight 'bold)
 (set-face-attribute 'org-level-7 nil :foreground "#6D89CF" :weight 'bold)
 (set-face-attribute 'org-level-8 nil :foreground "#96A8D4" :weight 'bold))

Org Bullets

(use-package org-bullets
 :hook (org-mode . org-bullets-mode)
 :config
 (setq org-bullets-bullet-list '("✸" "❖" "だいやまーく" "⯈" "◇" "•" "•" "•")))

Substituição das reticências

(setq org-ellipsis " ⤵ ")

Exportações

Requisitos:

  • O pacote ox-pandoc requer a instalação do pandoc no sistema.
  • A exportação para LaTeX/PDF requer texlive e texlive-latex-extra instalados no sistema.

Pandoc

(use-package ox-pandoc
 :after org
 :defer 2
 :config
 ;; Ativar a exportação pandoc como backend de exportação padrão
 (setq org-pandoc-options-for-html5 '((standalone . t)))
 (setq org-pandoc-options-for-markdown '((standalone . t)))
 ;; Definir os formatos adicionais de exportação
 (add-to-list 'org-export-backends 'pandoc))

GFM

(use-package ox-gfm
 :after org
 :defer 2
 :config
 ;; Adicionar 'gfm' ao backend de exportação
 (add-to-list 'org-export-backends 'gfm))

EPUB

(use-package ox-epub
 :after org
 :defer 2
 :config
 ;; Adicionar 'epub' ao backend de exportação
 (add-to-list 'org-export-backends 'epub))

Mapeamento de leader keys (General)

(use-package general
 :after evil
 :config
 (general-evil-setup)
 ;; set up 'SPC' as the global leader key
 (general-create-definer bmacs/leader-keys
 :states '(normal insert visual emacs)
 :keymaps 'override
 :prefix "SPC" ;; set leader
 :global-prefix "M-SPC") ;; access leader in insert mode
 (bmacs/leader-keys
 "RET" '(consult-bookmark :wk "Open bookmark")
 "TAB" '(:ignore t :wk "Comment")
 "TAB TAB" '(comment-line :wk "Comment lines")) 
 ;; Buffer/bookmarks
 (bmacs/leader-keys
 "b" '(:ignore t :wk "Buffers/Bookmarks")
 "b b" '(consult-buffer :wk "Switch to buffer")
 "b i" '(ibuffer :wk "Ibuffer")
 "b k" '(kill-current-buffer :wk "Kill current buffer")
 "b s" '(basic-save-buffer :wk "Save buffer")
 "b m" '(:ignore t :wk "Bookmark")
 "b m m" '(bookmark-set :wk "Set bookmark")
 "b m l" '(list-bookmarks :wk "List bookmarks")
 "b n" '(bmacs/select-new-buffer-type :wk "Create new buffer")
 "q" '(:ignore t :wk "Quit Emacs")
 "q q" '(save-buffers-kill-terminal :wk "Are you sure?")) 
 ;; Windows
 (bmacs/leader-keys
 "w" '(:ignore t :wk "Windows")
 "w w" '(evil-window-next :wk "Next window")
 "w l" '(evil-window-right :wk "Window right")
 "w k" '(evil-window-up :wk "Window up")
 "w j" '(evil-window-down :wk "Window down")
 "w h" '(evil-window-left :"Window left")
 "w L" '(evil-window-move-far-right :wk "Swap to the right")
 "w H" '(evil-window-move-far-left :wk "Swap to the left")
 "w K" '(evil-window-move-very-top :wk "Swap to the top")
 "w J" '(evil-window-move-very-bottom :wk "Swap to the bottom")
 "w c" '(evil-window-delete :wk "Close window")
 "w q" '(evil-quit :wk "Close window, buffer, frame")
 "w n" '(evil-window-new :wk "New window")
 "w s" '(evil-window-split :wk "Horizontal split window")
 "w v" '(evil-window-vsplit :wk "Vertical split window")
 "w =" '(balance-windows :wk "Balance windows sizes")
 "w m" '(delete-other-windows :wk "Maximize window"))
 ;; Sly
 (bmacs/leader-keys
 "s" '(:ignore t :wk "Sly")
 "s o" '(sly :wk "Start Sly")
 "s e" '(sly-eval-last-expression :wk "Eval last expression")
 "s r" '(sly-eval-region :wk "Eval region")
 "s l" '(sly-loaf-file :wk "Load file")
 "s k" '(sly-compile-and-load-file :wk "Compile and load file")
 "s c" '(sly-compile-defun :wk "Compile top level form"))
 ;; Files
 (bmacs/leader-keys
 "f" '(:ignore t :wk "Files")
 "." '(find-file :wk "Find file")
 "f f" '(find-file :wk "Find file")
 "f b" '(bmacs/open-bmacs-file :wk "Open BMACS functions")
 "f r" '(consult-recent-file :wk "Recent files")
 "f e" '(bmacs/open-emacs-settings-dir :wk "Open Emacs config dir")
 "f p" '(project-find-file :wk "Open project file")
 "f o" '(bmacs/open-org-dir :wk "Open org file")
 "f t" '(bmacs/open-bmacs-templates-dir :wk "Open templates dir")
 "f l" '(bmacs/open-lisp-projects-dir :wk "Open Lisp projects dir")
 "f c" '(bmacs/open-emacs-config :wk "Open Emacs config"))
 ;; Insert
 (bmacs/leader-keys
 "i" '(:ignore t :w "Insert")
 "i l" '(org-insert-link :w "Org insert link")
 "i t" '(org-time-stamp :w "Org date/time"))
 ;; Jumps
 (bmacs/leader-keys
 "j" '(:ignore t :wk "Jump")
 "j g" '(consult-line :wk "Grep this buffer")
 "j o" '(consult-outline :wk "Outline headers"))
 ;; Toggles
 (bmacs/leader-keys
 "t" '(:ignore t :wk "Toggle")
 "t f" '(bmacs/visual-fill-column-toggle :wk "Visual fill column")
 "t c" '(display-fill-column-indicator-mode :wk "Column indicator")
 "t l" '(org-toggle-link-display :wk "Org expand links")
 "t n" '(org-toggle-narrow-to-subtree :wk "Narrow to subtree")
 "t r" '(rainbow-mode :wk "Color preview")
 "t s" '(flyspell-mode :wk "Spell checking")
 "t t" '(vterm-toggle :wk "Terminal")
 "t T" '(consult-theme :wk "Themes")
 "t k" '(keycast-tab-bar-mode :wk "Keycast"))
 ;; Open
 (bmacs/leader-keys
 "o" '(:ignore t :wk "Open")
 "o g" '(magit :wk "Magit")
 "o r" '(ielm :wk "Emacs Lisp REPL")
 "o t" '(vterm-toggle :wk "Terminal"))
 ;; Eval
 (bmacs/leader-keys
 "e" '(:ignore t :wk "Eval/Reload settings")
 "e e" '(eval-last-sexp :wk "Eval expression")
 "e r" '(eval-region :wk "Eval region")
 "e b" '(eval-buffer :wk "Eval buffer")
 "e i" '(bmacs/reload-settings :wk "Reload Emacs settings"))
 ;; Restart Emacs
 (bmacs/leader-keys
 "r" '(:ignore t :wk "Restart")
 "r r" '(restart-emacs :wk "Restart Emacs")) 
 ;; Flyspell
 (bmacs/leader-keys
 "z" '(:ignore t :wk "Spell")
 "z =" '(flyspell-correct-at-point :wk "Correct word at point")
 "z g" '(bmacs/add-word-to-dict :wk "Add word to dictionary"))
 ;; LSP-Treemacs
 (bmacs/leader-keys
 "l" '(:ignore t :wk "LSP-treemacs lists")
 "l e" '(lsp-treemacs-errors-list :wk "Errors")
 "l s" '(lsp-treemacs-symbols :wk "Symbols")
 "l r" '(lsp-treemacs-references :wk "References"))
 ;; Help
 (bmacs/leader-keys
 "h" '(:ignore t :wk "Help")
 "h p" '(describe-package :wk "Describe package")
 "h s" '(describe-symbol :wk "Describe symbol")
 "h v" '(describe-variable :wk "Describe variable")
 "h f" '(describe-function :wk "Describe function")
 "h k" '(describe-key :wk "Describe key")))

Definições pessoais

Diretório de projetos em Common Lisp (pessoal)

(setq bmacs/local-projects-dir "~/git/lclisp/quicklisp/local-projects/")

Arquivo de dicionário pessoal

(setq ispell-personal-dictionary "~/.config/personal.dict")

Fontes

(set-face-attribute 'default nil :font "JetBrainsMono NF ExtraLight 13")
(set-face-attribute 'variable-pitch nil :font "JetBrainsMono NF ExtraLight 13")
(set-face-attribute 'fixed-pitch nil :font "JetBrainsMono NF ExtraLight 13")

Comentários em itálico

(set-face-attribute 'font-lock-comment-face nil :slant 'italic)