feat: another big uppdate

This commit is contained in:
drymer 2021-08-25 00:34:47 +02:00
parent 4a2f192f37
commit f853558cbe
Signed by: drymer
GPG Key ID: A307D64D5DDFDAAD
1 changed files with 210 additions and 109 deletions

View File

@ -1,9 +1,10 @@
#+title: Mi configuración de emacs
#+STARTUP: indent
#+PROPERTY: header-args :mkdirp yes
#+hugo_base_dir: ../
#+hugo_base_dir: ../BadDaemons/
#+hugo_section: pages
* Tabla de contenido :TOC_5_org:
* Tabla de contenido :TOC_5_org:
- [[Acerca de este documento][Acerca de este documento]]
- [[Configurar el init.el][Configurar el init.el]]
- [[Configurar el bind léxico][Configurar el bind léxico]]
@ -23,6 +24,7 @@
- [[Tema][Tema]]
- [[Kill-ring-max][Kill-ring-max]]
- [[url accionables][url accionables]]
- [[Expander el PATH][Expander el PATH]]
- [[org-mode][org-mode]]
- [[Agenda][Agenda]]
- [[Definir archivos de la agenda][Definir archivos de la agenda]]
@ -43,31 +45,32 @@
- [[org-clock-convenience][org-clock-convenience]]
- [[Edición, diseño y varios][Edición, diseño y varios]]
- [[Mostrar horas en vez dias][Mostrar horas en vez dias]]
- [[Mostrar popups de org-mode más grandes][Mostrar popups de org-mode más grandes]]
- [[org-mru-clock][org-mru-clock]]
- [[Mapear org-cycle][Mapear org-cycle]]
- [[Mostrar solo las cabeceras][Mostrar solo las cabeceras]]
- [[org-superstar][org-superstar]]
- [[Asignar keybinds][Asignar keybinds]]
- [[Misc][Misc]]
- [[Flycheck][Flycheck]]
- [[elisp][elisp]]
- [[package-lint][package-lint]]
- [[python-mode][python-mode]]
- [[python][python]]
- [[Javascript][Javascript]]
- [[compile-mode][compile-mode]]
- [[ivy-mode / counsel-mode / swipper-mode][ivy-mode / counsel-mode / swipper-mode]]
- [[counsel-rg][counsel-rg]]
- [[undo-tree][undo-tree]]
- [[docker][docker]]
- [[go-mode][go-mode]]
- [[hl-todo][hl-todo]]
- [[vue-mode][vue-mode]]
- [[magit-mode][magit-mode]]
- [[Plantilla en magit][Plantilla en magit]]
- [[HOLD Abrir cz en una terminal][HOLD Abrir cz en una terminal]]
- [[Abrir cz en una terminal][Abrir cz en una terminal]]
- [[vterm-mode][vterm-mode]]
- [[evil-hardcore-mode][evil-hardcore-mode]]
- [[Cambiar atajos de doom][Cambiar atajos de doom]]
- [[Hacer gifs con camcorder.el][Hacer gifs con camcorder.el]]
- [[Deshabilitar numeros en los laterales][Deshabilitar numeros en los laterales]]
- [[Insertar fechas][Insertar fechas]]
- [[Documentación][Documentación]]
- [[Popups][Popups]]
- [[En progreso / Pendiente][En progreso / Pendiente]]
- [[molecule][molecule]]
- [[Autenticación para terraform][Autenticación para terraform]]
@ -118,21 +121,18 @@ Aquí es donde se define toda la configuración que *no* se modificará en este
#+BEGIN_SRC elisp :tangle init.el
(doom! :completion
(company +childframe )
(company +childframe)
(ivy +fuzzy +icons)
:tools
(magit +forge)
pass
pdf
make
ansible
(docker +lsp)
(terraform +lsp)
terraform
(lsp +peek)
eval
debugger
(lookup +docsets +dictionary)
(lookup +docsets +dictionary +offline)
(eval +overlay)
:checkers
@ -152,7 +152,7 @@ Aquí es donde se define toda la configuración que *no* se modificará en este
:lang
data
emacs-lisp
java
(java +lsp)
markdown
php
ruby
@ -161,20 +161,20 @@ Aquí es donde se define toda la configuración que *no* se modificará en este
(sh +lsp)
(go +lsp)
(python +lsp)
(org +brain +pretty)
(org +brain +hugo +roam +dragndrop)
(java +lsp)
(json +lsp)
(yaml +lsp)
(yaml)
:app
calendar
everywhere
:editor
(evil +everywhere)
multiple-cursors
snippets
file-templates
(format +onsave)
format
fold
word-wrap
@ -183,11 +183,12 @@ Aquí es donde se define toda la configuración que *no* se modificará en este
(default +bindings +smartparens)
:ui
treemacs
doom
doom-dashboard
modeline
doom-quit
(popup +all +defaults +hacks)
(popup +all +defaults)
hl-todo
nav-flash
unicode
@ -195,10 +196,12 @@ Aquí es donde se define toda la configuración que *no* se modificará en este
vc-gutter
workspaces
ophints
fill-column
)
(emoji +ascii +github +unicode)
hydra)
#+END_SRC
#+RESULTS:
* Configuración Genérica
** Seguridad de las conexiones
#+BEGIN_SRC elisp
@ -274,6 +277,12 @@ Fuente: http://puntoblogspot.blogspot.com/2018/10/kill-ring-max-is-thing.html?m=
:commands (goto-address-prog-mode
goto-address-mode))
#+END_SRC
** Expander el PATH
#+begin_src elisp
(add-to-list 'exec-path (concat (getenv "HOME") "/.bin/"))
(add-to-list 'exec-path "/opt/go/bin")
(add-to-list 'exec-path "/opt/brew/bin")
#+end_src
* org-mode
org-mode merece tener la configuración a parte. Ahí va.
@ -471,48 +480,60 @@ Referencias:
*** Capturas de notas
#+BEGIN_SRC elisp
(setq org-capture-templates
'(
("r" "Reuniones" entry (file "~/Documentos/org/inbox.org")
(file "~/.doom.d/org-capture-templates/reuniones.org")
:clock-in t :clock-resume t)
;; Para reuniones de seguimiento, tener el arbol partido en días
("rs" "Reuniones semanales" entry (file "~/Documentos/org/inbox.org")
(file "~/.doom.d/org-capture-templates/reuniones-periodicas.org")
:clock-in t :clock-resume t)
;; Para cuando voy a comer en el trabajo
("c" "Comida" entry
(file+olp "~/Documentos/org/trabajo.org" "Meta" "Recurrentes" "Comidas")
"* Comida %(emacswiki/insert-current-date) "
:clock-in t :clock-resume t)
;; Meter fecha debajo de un header principal para no tener chorrocientos "Dailies"
("d" "Daily" entry (file+olp "~/Documentos/org/trabajo.org" "Meta" "Recurrentes" "Dailies")
"* Daily %(emacswiki/insert-current-date)" :clock-in t :clock-resume t)
("a" "Atraco" entry (file "~/Documentos/org/inbox.org")
"* %?\n" :clock-in t :clock-resume t)
("tr" "Tarea con reloj" entry (file "~/Documentos/org/inbox.org")
"* %? %^G\n%U\n" :clock-in t :clock-resume t)
("tn" "Tarea simple" entry (file "~/Documentos/org/inbox.org")
"* %? %^G\n%U\n")
;; Revisiones
("rsp" "Revisión Semanal Personal" entry (file+olp+datetree "~/Documentos/org/log.org" "Revisión Semanal")
(file "~/.doom.d/org-capture-templates/personal-weekly-review.org"))
("rst" "Revisión Semanal Trabajo" entry (file+headline "~/Documentos/org/trabajo.org" "Revisión Semanal")
(file "~/.doom.d/org-capture-templates/work-weekly-review.org"))
("sn" "Sprint Nuevo Trabajo" entry (file "~/Documentos/org/trabajo.org")
(file "~/.doom.d/org-capture-templates/new-sprint.org"))
("sp" "Sprint Nuevo Personal" entry (file "~/Documentos/org/scrum.org")
(file "~/.doom.d/org-capture-templates/new-personal-sprint.org"))
("e" "Estado de la vida" entry (file "~/Documentos/org/index.org")
(file "~/.doom.d/org-capture-templates/estado-de-la-vida.org"))
("m" "Captura desde correo" entry (file "~/Documentos/org/inbox.org") "* %? %^G\n%U\n%a\n" :clock-in t :clock-resume t)
("log" "Log" entry (file+olp+datetree "~/Documentos/org/log.org" "Log")
(file "~/.doom.d/org-capture-templates/log.org") :time-prompt t)
("L" "Protocol Link" entry (file+headline ,(concat org-directory "notes.org") "Inbox")
"* %? [[%:link][%:description]] \nCaptured On: %U") ("p" "Protocol" entry (file+headline "~/Documentos/org/inbox.org" "Links")
"* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?")
("b" "Articulo" entry (file "~/Proyectos/BadDaemons/content-org/articulos.org")
"* TODO %(read-string \"Insert title: \")\n:PROPERTIES:\n:EXPORT_FILE_NAME: %(org-hugo-slug (nth 4 (org-heading-components)))\n:END:")))
(after! org
(setq org-capture-templates
'(
("r" "Reuniones" entry (file "~/Documentos/org/inbox.org")
(file "~/.doom.d/org-capture-templates/reuniones.org")
:clock-in t :clock-resume t)
;; Para reuniones de seguimiento, tener el arbol partido en días
("rs" "Reuniones semanales" entry (file "~/Documentos/org/inbox.org")
(file "~/.doom.d/org-capture-templates/reuniones-periodicas.org")
:clock-in t :clock-resume t)
;; Para cuando voy a comer en el trabajo
("c" "Comida" entry
(file+olp "~/Documentos/org/trabajo.org" "Meta" "Recurrentes" "Comidas")
"* Comida %(emacswiki/insert-current-date) "
:clock-in t :clock-resume t)
;; Meter fecha debajo de un header principal para no tener chorrocientos "Dailies"
("d" "Daily" entry (file+olp "~/Documentos/org/trabajo.org" "Meta" "Recurrentes" "Dailies")
"* Daily %(emacswiki/insert-current-date)" :clock-in t :clock-resume t)
("a" "Atraco" entry (file "~/Documentos/org/inbox.org")
"* %?\n" :clock-in t :clock-resume t)
("tr" "Tarea con reloj" entry (file "~/Documentos/org/inbox.org")
"* %? %^G\n%U\n" :clock-in t :clock-resume t)
("tn" "Tarea simple" entry (file "~/Documentos/org/inbox.org")
"* %? %^G\n%U\n")
;; Revisiones
("rsp" "Revisión Semanal Personal" entry (file+olp+datetree "~/Documentos/org/log.org" "Revisión Semanal")
(file "~/.doom.d/org-capture-templates/personal-weekly-review.org"))
("rst" "Revisión Semanal Trabajo" entry (file+headline "~/Documentos/org/trabajo.org" "Revisión Semanal")
(file "~/.doom.d/org-capture-templates/work-weekly-review.org"))
("sn" "Sprint Nuevo Trabajo" entry (file "~/Documentos/org/trabajo.org")
(file "~/.doom.d/org-capture-templates/new-sprint.org"))
("sp" "Sprint Nuevo Personal" entry (file "~/Documentos/org/scrum.org")
(file "~/.doom.d/org-capture-templates/new-personal-sprint.org"))
("e" "Estado de la vida" entry (file "~/Documentos/org/index.org")
(file "~/.doom.d/org-capture-templates/estado-de-la-vida.org"))
("m" "Captura desde correo" entry (file "~/Documentos/org/inbox.org") "* %? %^G\n%U\n%a\n" :clock-in t :clock-resume t)
("log" "Log" entry (file+olp+datetree "~/Documentos/org/log.org" "Log")
(file "~/.doom.d/org-capture-templates/log.org") :time-prompt t)
// La funcion falla
("roam" "roam" entry (file ,(concat "~/org/roam/" (daemons/insert-current-date-and-time) "-%:description.org"))
"#+TITLE: %^{Title}\n#+roam_tags:\n- contexto ::\n- referencias ::\n\n%?"
)
("b" "Articulo" entry (file "~/Proyectos/BadDaemons/content-org/articulos.org")
"* TODO %(read-string \"Insert title: \")\n:PROPERTIES:\n:EXPORT_FILE_NAME: %(org-hugo-slug (nth 4 (org-heading-components)))\n:END:")))
(setq org-roam-ref-capture-templates '(("d" "default" plain (function org-roam--capture-get-point)
"#+TITLE: ${title}\n#+roam_tags:\n- contexto ::\n- referencias ::\n\n%?"
:file-name "%<%Y%m%d%H%M%S>-${slug}"
:unnarrowed t)))
)
#+END_SRC
Referencias:
@ -535,7 +556,8 @@ Los estados que tienen el símbolo =@= son los que, al escogerlos, abren un buff
*** Refile
Mover un arbol debajo de otro del mismo fichero o de los archivos de las agendas.
#+BEGIN_SRC elisp
(setq org-refile-targets '((nil :maxlevel . 10) (org-agenda-files . (:maxlevel . 10))))
(after! org
(setq org-refile-targets '((nil :maxlevel . 10) (org-agenda-files . (:maxlevel . 10)))))
#+END_SRC
Crear nodo si no existe:
@ -771,10 +793,6 @@ subprojects from INPROGRESS back to TODO"
#+BEGIN_SRC elisp
(setq org-duration-format 'h:mm)
#+END_SRC
*** Mostrar popups de org-mode más grandes
#+BEGIN_SRC elisp
(set-popup-rule! "agenda" :size 0.50 :select t)
#+END_SRC
*** org-mru-clock
#+BEGIN_SRC elisp :tangle packages.el
(package! org-mru-clock)
@ -812,11 +830,20 @@ subprojects from INPROGRESS back to TODO"
(setq org-startup-folded t)
#+END_SRC
*** org-superstar
#+BEGIN_SRC elisp :tangle packages.el
(package! org-superstar)
#+END_SRC
#+BEGIN_SRC elisp
(use-package! org-superstar :config (add-hook 'org-mode-hook (lambda () (org-superstar-mode 1))))
#+END_SRC
** Asignar keybinds
#+BEGIN_SRC elisp
(after! org
(map! [remap outline-toggle-children] #'org-cycle)
(map! (:leader
:desc "Org Capture" "X" #'counsel-org-capture
(:desc "brain stuff"
:prefix "k"
:desc "Brain refile" :n "r" #'org-brain-refile
@ -854,6 +881,25 @@ subprojects from INPROGRESS back to TODO"
#+END_SRC
* Misc
** Flycheck
#+begin_src elisp
;; (defvar-local my/flycheck-local-cache nil)
;; (defun my/flycheck-checker-get (fn checker property)
;; (or (alist-get property (alist-get checker my/flycheck-local-cache))
;; (funcall fn checker property)))
;; (advice-add 'flycheck-checker-get :around 'my/flycheck-checker-get)
;; (add-hook 'lsp-managed-mode-hook
;; (lambda ()
;; (when (derived-mode-p 'sh-mode)
;; (setq my/flycheck-local-cache '((lsp . ((next-checkers . (sh-posix-bash)))))))
;; (when (derived-mode-p 'web-mode)
;; (setq my/flycheck-local-cache '((lsp . ((next-checkers . (javascript-eslint)))))))
;; ))
#+end_src
** elisp
*** package-lint
Linter de problemas habituales de paquetes de melpa:
@ -866,7 +912,7 @@ Linter de problemas habituales de paquetes de melpa:
(use-package! package-lint :defer t))
#+END_SRC
** python-mode
** python
#+BEGIN_SRC elisp
(defun daemons/docker-tox ()
@ -889,6 +935,38 @@ docker run -ti -v `pwd`:/tox/files/ registry.daemons.it/tox:latest tox "$@"
#+END_SRC
De esta forma, ejecuto =tox-current-class= una vez y el del tiempo ejecuto =recompile=.
** Javascript
Linter:
#+begin_src elisp
(setq lsp-javascript-implicit-project-config-check-js t)
(setq lsp-typescript-implementations-code-lens-enabled t)
(setq lsp-typescript-references-code-lens-enabled t)
(setq lsp-typescript-references-code-lens-enabled t)
(add-hook! 'lsp-after-initialize-hook
(run-hooks (intern (format "%s-lsp-hook" major-mode))))
(defun daemons/eslint-flycheck-setup ()
(flycheck-add-next-checker 'lsp 'javascript-eslint))
(add-hook 'web-mode-lsp-hook
#'daemons/eslint-flycheck-setup)
(add-hook 'javascript-mode-lsp-hook
#'daemons/eslint-flycheck-setup)
(add-hook 'typescript-mode-lsp-hook
#'daemons/eslint-flycheck-setup)
#+end_src
Formatter:
#+begin_src elisp
(setq lsp-vetur-format-enable nil)
(setq-hook! 'web-mode-hook +format-with-lsp nil)
(setq-hook! 'javascript-mode-hook +format-with-lsp nil)
(setq-hook! 'typescript-mode-hook +format-with-lsp nil)
(set-formatter! 'prettier-eslint "prettier-eslint --write" :ok-statuses '(0 1))
(setq-hook! 'web-mode-hook +format-with 'prettier-eslint)
(setq-hook! 'javascript-mode-hook +format-with 'prettier-eslint)
(setq-hook! 'typescript-mode-hook +format-with 'prettier-eslint)
#+end_src
** compile-mode
Varias herramientas usan el modo compile, como =molecule.el=:
#+BEGIN_SRC elisp
@ -898,14 +976,12 @@ Varias herramientas usan el modo compile, como =molecule.el=:
:config
(setq compilation-skip-threshold 2)
(setq compilation-scroll-output 'next-error)
(set-popup-rule! "*compilation*" :size 0.40 :quit nil)
(defun colorize-compilation-buffer ()
(let ((inhibit-read-only t))
(ansi-color-apply-on-region (point-min) (point-max))))
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
(setq compilation-scroll-output 'first-error))
#+END_SRC
** ivy-mode / counsel-mode / swipper-mode
Cambiar un poco el formato de ivy.
@ -916,12 +992,6 @@ Cambiar un poco el formato de ivy.
(setq counsel-find-file-at-point t))
#+END_SRC
** counsel-rg
Seguir enlaces simbólicos:
#+BEGIN_SRC elisp
(setq counsel-rg-base-command "rg -L -S --no-heading --line-number --color never %s .")
#+END_SRC
** undo-tree
Personalizaciones para hacer que sea más chuli y que guarde la historia de cada fichero en un sitio común.
#+BEGIN_SRC elisp
@ -931,12 +1001,6 @@ Personalizaciones para hacer que sea más chuli y que guarde la historia de cada
(setq undo-tree-auto-save-history t)
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo-tree"))))
#+END_SRC
** docker
Uso la configuración por defecto de doom, pero me gusta que no muera el buffer de compilación:
#+BEGIN_SRC elisp
(set-popup-rule! "docker-build-output" :size 0.30 :select t)
#+END_SRC
** go-mode
Uso el de doom, que necesita las siguientes dependencias:
#+BEGIN_SRC bash :tangle bin/gomode.sh
@ -962,11 +1026,6 @@ Añadir un nuevo =TODO= para las cosas feas.
'("HACK" . "DarkRed"))
#+END_SRC
** vue-mode
#+BEGIN_SRC elisp :tangle nope.el
(package! vue-mode)
#+END_SRC
** magit-mode
Quiero usar [[https://commitizen-tools.github.io/commitizen/][commitizen]] en vez del commit pelado. Para ello tengo dos opciones, abrir una terminal que ejecute =cz= o usar una plantilla para los commits. La primera opción tiene la ventaja de que puede usar la configuración de =commitizen= del repositorio, que es lo bonico. Lo malo es que no he encontrado una forma de integralo bonito con magit. Por ello, de momento tiraré con la segunda opción, ya que no trabajo con más gente que use este plugin de git. En el caso de encontrarmelo, igual decidiré si creo varias plantillas o si intento mejorar la integración de magit con =commitizen=.
@ -983,9 +1042,9 @@ ${5:Footer. Information about Breaking Changes and reference issues that this co
(add-hook 'git-commit-setup-hook #'daemons/commitizen-template)
#+END_SRC
*** HOLD Abrir cz en una terminal
*** Abrir cz en una terminal
#+BEGIN_SRC elisp :tangle nope.el
#+BEGIN_SRC elisp
(defun phalp/run-in-vterm (command)
"Execute string COMMAND in a new vterm.
@ -1017,11 +1076,6 @@ shell exits, the buffer is killed."
(vterm-send-return)))
(defun daemons/commitizen-gz() (interactive) (phalp/run-in-vterm "git cz commit; exit"))
(map! :leader
(:prefix-map ("g" . "git")
(:prefix ("c" . "create")
:desc "Commit" "c" #'daemons/commitizen-gz)))
#+END_SRC
** vterm-mode
@ -1070,23 +1124,70 @@ Cambiar los atajos por unos que me gustan más.
)
#+END_SRC
** Hacer gifs con camcorder.el
#+BEGIN_SRC elisp :tangle packages.el
(package! camcorder)
#+END_SRC
#+BEGIN_SRC elisp
(use-package camcorder
:ensure t
:config
(setq camcorder-recording-command '("recordmydesktop" " --fps 100 --no-sound --windowid " window-id " -o " file)))
#+END_SRC
** Deshabilitar numeros en los laterales
#+BEGIN_SRC elisp
(setq doom-line-numbers-style nil)
(setq display-line-numbers-type nil)
#+END_SRC
** Insertar fechas
Esta la he cogido de emacswiki:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun emacswiki/insert-current-date ()
(interactive)
(shell-command-to-string "echo -n $(date +%Y-%m-%d)"))
#+END_SRC
Siguiendo la misma tonica:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun daemons/insert-current-month-number ()
(interactive)
(shell-command-to-string "echo -n $(date +%m)"))
#+END_SRC
Siguiendo la misma tonica:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun daemons/insert-current-year-number ()
(interactive)
(shell-command-to-string "echo -n $(date +%Y)"))
#+END_SRC
Siguiendo la misma tonica:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun daemons/insert-current-week-number ()
(interactive)
(shell-command-to-string "echo -n $(date +%V)"))
#+END_SRC
Fecha de la semana que viene:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun daemons/insert-next-week()
(interactive)
(shell-command-to-string "echo -n $(date -d 'next week' '+%m %d %Y')"))
#+END_SRC
Fecha y hora actual:
#+BEGIN_SRC emacs-lisp :tangle daemons/default/config.el
(defun daemons/insert-current-date-and-time ()
(interactive)
(shell-command-to-string "echo -n $(date +%Y%m%d%H%M%S)"))
#+END_SRC
** Documentación
#+begin_src emacs-lisp :tangle daemons/default/config.el
(setq +lookup-open-url-fn #'eww)
#+end_src
** Popups
#+begin_src elisp
(set-popup-rule! "agenda" :size 0.50 :select t :quit nil)
(set-popup-rule! "^CAPTURE" :size 0.50 :select t :quit nil)
(set-popup-rule! "*compilation*" :size 0.40 :select nil :quit nil)
(set-popup-rule! "^ivy-occur*" :size 0.40 :select nil :quit nil)
(set-popup-rule! "*grep*" :size 0.40 :select nil :quit nil)
(set-popup-rule! "docker-build-output" :size 0.40 :select t)
(set-popup-rule! "^\\*helpful*" :size 0.40 :select nil :quit nil)
#+end_src
* En progreso / Pendiente
En esta sección van las cosas que no tengo muy provadas o tengo a medio configurar.
** molecule