emacs-humanities/config.org

903 lines
27 KiB
Org Mode
Raw Permalink Normal View History

#+title: Emacs Humanities
#+author: Aabm
2020-08-21 05:19:41 +02:00
#+startup: overview
* Sobre esta configuração
O Emacs Humanities é uma configuração para o GNU Emacs preparada para
a produção de documentos acadêmicos das Ciências Humanas, usando o
Emacs por ser um dos editores de LaTeX mais poderosos e por seu
org-mode.
A documentação inclusa aqui ainda está em elaboração.
** TODO Coisas a fazer
2020-08-21 03:09:10 +02:00
*** TODO Adicionar melhor suporte para escrita de LaTeX pelo AucTeX
Atualmente o Emacs Humanities não possui configuração específica para
a produção de documentos LaTeX diretamente. Por enquanto recomendo que
2020-08-21 03:09:10 +02:00
façam tais documentos pelo org-mode com inserção de blocos LaTeX.
É perfeitamente possível escrever LaTeX na configuração atual; só não
há nenhum aprimoramento em relação à experiência padrão. De qualquer
maneira, o Emacs é completamente extensível e programável, e esta
configuração é software livre: você tem a liberdade e a possibilidade
de modificá-la como quiser e adicionar o que quiser.
2020-08-21 03:09:10 +02:00
*** TODO Adicionar suporte para pacotes de Estatística, mais especificamente o ESS
- O ESS pode ser usado para programação em R, Julia e outras linguagens
- Código em R pode ser incluído em documentos org e exportado para PDFs pela compilação de LaTeX
* Licensa
2020-08-21 17:26:40 +02:00
#+begin_src emacs-lisp
;;; ------------------------------------------------------------------
;; LICENSE
;; Copyright © 2020 Aabm <aabm@disroot.org>
;; Author: Aabm <aabm@disroot.org>
;; URL: <https://git.snopyta.org/aabm/emacs-humanities/>
;; This file is not part of GNU Emacs.
;;
;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program, see the file LICENSE. If not, see
;; <http://www.gnu.org/licenses/>
;;; ------------------------------------------------------------------
2020-08-21 05:56:08 +02:00
#+end_src
Uma tradução não oficial para português brasileiro da licensa acima
pode ser encontrada em:
http://licencas.softwarelivre.org/gpl-3.0.pt-br.html
* Credenciais do usuário
Esta seção carrega um arquivo de credenciais pessoais, que podem ser
utilizadas em diversas situações.
#+begin_src emacs-lisp
;;; Carrega o arquivo de credenciais se possível
(when (file-readable-p (concat user-emacs-directory "creds.el"))
(load-file (concat user-emacs-directory "creds.el")))
#+end_src
Se você quiser utilizar suas credenciais, basta criar um arquivo
chamado "creds.el" no mesmo diretório desta configuração com conteúdo
similar ao exemplo, menos os comentários:
#+begin_src emacs-lisp
;;; Exemplo de configuração de credenciais pessoais:
;; (setq user-full-name "Seu Nome Aqui"
;; user-mail-address "seu@email.aqui"
;; calendar-location-name "Cidade, Estado")
#+end_src
Estas credenciais podem ser utilizadas automaticamente por algumas
funções, como a inserção automática de nome de autor em arquivos =org=
exportados para PDF pelo LaTeX.
* Configurações gerais
** Habilitando teclas de atalho "avançadas"
Por padrão, o Emacs considera algumas funções como "avançadas", e
portanto não recomendadas para usuários inexperientes. Quando
acessadas, um prompt aparece perguntando se o usuário deseja seguir em
frente. Essas funções são raramente usadas pela maior parte dos
usuários, mas reabilitamos elas para evitarmos o aviso.
#+begin_src emacs-lisp
(put 'dired-find-alternate-file 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(setq disabled-command-function nil)
#+end_src
** Formatação de texto
Aqui garantimos que toda a codificação de texto seja feita sob o
padrão UTF-8, que é universal. Também configuramos indentação de
código, para programação ocasional.
#+begin_src emacs-lisp
;;; Usar UTF-8 por padrão
(prefer-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-language-environment 'utf-8)
(set-default-coding-systems 'utf-8)
(setq locale-coding-system 'utf-8)
(setq org-export-coding-system 'utf-8)
;;; Configurações de indentação
(setq-default tab-width 4)
;;; Carregar pacote para caracteres não ingleses
(require 'iso-transl)
#+end_src
** Exibição de texto
As configurações encontradas aqui são um pouco mais variadas, mas em
geral se tratam da maneira que texto e informações textuais são
exibidas ao usuário; Coisas como números de linha, realce de sintaxe,
etc.
#+begin_src emacs-lisp
;;; Exibir números de linha em modos de programação
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
;;; Realçar linha do cursorn
(add-hook 'prog-mode-hook 'hl-line-mode)
(add-hook 'text-mode-hook 'hl-line-mode)
(add-hook 'org-mode-hook 'hl-line-mode)
;;; Desabilitar a continuação de linhas extensas
(setq truncate-lines nil)
(setq org-startup-truncated nil)
;;; Realçar parênteses
(show-paren-mode 1)
;;; Melhor navegação de linhas dobradas
(global-visual-line-mode t)
;;; Embelezar símbolos.
(global-prettify-symbols-mode t)
#+end_src
** Opções da interface gráfica
Estas são configurações básicas relacionadas à interface gráfica.
#+begin_src emacs-lisp
;; Desabilitar tela e mensagem de início padrão
(setq inhibit-startup-message t)
(setq inhibit-startup-echo-area-message t)
;; Desabilitar mensagem do scratch buffer
(setq initial-scratch-message nil)
;; org-mode como modo padrão do scratch buffer
(setq initial-major-mode 'org-mode)
;; Melhores nomes para buffers de arquivos com mesmos nomes
(require 'uniquify)
(setq uniquify-buffer-name-style 'forward)
;; Exibir números de linha e coluna na modeline
(line-number-mode t)
(column-number-mode t)
#+end_src
** Changing defaults
Aqui alteramos ou desabilitamos alguns comportamentos indesejáveis que
são padrão no Emacs. Mais notáveis são o chamado "scroll
não-conservador", em que todo o buffer rola quando o cursor muda para
uma linha fora da tela, e o não uso da área de transferência do
sistema.
#+begin_src emacs-lisp
;;; Habilitar o scroll conservador. Difícil viver sem essa opção.
(setq scroll-conservatively 100)
;;; Desabilitar o sinal auditivo de aviso
(setq ring-bell-function 'ignore)
;;; Usar área de transferência do Xorg
(setq x-select-enable-clipboard t)
;;; Nada de backups ou autosaves.
(setq make-backup-files nil)
(setq auto-save-default nil)
;;; Substituir todos os prompts de "yes or no" por "y or n".
(defalias 'yes-or-no-p 'y-or-n-p)
;;; Recarregar buffers automaticamente quando eles forem alterados no disco.
(global-auto-revert-mode t)
#+end_src
** Configuring other basic features
*** Electric pairs
Os electric pairs servem para completar caracteres de abertura como
parênteses com seus respectivos caracteres de fechamento. Útil para
uso com parênteses e aspas.
#+begin_src emacs-lisp
(setq electric-pair-pairs '(
(?\{ . ?\})
(?\( . ?\))
(?\[ . ?\])
(?\" . ?\")
))
(electric-pair-mode t)
#+end_src
* Pacotes básicos
** Async
Uma biblioteca para processamento assíncrono. Utilizamos ela para
facilitar algumas operações, como cópia e movimento de arquivos.
#+begin_src emacs-lisp
(use-package async
:ensure t
:init
(dired-async-mode t)
(async-bytecomp-package-mode t))
#+end_src
** Which-key
O which-key é um pacote muito utilizado em configurações prontas do
Emacs. Serve para exibir um "menu guia" das teclas de atalho ao
usuário. É ele que aparece quando se aperta alguma tecla de atalho
incompleta, como C-x. Permite ao usuário descobrir tanto sobre atalhos
de teclas padrão quanto customizados, de maneira intuitiva.
#+begin_src emacs-lisp
(use-package which-key
:ensure t
:init
(which-key-mode))
#+end_src
** General
O General.el é um pacote feito para simplificar as declarações de
teclas de atalho customizadas.
#+begin_src emacs-lisp
(use-package general
:ensure t)
#+end_src
** Swiper/Ivy/Counsel
O Ivy é um pacote leve porém poderoso para autocompleção de prompts e
pesquisa /fuzzy matching/. Aqui é utilizado para substituir ações como
find-file ou switch-buffer. Também o combinamos com o Counsel, que
aprimora as funções do Ivy e adiciona novas, ainda mais úteis. O
ivy-rich é uma extensão que adiciona mais informação aos menus do
Ivy.
O Swiper é uma ferramenta de busca, utilizada para buscar por texto ou
expressões regulares dentro de um buffer.
Todas essas ferramentas tem suas teclas de atalho definidas em outra
seção desta configuração.
#+begin_src emacs-lisp
(use-package ivy
:ensure t
:init
(ivy-mode)
:custom
(enable-recursive-minibuffers t))
(use-package counsel
:ensure t
:init
(counsel-mode))
(use-package ivy-rich
:ensure t
:init
(ivy-rich-mode))
(use-package swiper
:ensure t)
#+end_src
2020-08-21 03:09:10 +02:00
** Magit
O Magit é uma das mais populares extensões do Emacs. É uma interface
completa para o git, um dos principais sistemas de controle de versão
existentes. O Magit torna o uso do git muito mais simples, e elimina a
necessidade de se aprender os comandos mais esotéricos e obscuros que
acabam sendo necessários para se usar o git devidamente. O git não é
só um programa para programadores; é na verdade uma excelente
ferramenta para produção de quaisquer projetos colaborativos com
colegas. Pode ser acessado pressionando C-x g.
2020-08-21 03:09:10 +02:00
#+begin_src emacs-lisp
(use-package magit
:ensure t)
#+end_src
* Edição de texto
** Expand-region
O expand-region é um pacote para seleção de texto por meio de expansão
de unidades semânticas. Pode ser acessado pressionando C-=.
#+begin_src emacs-lisp
(use-package expand-region
:ensure t)
#+end_src
2020-08-21 03:09:10 +02:00
** Undo Tree
O undo-tree é uma extensão que permite visualizar todo as suas
alterações de undo e redo (desfazer e refazer) a um buffer como uma
árvore com galhos divergentes. Assim, é possível visualizar todas as
iterações de um texto, e fazer decisões sobre quais versões manter ao
2020-08-28 04:12:59 +02:00
final. Pode ser acessado pressionando C-x u.
2020-08-21 03:09:10 +02:00
#+begin_src emacs-lisp
(use-package undo-tree
:ensure t
:init
(undo-tree-mode))
#+end_src
* Escrita, anotações e leitura
** Básicos de org-mode
*** Configurações gerais
#+begin_src emacs-lisp
;; Diretório padrão org.
(setq org-directory "~/docs/org/")
;; Impedir tarefa de ser marcada como feita se ainda tiver
;; dependências incompletas.
(setq org-enforce-todo-dependencies t)
(setq org-enforce-todo-checkbox-dependencies t)
;; Opções cosméticas
2020-09-02 21:01:38 +02:00
(setq org-ellipsis "⬎")
(setq org-hide-leading-stars t)
(add-hook 'org-mode-hook 'org-indent-mode)
;; Inserir estampa de data ao fechar TODOs
(setq org-log-done 'time)
;; (setq org-log-done 'note)
;; Habilitar indentação nativa em blocos de código fonte
(setq org-src-tab-acts-natively t)
;; Habilitar realce de sintaxe em blocos de código fonte
(setq org-src-fontify-natively t)
;; Usar janela atual para editar blocos de código fonte
(setq org-src-window-setup 'current-window)
#+end_src
*** Capture
#+begin_src emacs-lisp
;; Diretório padrão para anotações do org-capture
(setq org-default-notes-file (concat org-directory "agenda.org"))
#+end_src
*** Agenda
#+begin_src emacs-lisp
;; Arquivos para serem lido pela agenda
(setq org-archive-location (concat org-directory "agenda.org"))
#+end_src
*** Modelos estruturais
#+begin_src emacs-lisp
(setq org-structure-template-alist
'(("c" . "center\n")
("d" . "src text :tangle ~/.\n")
("e" . "src emacs-lisp\n")
("h" . "export html\n")
("l" . "export latex\n")
("q" . "quote\n")
("s" . "src")
("v" . "verse\n")))
#+end_src
*** Teclas de atalho
#+begin_src emacs-lisp
(general-define-key
:keymaps 'org-mode-map
"C-M-n" 'org-metadown
"C-M-p" 'org-metaup
"M-n" 'org-forward-element
"M-p" 'org-backward-element)
#+end_src
** Mapas mentais com org-roam
O org-roam é um sistema para interligação de anotações, seguindo o
método Zettelkasten. Sua principal função é possbilitar a criação de
um verdadeiro mapa mental do usuário. O mapa pode então ser
visualizado usando o org-roam-server, facilitando sua navegação.
#+begin_src emacs-lisp
(use-package org-roam
:ensure t
:config
(org-roam-mode)
(require 'org-roam-protocol)
:custom
(org-roam-directory "~/docs/roam/")
(org-roam-index-file "~/docs/roam/index.org")
(org-roam-completion-system 'ivy)
(org-roam-graph-executable "/usr/bin/neato")
(org-roam-graph-extra-config '(("overlap" . "false"))))
(use-package org-roam-server
:ensure t
:custom
(org-roam-server-host "127.0.0.1")
(org-roam-server-port 8080)
(org-roam-server-export-inline-images t)
(org-roam-server-authenticate nil)
(org-roam-server-network-poll t)
(org-roam-server-network-arrows nil)
(org-roam-server-network-label-truncate t)
(org-roam-server-network-label-truncate-length 60)
(org-roam-server-network-label-wrap-length 20))
(use-package org-roam-bibtex
:ensure t)
;; Deft is useful for searching through notes
(use-package deft
:ensure t
:bind
:custom
(deft-recursive t)
(deft-use-filter-string-for-filename t)
(deft-default-extension "org")
(deft-directory "~/docs/roam/"))
;; Templates for creating new notes
(setq org-roam-capture-templates
'(("t" "tagged" plain (function org-roam--capture-get-point)
"#+date:%T\n#+startup: overview\n#+roam_tags: %?\n#+roam_alias:"
:file-name "%<%Y%m%d%H%M%S>-${slug}"
:head "#+title: ${title}\n"
:unnarrowed t)))
#+end_src
** Visualização de texto com olivetti-mode
O olivetti-mode serve para centralizar texto na tela para melhor
concentração durante a escrita ou leitura.
#+begin_src emacs-lisp
(use-package olivetti
:ensure t)
#+end_src
** Leitura de PDFs com pdf-tools
O pdf-tools é um leitor de PDFs dentro do Emacs, utilizando o epdfinfo
e a biblioteca poppler como backend. Aqui definimos teclas de atalho e
algumas funções de utilidade.
#+begin_src emacs-lisp
(use-package pdf-tools
:ensure t
:defer nil
:config
(pdf-loader-install)
:custom
(pdf-view-resize-factor 1.1)
(pdf-view-continuous nil)
(pdf-view-display-size 'fit-page)
:bind (:map pdf-view-mode-map
("C-s" . isearch-forward)
("C-r" . isearch-backward)
("C-c d" . pdf-view-midnight-minor-mode)
2020-08-21 03:09:10 +02:00
("C-c z" . ehum/pdf-view-open-in-zathura)
("C-c p" . ehum/pdf-view-show-current-page)
("C-c t" . ehum/pdf-view-continuous-toggle )
("C-a" . image-scroll-right)
("C-e" . image-scroll-left)))
2020-08-21 03:09:10 +02:00
(defun ehum/pdf-view-continuous-toggle ()
(interactive)
(cond ((not pdf-view-continuous)
(setq pdf-view-continuous t)
(message "Page scrolling: Continous"))
(t
(setq pdf-view-continuous nil)
(message "Page scrolling: Constrained"))))
2020-08-21 03:09:10 +02:00
(defun ehum/pdf-view-open-in-zathura ()
"Open the current PDF with zathura."
(interactive)
(save-window-excursion
(let ((current-file (buffer-file-name))
(current-page (number-to-string (pdf-view-current-page))))
(async-shell-command
(format "zathura -P %s \"%s\"" current-page current-file))))
(message "Sent to Zathura"))
2020-08-21 03:09:10 +02:00
(defun ehum/pdf-view-show-current-page ()
"Show the current page."
(interactive)
(message "Page: %s" (pdf-view-current-page)))
#+end_src
** Leitura de epubs com nov.el
O nov.el é um leitor de livros digitais em formato epub. Aqui
garantimos que ele seja sempre usado junto com o Olivetti-mode para
uma melhor experiência.
#+begin_src emacs-lisp
(use-package nov
:ensure t
:init
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
:custom
(olivetti-body-width 104)
:hook
(nov-mode . olivetti-mode))
#+end_src
** Gerenciamento de referências bibliográficas com BibTeX
O ivy-bibtex é uma ferramenta para inserção de referências
bibliográficas no formato BibTeX, usando o Ivy.
#+begin_src emacs-lisp
;; Ivy-bibtex is a
(use-package ivy-bibtex
:ensure t
:bind*
("C-x C-r" . ivy-bibtex)
:custom
(bibtex-completion-bibliography "~/docs/tex/refs.bib")
;; default is to open pdf - change that to insert citation
(ivy-bibtex-default-action #'ivy-bibtex-insert-citation))
(defalias 'helm-bibtex 'ivy-bibtex)
#+end_src
** Edição de LaTeX com AUCTeX
#+begin_src emacs-lisp
(use-package auctex
:ensure t
:custom
;; Sempre compilar TeX para PDFs
2020-08-29 03:42:27 +02:00
(TeX-PDF-mode t)
;; Utilizar o pdf-tools para visualizar PDFs
(TeX-view-program-selection '((output-pdf "PDF Tools")))
(TeX-source-correlate-start-server t)
:hook
;; Automaticamente atualizar o PDF visualizado após compilação
(TeX-after-compilation-finished-functions . TeX-revert-document-buffer))
#+end_src
2020-08-29 03:42:27 +02:00
2020-08-29 03:32:17 +02:00
** Verificação ortográfica com Flyspell
#+begin_src emacs-lisp
(use-package flyspell
:ensure t
2020-08-31 21:20:21 +02:00
:custom
2020-09-06 15:31:27 +02:00
(ispell-program-name "aspell")
2020-08-29 03:32:17 +02:00
:hook
(text-mode . flyspell-mode)
(org-mode . flyspell-mode)
(prog-mode . flyspell-prog-mode))
#+end_src
2020-08-21 03:09:10 +02:00
* Funções customizadas
** Atualizar o Emacs Humanities
2020-08-21 03:09:10 +02:00
#+begin_src emacs-lisp
(defun ehum/atualizar-configuração ()
"Atualiza o Emacs Humanities para sua versão mais recente. Requer git instalado no sistema."
(interactive)
(let ((dir (expand-file-name user-emacs-directory)))
(if (file-exists-p dir)
(progn
(message "Atualizando configuração")
(cd dir)
(shell-command "git pull")
(message "Atualização finalizada com sucesso. Reinicie o Emacs para que quaisquer mudanças tomem efeito."))
(message "\"%s\" arquivo não encontrado." dir))))
#+end_src
** Gerar scratch buffers
#+begin_src emacs-lisp
(defun ehum/generate-org-buffer ()
"Cria um sratch buffer em org-mode. Útil para fazer anotações descartáveis rapidamente."
(interactive)
(switch-to-buffer (make-temp-name "org-"))
(org-mode))
#+end_src
** Eliminar buffer e janela
#+begin_src emacs-lisp
(defun ehum/kill-buffer-and-window ()
"Elimina o buffer e a janela atuais"
(interactive)
(progn
(kill-buffer)
(delete-window)))
#+end_src
** Melhor divisão de janelas
#+begin_src emacs-lisp
(defun ehum/split-follow-window-below ()
"Cria uma janela abaixo e muda o foco para ela. Substitui a função padrão split-window-below"
(interactive)
(split-window-below)
(balance-windows)
(other-window 1))
(defun ehum/split-follow-window-right ()
"Cria uma janela à direita e muda o foco para ela. Substitui a função padrão split-window-right"
(interactive)
(split-window-right)
(balance-windows)
(other-window 1))
#+end_src
** Encontrar arquivo de agenda
#+begin_src emacs-lisp
(defun ehum/find-org-agenda-file ()
"Abre o arquivo de agenda"
(interactive)
(find-file (car (org-agenda-files))))
#+end_src
* Teclas de atalho globais
** Definindo teclas de prefixo
#+begin_src emacs-lisp
;; Configura as teclas começando com C-z.
(global-unset-key "\C-z")
(defalias 'C-z-keymap (make-sparse-keymap))
(defvar C-z-map (symbol-function 'C-z-keymap)
"Global keymap for characters following C-z.")
(define-key global-map "\C-z" 'C-z-keymap)
#+end_src
2020-08-21 03:09:10 +02:00
** Definindo teclas de atalho
#+begin_src emacs-lisp
(general-define-key
;; Teclas C-z
;; Gerenciando buffers
"C-z b o" 'ehum/generate-org-buffer
;; Teclas com prefixos comuns
;; Gerenciamento de janelas
"C-x 2" 'ehum/split-follow-window-below
"C-x 3" 'ehum/split-follow-window-right
;; Gerenciando buffers
"C-x k" 'kill-this-buffer
"C-x C-k" 'ehum/kill-buffer-and-window
"C-x C-b" 'ibuffer
;; Ivy/Counsel/Swiper
"C-s" 'swiper
"C-r" 'swiper-backward
"C-x C-f" 'counsel-find-file
"C-x b" 'counsel-switch-buffer
"C-x r b" 'counsel-bookmark
"M-x" 'counsel-M-x
"C-h f" 'counsel-describe-function
"C-h v" 'counsel-describe-variable
"C-h o" 'counsel-describe-symbol
;; Org-mode
"C-x a" 'org-agenda
"C-x C-a" 'ehum/find-org-agenda-file
"C-x c" 'org-capture
"C-c l" 'org-store-link
;; Org-roam
"C-z C-f" 'org-roam-find-file
"C-z C-l" 'org-roam-insert
"C-z C-x" 'org-roam-graph
"C-z C-c" 'org-roam-server-mode
2020-08-21 03:09:10 +02:00
"C-z C-s" 'deft
;; Outras utilidades
"C-x g" 'magit
"C-x u" 'undo-tree
"M-/" 'hippie-expand
"C-=" 'er/expand-region
2020-08-21 03:09:10 +02:00
)
#+end_src
* Tema e aparência
** Beacon
O beacon é um pacote bem simples. Ele simplesmente faz seu cursor
piscar levemente quando você muda pra outra janela ou buffer ou faz um
movimento grande, tornando mais fácil localizar o cursor depois de se
mover.
#+begin_src emacs-lisp
(use-package beacon
:ensure t
:init
(beacon-mode))
#+end_src
** Dashboard
O dashboard é o pacote utilizado pelo Emacs Humanities para criar a
tela de início customizada que você vê quando abre o Emacs. Aqui estão
todas as configurações dele, sinta-se livre para alterá-las como
quiser. Uma modificação simples seria mudar a logo exibida no
Dashboard alterando o valor da variável dashboard-startup-banner.
#+begin_src emacs-lisp
(use-package all-the-icons
:ensure t
:defer nil)
(use-package dashboard
:ensure t
:defer nil
:config
(dashboard-setup-startup-hook)
:custom
(dashboard-set-heading-icons t)
(dashboard-set-file-icons t)
(dashboard-items
'((recents . 5)
(agenda . 10)))
(dashboard-banner-logo-title "Bem-vindo ao Emacs Humanities!")
2020-08-30 02:28:38 +02:00
(dashboard-startup-banner 'logo)
(dashboard-center-content t)
(dashboard-show-shortcuts t)
2020-08-30 02:28:38 +02:00
(dashboard-set-init-info t)
(dashboard-set-footer nil)
(dashboard-set-navigator t)
(dashboard-navigator-buttons
`(;; line1
((,nil
"Sobre"
"Abrir a documentação local do Emacs Humanities"
(lambda (&rest _) (find-file "~/.emacs.d/README.org"))
'default)
(nil
2020-09-02 21:01:38 +02:00
"Gitea"
"Abra a página do gitea desta configuração"
(lambda (&rest _) (browse-url "https://git.snopyta.org/aabm/emacs-humanities"))
'default)
(nil
"Tutorial"
"Abrir o tutorial do Emacs no idioma desejado"
(lambda (&rest _) (help-with-tutorial-spec-language))
'default)
)
;; segunda linha
((,nil
"Configuração"
"Abrir o arquivo de configuração"
(lambda (&rest _) (find-file "~/.emacs.d/config.org"))
'default)
(nil
"Referência"
"Abrir a referência rápida do Emacs Humanities"
(lambda (&rest _) (find-file "~/.emacs.d/referencia.org"))
'default)
))))
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
#+end_src
** Doom modeline
A Doom Modeline é a barra de status customizada na parte inferior da
sua tela. Aqui estão todas as configurações que usamos para ela.
#+begin_src emacs-lisp
(use-package doom-modeline
:ensure t
:init
(doom-modeline-mode)
:custom
(doom-modeline-height 25)
(doom-modeline-bar-width 5)
(doom-modeline-project-detection 'project)
(doom-modeline-icon (display-graphic-p))
(doom-modeline-major-mode-icon t)
(doom-modeline-major-mode-color-icon t)
(doom-modeline-buffer-state-icon t)
(doom-modeline-buffer-modification-icon nil)
(doom-modeline-minor-modes nil)
(doom-modeline-enable-word-count t)
(doom-modeline-buffer-encoding nil)
(doom-modeline-persp-name nil))
#+end_src
2020-08-28 14:26:56 +02:00
** Org Superstar
#+begin_src emacs-lisp
(use-package org-superstar
:ensure t
:hook
(org-mode . org-superstar-mode))
#+end_src
** Elegance
Seção ainda em fase de testes e modificações.
#+begin_src emacs-lisp
;; (when (file-readable-p (concat user-emacs-directory "elegance.el"))
;; (load-file (concat user-emacs-directory "elegance.el")))
;; (when (file-readable-p (concat user-emacs-directory "Welcome.org"))
;; (find-file-read-only (concat user-emacs-directory "Welcome.org")))
#+end_src
2020-08-28 03:52:21 +02:00
** Tema
Aqui instalamos os temas de cores Modus Operandi e Modus
Vivendi. Estes temas são feitos com acessibilidade visual em mente, e
seguindo especificações oficiais contraste e mais. O Modus Operandi é
o tema padrão do Emacs Humanities, por ter aparência simples e
profissional. Mais informações na [[https://protesilaos.com/modus-themes/][página dos temas Modus]].
Também instalamos o pacote de temas do [[https://github.com/hlissner/doom-emacs][Doom Emacs]], que inclui temas
mais coloridos, assim como reimplementações de esquemas de cores
populares como [[https://ethanschoonover.com/solarized/][Solarized]], [[https://github.com/morhetz/gruvbox][Gruvbox]] e [[https://draculatheme.com/][Dracula]].
Para mudar o tema utilizado pelo Emacs, altere a declaração de
=load-theme= abaixo para utilizar o nome do seu tema preferido, depois
reinicie o Emacs. Você pode ver e testar os temas disponíveis
utilizando =M-x load-theme=
#+begin_src emacs-lisp
(use-package modus-operandi-theme
:ensure t)
(use-package modus-vivendi-theme
:ensure t)
(use-package doom-themes
:ensure t
:custom
(doom-themes-enable-bold t)
(doom-themes-enable-italic t)
:config
(doom-themes-org-config))
(load-theme 'modus-operandi t)
#+end_src
** Opções do frame
2020-08-21 03:09:10 +02:00
Aqui definimos opções do frame (janela) do Emacs, como título, tamanho
inicial e fonte padrão. Encorajamos você a mudar a fonte de acordo com
sua preferência pessoal. O ideal é usar uma fonte monospace, ou de
espaçamento único, como a Source Code Pro aqui usada. Algumas
recomendações de fontes monospace: Iosevka, Inconsolata, Roboto Mono e
Terminus.
2020-08-21 03:09:10 +02:00
#+begin_src emacs-lisp
;; Título do frame
(setq frame-title-format "%b")
;; Tamanho padrão do frame
(add-to-list 'default-frame-alist '(width . 90))
(add-to-list 'default-frame-alist '(height . 35))
2020-08-21 03:09:10 +02:00
;; Fontes.
(set-frame-font "Source Code Pro 13" nil t)
(add-to-list 'default-frame-alist '(font . "Source Code Pro 13"))
#+end_src