Compare commits
137 Commits
ff85e08450
...
master
Author | SHA1 | Date | |
---|---|---|---|
6388d5c0bb | |||
cc1fb2a0c9 | |||
4fc380750e | |||
564e6dbac5 | |||
2a1309ecaa | |||
d12c13c027 | |||
3c7ac83e3f | |||
089b056916 | |||
c0a0bc347c | |||
f2faff5f3f | |||
d497b12805 | |||
ed5f25fb4d | |||
f48e200fe7 | |||
668a2c3c91 | |||
cb8a4dcd75 | |||
4749773a51 | |||
d41a4ce7ee | |||
5185766542 | |||
cf7b239bcb | |||
ad54b6e3c9 | |||
cab913064f | |||
c3aabfff88 | |||
a0a1282aa2 | |||
8e6fb27ec8 | |||
32078154c9 | |||
eac4af5029 | |||
f199adb367 | |||
4051c11dad | |||
6be143756c | |||
cfef8c9a4a | |||
fb5e2c8455 | |||
5ebecc1d4b | |||
64d60088cb | |||
dce274d8ff | |||
8133266734 | |||
147949285e | |||
9417dcf830 | |||
447b80428b | |||
95d9746fbf | |||
135671b5b9 | |||
45029768b9 | |||
9876be8389 | |||
9553b240d8 | |||
297416d1ce | |||
4148fff8a1 | |||
39862a753d | |||
85ad5c15b3 | |||
c3a2df6bef | |||
4ceabc679a | |||
4733bb46ac | |||
c97b3a974e | |||
9b1bd93ceb | |||
21185e0438 | |||
3f618a44e7 | |||
e99e71a6a5 | |||
adc3d07d35 | |||
2178a2e7cb | |||
c39574582f | |||
6972b11f0a | |||
8e8544960e | |||
1752b38dc1 | |||
b6dc907ad8 | |||
7d145f6200 | |||
8f0334c51b | |||
da816f098a | |||
4752f03dfc | |||
7134c41dfc | |||
ff22f194d4 | |||
f9329c4a32 | |||
30c890a155 | |||
4407141739 | |||
734d3cf08c | |||
c2792c0415 | |||
f64a8add03 | |||
092b1fb02c | |||
b3bc4df0c9 | |||
8d8a60878f | |||
5c45a7890a | |||
536c9d30e3 | |||
e54a28bb9d | |||
e663c02d97 | |||
4a1d3afb85 | |||
38254302e4 | |||
47554e0bca | |||
e7f8104cb6 | |||
4569080000 | |||
fc802c0db0 | |||
63f76373a5 | |||
5144fd405e | |||
e45141b894 | |||
b8cb8e3ad6 | |||
2fd710ea54 | |||
c292ca77d0 | |||
02577be8c7 | |||
a3ea9985e0 | |||
f5c35fd03c | |||
2e210421e3 | |||
b5a30921a7 | |||
a980735bd8 | |||
b95c3258ab | |||
e276cc0eec | |||
7eaa783f2e | |||
48afb56d36 | |||
3c6a7b371a | |||
baeb0a640b | |||
3660933143 | |||
d196afbe89 | |||
f6d5e2f925 | |||
f5a28724b0 | |||
30fbba45db | |||
dd1398415d | |||
07b4050a0d | |||
5ecf229620 | |||
4274a147f4 | |||
5d728d3a2f | |||
438baf6022 | |||
96ad111227 | |||
806c4c035f | |||
65e3ae4bd9 | |||
e9bc16a1a4 | |||
c90c19323b | |||
2c63d19cf4 | |||
1a4795f6e9 | |||
d588a9ed2e | |||
d22f24ad4b | |||
d3c68d1ac6 | |||
04a3c86321 | |||
6e7836ffb7 | |||
05249c8a2e | |||
7a38ae22bc | |||
870e9a44ac | |||
71367398d6 | |||
055b5151df | |||
f48e747299 | |||
887255253d | |||
0b3138b6c7 | |||
bdaef62ba5 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -30,3 +30,7 @@ workspace/
|
||||
/nov-places
|
||||
/devdocs/
|
||||
/.mc-lists.el
|
||||
/eshell/
|
||||
/.emacs.desktop
|
||||
/.tutor/
|
||||
/intelephense/
|
||||
|
31
abbrev_defs
Normal file
31
abbrev_defs
Normal file
@ -0,0 +1,31 @@
|
||||
;;-*-coding: utf-8;-*-
|
||||
(define-abbrev-table 'mhtml-mode-abbrev-table
|
||||
'(
|
||||
("doc" "<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=\"UTF-8\"/>
|
||||
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>" nil :count 1)
|
||||
("doctype" "<!DOCTYPE html>" nil :count 0)
|
||||
))
|
||||
|
||||
(define-abbrev-table 'web-mode-abbrev-table
|
||||
'(
|
||||
("doc" "<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=\"UTF-8\"/>
|
||||
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>" nil :count 9)
|
||||
("doctype" "<!DOCTYPE html>" nil :count 1)
|
||||
))
|
||||
|
46
configs/init-ai.el
Normal file
46
configs/init-ai.el
Normal file
@ -0,0 +1,46 @@
|
||||
;;; init-ai.el --- Configuración de inteligencias artificales -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Esta configuración para Inteligencia artifical en emacs, principalmente para el uso de chats.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Cliente LLM (ollama, chatgpt, gemini, etc.)
|
||||
(use-package gptel
|
||||
:defer t
|
||||
:config
|
||||
;; (setq gptel-model 'gemma3:4b
|
||||
;; gptel-backend (gptel-make-ollama "Ollama"
|
||||
;; :host "localhost:11434"
|
||||
;; :stream t
|
||||
;; :models '("mistral:latest"
|
||||
;; "deepseek-r1:1.5b"
|
||||
;; "deepcoder"
|
||||
;; "dolphin-llama3:latest"
|
||||
;; "gemma3:4b"
|
||||
;; "llava:latest"))
|
||||
gptel-default-mode 'org-mode
|
||||
gptel-prompt-prefix-alist
|
||||
'((markdown-mode . "# ")
|
||||
(org-mode . "* ")
|
||||
(text-mode . "# "))
|
||||
gptel-directives
|
||||
'((default . "Eres un LLM que vive dentro de Emacs. Responde de manera concisa.")
|
||||
(programming . "Eres un LLM y un programador profesional cuidadoso. Provee el código y solo el código como output sin ningún texto adicional, prompt o nota.")
|
||||
(programming_tutor . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y realiza sugerencias concisas en español para mejorarlo.")
|
||||
(programming_explainer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español de manera concisa, su funcionamiento.")
|
||||
(programming_describer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español su funcionamiento línea a línea.")
|
||||
(writing . "Eres un LLM y un asistente de escritura. Responde de manera concisa.")
|
||||
(grammarly . "You are a large language model and professional philologist. Improve grammar and spelling.")
|
||||
(chat . "Eres un LLM y un compañero de conversación. Responde de manera concisa.")
|
||||
(traductor . "Eres un traductor profesional. Traduce a español tomando en cuenta los posibles tecnicismos y nombres que no deberían traducirse.")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'init-ai)
|
||||
;;; init-ai.el ends here
|
@ -20,12 +20,12 @@
|
||||
))
|
||||
|
||||
;; Instalar elpaca.el (reemplpazando package.el)
|
||||
(defvar elpaca-installer-version 0.7)
|
||||
(defvar elpaca-installer-version 0.11)
|
||||
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
||||
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
|
||||
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
|
||||
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
|
||||
:ref nil
|
||||
:ref nil :depth 1 :inherit ignore
|
||||
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
|
||||
:build (:not elpaca--activate-package)))
|
||||
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
|
||||
@ -37,16 +37,18 @@
|
||||
(make-directory repo t)
|
||||
(when (< emacs-major-version 28) (require 'subr-x))
|
||||
(condition-case-unless-debug err
|
||||
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
|
||||
((zerop (call-process "git" nil buffer t "clone"
|
||||
(plist-get order :repo) repo)))
|
||||
((zerop (call-process "git" nil buffer t "checkout"
|
||||
(or (plist-get order :ref) "--"))))
|
||||
(emacs (concat invocation-directory invocation-name))
|
||||
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
|
||||
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
|
||||
((require 'elpaca))
|
||||
((elpaca-generate-autoloads "elpaca" repo)))
|
||||
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
|
||||
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
|
||||
,@(when-let* ((depth (plist-get order :depth)))
|
||||
(list (format "--depth=%d" depth) "--no-single-branch"))
|
||||
,(plist-get order :repo) ,repo))))
|
||||
((zerop (call-process "git" nil buffer t "checkout"
|
||||
(or (plist-get order :ref) "--"))))
|
||||
(emacs (concat invocation-directory invocation-name))
|
||||
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
|
||||
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
|
||||
((require 'elpaca))
|
||||
((elpaca-generate-autoloads "elpaca" repo)))
|
||||
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
|
||||
(error "%s" (with-current-buffer buffer (buffer-string))))
|
||||
((error) (warn "%s" err) (delete-directory repo 'recursive))))
|
||||
@ -81,10 +83,14 @@
|
||||
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
|
||||
|
||||
;; Emacs customizations
|
||||
(scroll-bar-mode -1) ; Quitar scrollbar.
|
||||
(when (display-graphic-p)
|
||||
(scroll-bar-mode -1) ; Quitar scrollbar.
|
||||
)
|
||||
(tooltip-mode -1) ; Disable tooltips.
|
||||
(global-display-line-numbers-mode) ; Mostar número de línea.
|
||||
(global-so-long-mode 1) ; Abrir archivos grandes o con líneas largas en el modo so-long por defecto.
|
||||
(show-paren-mode 1) ; Habilitar resaltado de brackets.
|
||||
(global-subword-mode 1) ; Habilitar subpalabras (detectar palabras dentro de un camelCase y Pascal case.)
|
||||
(pending-delete-mode t) ; Cuando selecciono un texto y escribo, el texto se borra (emacs por defecto solo escribe donde está el cursor).
|
||||
;; (global-hl-line-mode) ; Resaltar línea actual por defecto.
|
||||
(setq use-short-answers t) ; Usar respuesta cortas (y/n) en lugar de las largas (yes/no)
|
||||
@ -102,6 +108,8 @@
|
||||
)
|
||||
;; Leve transparencia en emacs por defecto.
|
||||
;; (set-frame-parameter nil 'alpha-background 95)
|
||||
;; Font por defecto
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
|
||||
|
||||
;; Backups enabled, use nil to disable
|
||||
(setq
|
||||
@ -119,11 +127,7 @@
|
||||
"Carga la configuración del modo daemon."
|
||||
(message "Corriendo en modo daemon.")
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
|
||||
|
||||
;; Abrir primero el dashboard
|
||||
(setq initial-buffer-choice (lambda ()
|
||||
(get-buffer "*dashboard*")
|
||||
(dashboard-refresh-buffer)))
|
||||
(scroll-bar-mode -1)
|
||||
|
||||
;; Cerrar buffers al cerrar emacsclient
|
||||
;; (add-hook 'delete-frame-functions
|
||||
|
@ -19,43 +19,78 @@
|
||||
:defer t
|
||||
:ensure (:files (:defaults "extensions/*")
|
||||
:includes (corfu-info corfu-history))
|
||||
:hook ((elpaca-after-init . global-corfu-mode)
|
||||
(corfu-mode . corfu-popupinfo-mode))
|
||||
:bind (("<escape>" . corfu-quit)
|
||||
("<SPC>" . corfu-insert-separator))
|
||||
:hook ((corfu-mode . corfu-popupinfo-mode))
|
||||
:bind (:map corfu-map
|
||||
("<tab>" . corfu-quit)
|
||||
("<escape>" . corfu-quit)
|
||||
("<SPC>" . corfu-insert-separator))
|
||||
:custom
|
||||
(corfu-auto t)
|
||||
:config
|
||||
(global-corfu-mode)
|
||||
(setq corfu-popupinfo-delay 0
|
||||
;; corfu-auto-delay 0.5
|
||||
corfu-auto-delay 1
|
||||
corfu-auto-prefix 1
|
||||
corfu-cycle t
|
||||
corfu-quit-at-boundary t
|
||||
corfu-preview-current nil
|
||||
corfu-quit-no-match t)
|
||||
(when (< emacs-major-version 29)
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent)
|
||||
(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-purify))
|
||||
(corfu-history-mode 1)
|
||||
(savehist-mode 1)
|
||||
(add-to-list 'savehist-additional-variables 'corfu-history)
|
||||
)
|
||||
|
||||
;; Cambia la forma de mostrar y buscar sugerencias (afecta a corfu, pero también a otros como vertico).
|
||||
(use-package orderless
|
||||
:config
|
||||
(setq completion-styles '(flex orderless basic)
|
||||
completion-category-overrides '((file (styles partial-completion)))))
|
||||
:defer t
|
||||
:after corfu
|
||||
:custom
|
||||
(completion-styles '(orderless)) ; Use orderless
|
||||
(completion-category-defaults nil) ; I want to be in control!
|
||||
(setq completion-ignore-case t)
|
||||
(completion-category-overrides '((file (styles basic partial-completion orderless))))
|
||||
(orderless-matching-styles
|
||||
'(orderless-literal
|
||||
orderless-prefixes
|
||||
orderless-initialism
|
||||
orderless-regexp
|
||||
orderless-flex ; Basically fuzzy finding
|
||||
;; orderless-strict-leading-initialism
|
||||
;; orderless-strict-initialism
|
||||
;; orderless-strict-full-initialism
|
||||
;; orderless-without-literal ; Recommended for dispatches instead
|
||||
))
|
||||
)
|
||||
|
||||
|
||||
;; Set de funciones de para las sugerencias de corfu.
|
||||
(use-package cape
|
||||
:defer t
|
||||
:ensure (:host github :repo "minad/cape")
|
||||
:after corfu
|
||||
:bind (("C-c f" . cape-file)
|
||||
("C-c l" . cape-line)
|
||||
("C-c _" . cape-tex))
|
||||
:init
|
||||
;; (advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
|
||||
(advice-add #'eglot-completion-at-point :around #'cape-wrap-nonexclusive)
|
||||
(add-to-list 'completion-at-point-functions #'cape-dabbrev) ;; Completar desde otras la palabras del buffer.
|
||||
(add-to-list 'completion-at-point-functions #'cape-file) ;; Completar rutas de archivos.
|
||||
(setq text-mode-ispell-word-completion nil)
|
||||
;; (add-to-list 'completion-at-point-functions #'cape-line) ;; Completar línea actual en función de lo que dice otras líneas de buffer.
|
||||
(add-to-list 'completion-at-point-functions #'cape-abbrev) ;; Completar desde una abreviaciónes configuradas con add-global-abbrev (añadir abreviación global) o add-mode-abbrev (abreviación para el modo actual).
|
||||
;; (add-to-list 'completion-at-point-functions #'cape-tex) ;; Completar Latex (caracteres unicode).
|
||||
(add-to-list 'completion-at-point-functions #'cape-dict) ;; Completar desde un diccionario (por defecto toma el de linux que está en /usr/share/dict/words).
|
||||
(add-to-list 'completion-at-point-functions #'cape-tex) ;; Completar Latex (caracteres unicode).
|
||||
(add-to-list 'completion-at-point-functions #'cape-dabbrev) ;; Completar desde otras la palabras del buffer.
|
||||
(add-to-list 'completion-at-point-functions #'cape-abbrev) ;; Completar desde una abreviaciónes configuradas con add-global-abbrev (añadir abreviación global) o add-mode-abbrev (abreviación para el modo actual).
|
||||
(add-to-list 'completion-at-point-functions #'cape-file) ;; Completar rutas de archivos.
|
||||
(add-to-list 'completion-at-point-functions #'cape-keyword) ;; Completar desde keyword del lenguaje.
|
||||
|
||||
(advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
|
||||
)
|
||||
|
||||
;; Hacer que corfu funcione en la terminal
|
||||
(unless (display-graphic-p)
|
||||
(use-package corfu-terminal
|
||||
:after corfu
|
||||
:ensure (:repo "https://codeberg.org/akib/emacs-corfu-terminal.git")
|
||||
:config
|
||||
(corfu-terminal-mode +1))
|
||||
|
@ -26,19 +26,12 @@
|
||||
("C-x c a" . citre-ace-peek)
|
||||
("C-x c u" . citre-update-this-tags-file))
|
||||
:init
|
||||
(require 'citre-config)
|
||||
(setq citre-auto-enable-citre-mode-modes '(prog-mode))
|
||||
(setq citre-auto-enable-citre-mode-modes '(prog-mode)
|
||||
citre-default-create-tags-file-location 'global-cache
|
||||
citre-prompt-language-for-ctags-command t)
|
||||
|
||||
:config
|
||||
(with-no-warnings
|
||||
(setq citre-default-create-tags-file-location 'global-cache
|
||||
;; citre-ctags-program "/usr/bin/ctags"
|
||||
;; citre-readtags-program "/usr/bin/readtags"
|
||||
citre-use-project-root-when-creating-tags t
|
||||
citre-prompt-language-for-ctags-command t)
|
||||
|
||||
(with-eval-after-load 'projectile
|
||||
(setq citre-project-root-function #'projectile-project-root))
|
||||
|
||||
;; Integrate with `lsp-mode' and `eglot'
|
||||
(define-advice xref--create-fetcher (:around (fn &rest args) fallback)
|
||||
(let ((fetcher (apply fn args))
|
||||
|
@ -31,32 +31,37 @@
|
||||
|
||||
(use-package eglot
|
||||
:defer t
|
||||
;; :ensure nil
|
||||
:hook ((css-mode . eglot-ensure)
|
||||
(html-mode . eglot-ensure)
|
||||
(php-mode . eglot-ensure)
|
||||
(rust-mode . eglot-ensure)
|
||||
(sh-mode . eglot-ensure))
|
||||
:ensure nil
|
||||
:hook ((css-mode . eglot-ensure)
|
||||
(html-mode . eglot-ensure)
|
||||
(php-mode . eglot-ensure)
|
||||
(php-ts-mode . eglot-ensure)
|
||||
(js-mode . eglot-ensure)
|
||||
(tsx-ts-mode . eglot-ensure)
|
||||
(typescript-ts-mode . eglot-ensure)
|
||||
(rust-mode . eglot-ensure)
|
||||
(sh-mode . eglot-ensure))
|
||||
:config
|
||||
(setq eglot-sync-connect 0)
|
||||
;; (add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
(add-to-list 'eglot-server-programs '(php-mode . ("phpactor" "language-server" "-vvv")))
|
||||
|
||||
;; (add-to-list 'eglot-ignored-server-capabilites :hoverProvider)
|
||||
;; (add-to-list 'eglot-server-programs '(css-mode . ("vscode-css-language-server" "--stdio")))
|
||||
;; (add-to-list 'eglot-server-programs '(html-mode . ("vscode-html-language-server" "--stdio")))
|
||||
;; (add-to-list 'eglot-server-programs '(html-mode . ("emmet-ls" "--stdio")))
|
||||
;; (add-to-list 'eglot-server-programs '(html-mode . ("emmet-language-server" "--stdio")))
|
||||
;; (add-to-list 'eglot-server-programs '(html-mode . (eglot-alternatives
|
||||
;; '(("vscode-html-language-server" "--stdio")
|
||||
;; ("emmet-language-server" "--stdio")))))
|
||||
|
||||
;; (add-hook 'eglot--managed-mode-hook (lambda () (flymake-mode -1)))
|
||||
(add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
)
|
||||
|
||||
;; Mejorar la velocidad de eglot (un binario en rust )
|
||||
(use-package eglot-booster
|
||||
:defer t
|
||||
:ensure (:host github :repo "jdtsmith/eglot-booster")
|
||||
:after eglot
|
||||
:config
|
||||
;;
|
||||
(if (executable-find "emacs-lsp-booster")
|
||||
(eglot-booster-mode)
|
||||
(message "No está instalado emacs-lsp-booster. Eglot se usará de modo normal."))
|
||||
)
|
||||
|
||||
;; Emmet (mientras veo como hacer funcionar emmet-ls)
|
||||
(use-package emmet-mode
|
||||
:defer t
|
||||
:after eglot
|
||||
:hook
|
||||
((html-mode . emmet-mode)
|
||||
(web-mode . emmet-mode))
|
||||
|
@ -14,21 +14,24 @@
|
||||
;;; Code:
|
||||
(use-package evil
|
||||
:defer t
|
||||
:hook (elpaca-after-init . evil-mode)
|
||||
:hook ((elpaca-after-init . evil-mode)
|
||||
(git-timemachine-mode . evil-emacs-state))
|
||||
:init
|
||||
(setq evil-want-keybinding nil)
|
||||
;; Habilitar atajos de de tecla de emacs en insert state
|
||||
(setq evil-disable-insert-state-bindings t)
|
||||
:config
|
||||
;; Configuraciones básicas
|
||||
;; (setq evil-default-state 'emacs) ;; Modo por defecto en emacs
|
||||
(setq evil-default-state 'insert) ;; Modo por defecto en emacs
|
||||
;; (setq evil-default-state 'insert) ;; Modo por defecto en emacs
|
||||
(setq evil-emacs-state-cursor 'bar) ;; Cursor de emacs state en bar
|
||||
;; (setq evil-normal-state-cursor 'bar) ;; Cursor de normal state en bar en lugar de box
|
||||
(evil-set-leader 'motion (kbd "SPC")) ;; Leader key
|
||||
(evil-set-undo-system 'undo-redo)
|
||||
|
||||
;; Habilitar atajos de de tecla de emacs en insert state
|
||||
(setq evil-insert-state-map (make-sparse-keymap))
|
||||
|
||||
;; Cerrar corfu y pasar a modo normal al presionar escape
|
||||
(evil-define-key 'insert 'global (kbd "<escape>") (lambda()
|
||||
;; Arreglar el problemita con corfu-quit y el cambio de modos
|
||||
(evil-define-key 'emacs 'global (kbd "<escape>") '(lambda ()
|
||||
"Call `corfu-quit' and then return to Normal State."
|
||||
(interactive)
|
||||
(call-interactively 'corfu-quit)
|
||||
(evil-normal-state)))
|
||||
@ -37,7 +40,7 @@
|
||||
;; Cambiar a mode emacs con escape
|
||||
;; (evil-define-key 'emacs 'global (kbd "<escape>") 'evil-normal-state)
|
||||
;; Cambiar Insert state por emacs state.
|
||||
;; (defalias 'evil-insert-state 'evil-emacs-state)
|
||||
(defalias 'evil-insert-state 'evil-emacs-state)
|
||||
|
||||
;; Variales locales (todos los estados o solo los estados de VIM)
|
||||
(setq all-states '(normal insert visual replace operator motion emacs))
|
||||
@ -50,8 +53,7 @@
|
||||
;; Cambiar C-z a deshacer
|
||||
(evil-define-key all-states 'global (kbd "C-z") 'undo)
|
||||
|
||||
;; Cambiar C-r a ripgrep y U hasta hacer redo
|
||||
(evil-define-key vim-states 'global (kbd "C-r") 'consult-ripgrep)
|
||||
;; Cambiar U para hacer redo
|
||||
(evil-define-key 'normal 'global (kbd "U") 'undo-redo)
|
||||
(evil-define-key 'normal 'global (kbd "C-S-z") 'undo-redo)
|
||||
(evil-define-key 'normal 'global (kbd "M-.") 'xref-find-definitions)
|
||||
@ -94,25 +96,32 @@
|
||||
;; Cambios de modos
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mh") 'html-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mj") 'js-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mp") 'php-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mp") 'php-ts-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mr") 'rust-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mw") 'web-mode)
|
||||
|
||||
;; Otros atajos
|
||||
(evil-define-key 'motion 'global (kbd "<leader>xb") 'consult-buffer) ;; Cambiar de buffer
|
||||
(evil-define-key 'motion 'global (kbd "<leader>xp") 'consult-project-extra-find) ;; Archivos del proyecto (o abrir proyecto si no hay alguno)
|
||||
(evil-define-key 'motion 'global (kbd "<leader>b") 'switch-to-buffer) ;; Cambiar de buffer
|
||||
(evil-define-key 'motion 'global (kbd "<leader>p") 'project-find-file) ;; Archivos del proyecto (o abrir proyecto si no hay alguno)
|
||||
(evil-define-key 'motion 'global (kbd "<leader>cp") 'project-switch-project) ;; Cambiar proyecto
|
||||
(evil-define-key 'motion 'global (kbd "<leader>xf") 'find-file) ;; Abrir archivo
|
||||
(evil-define-key 'motion 'global (kbd "<leader>f") 'find-file) ;; Abrir archivo
|
||||
(evil-define-key 'motion 'global (kbd "<leader>xr") 'consult-recent-file) ;; Lista de archivos recientes
|
||||
(evil-define-key 'motion 'global (kbd "<leader>rg") 'consult-ripgrep) ;; Búsqueda rápida con ripgrep
|
||||
(evil-define-key 'motion 'global (kbd "<leader>gi") 'imenu) ;; imenu
|
||||
(evil-define-key 'motion 'global (kbd "<leader>gg") 'goto-line) ;; Ir a la línea.
|
||||
|
||||
;; Iniciar en normal state si es un lenguaje de programación u org-mode
|
||||
;; (evil-set-initial-state 'prog-mode 'normal)
|
||||
;; (evil-set-initial-state 'org-mode 'normal)
|
||||
;; Iniciar en normal state solo en modos específicos
|
||||
(setq evil-default-state 'emacs) ;; Modo por defecto en emacs
|
||||
(evil-set-initial-state 'prog-mode 'normal)
|
||||
(evil-set-initial-state 'org-mode 'normal)
|
||||
(evil-set-initial-state 'text-mode 'normal)
|
||||
(evil-set-initial-state 'csv-mode 'normal)
|
||||
(evil-set-initial-state 'fundamental-mode 'normal)
|
||||
(evil-set-initial-state 'dashboard-mode 'normal)
|
||||
(evil-set-initial-state 'dired 'normal)
|
||||
(evil-set-initial-state 'vterm-mode 'emacs)
|
||||
(evil-set-initial-state 'magit-mode 'emacs)
|
||||
(evil-set-initial-state 'git-commit-mode 'emacs)
|
||||
)
|
||||
|
||||
;; Funciones y atajos de teclas especiales para evil cuando estamo en org-mode.
|
||||
@ -124,5 +133,10 @@
|
||||
:after org
|
||||
:hook (org-mode . evil-org-mode))
|
||||
|
||||
;; Similar a Vimtutor, pero para evil.
|
||||
(use-package evil-tutor
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
(provide 'init-evil)
|
||||
;;; init-evil.el ends here
|
||||
|
@ -15,18 +15,6 @@
|
||||
(interactive "nTransparency Value 0 - 100 opaque:")
|
||||
(set-frame-parameter nil 'alpha-background value))
|
||||
|
||||
;; Crear captura SVG del frame atual. Fuente: https://www.reddit.com/r/emacs/comments/idz35e/emacs_27_can_take_svg_screenshots_of_itself/
|
||||
(defun screenshot-svg ()
|
||||
"Save a screenshot of the current frame as an SVG image.
|
||||
Saves to a temp file and puts the filename in the kill ring."
|
||||
(interactive)
|
||||
(let* ((filename (make-temp-file "Emacs" nil ".svg"))
|
||||
(data (x-export-frames nil 'svg)))
|
||||
(with-temp-file filename
|
||||
(insert data))
|
||||
(kill-new filename)
|
||||
(message filename)))
|
||||
|
||||
;; Comentar línea o región
|
||||
(defun comment-or-uncomment-region-or-line ()
|
||||
"Comments or uncomments the region or the current line."
|
||||
@ -66,5 +54,40 @@ Saves to a temp file and puts the filename in the kill ring."
|
||||
(delete-window (git-gutter:popup-buffer-window))
|
||||
(git-gutter:popup-hunk)))
|
||||
|
||||
;; Obtener el nombre del proyecto desde project.el
|
||||
(defun kj/project-name (&optional project)
|
||||
"Return the name for PROJECT.
|
||||
If PROJECT is not specified, assume current project root."
|
||||
(when-let (root (or project (kj/project-root)))
|
||||
(file-name-nondirectory
|
||||
(directory-file-name
|
||||
(file-name-directory root)))))
|
||||
|
||||
;; Obtener la raíz del proyecto desde project.el
|
||||
(defun kj/project-root ()
|
||||
"Return the current project root."
|
||||
(when-let (project (project-current))
|
||||
(project-root project)))
|
||||
|
||||
;; Cambia entre ocultar o no la barra de título cuando está maximizado
|
||||
(defun toggle-hide-title-bar()
|
||||
"Toggle hide title bar when the frame is maximed."
|
||||
(interactive)
|
||||
(if (and (boundp 'title-bar-maximixed) title-bar-maximixed)
|
||||
(progn
|
||||
(remove-hook 'window-size-change-functions 'frame-hide-title-bar-when-maximized)
|
||||
(setq title-bar-maximixed nil))
|
||||
(progn
|
||||
(add-hook 'window-size-change-functions 'frame-hide-title-bar-when-maximized)
|
||||
(setq title-bar-maximixed t)))
|
||||
)
|
||||
|
||||
;; Creando un hook para luego de que el theme ha cargado
|
||||
(defvar after-load-theme-hook nil
|
||||
"Hook run after a color theme is loaded using `load-theme'.")
|
||||
(defadvice load-theme (after run-after-load-theme-hook activate)
|
||||
"Run `after-load-theme-hook'."
|
||||
(run-hooks 'after-load-theme-hook))
|
||||
|
||||
(provide 'init-functions)
|
||||
;;; init-functions.el ends here.
|
||||
|
@ -17,25 +17,27 @@
|
||||
(global-set-key (kbd "C-x C-z") nil) ; Unbind C-x C-z (don't minimize)
|
||||
(global-set-key (kbd "C-z") 'undo) ; Unbind C-z y hacerlo funcionar para deshacer cambios
|
||||
(global-set-key (kbd "C-S-z") 'undo-redo) ; Rehacer cambios con C-S-z
|
||||
(global-set-key (kbd "C-S-a") 'mark-whole-buffer) ; Seleccionar todo con CTRL+SHIFT+a.
|
||||
(global-set-key (kbd "C-S-c")
|
||||
'comment-or-uncomment-region-or-line) ; Comentar/descomentar línea o selección
|
||||
(global-set-key (kbd "C-<f11>") 'toggle-frame-maximized) ; Maximizar / restaurar
|
||||
(global-set-key (kbd "C-S-d") 'duplicate-current-line) ; Duplicar línea
|
||||
(global-set-key (kbd "C-S-l") 'sort-lines) ; Ordenar líneas alfabéticamente
|
||||
(global-set-key (kbd "<mouse-3>") 'context-menu-open) ; Ordenar líneas alfabéticamente
|
||||
(global-set-key (kbd "<mouse-3>") 'context-menu-open) ; Abrir menú contextal al hacer clic derecho
|
||||
|
||||
;; Cambios rápidos de major modes
|
||||
(global-set-key (kbd "C-x m") nil) ; Unbind mail on C-x m
|
||||
(global-set-key (kbd "C-x mh") 'mhtml-mode)
|
||||
(global-set-key (kbd "C-x mj") 'js-mode)
|
||||
(global-set-key (kbd "C-x mp") 'php-mode)
|
||||
(global-set-key (kbd "C-x mp") 'php-ts-mode)
|
||||
(global-set-key (kbd "C-x mr") 'rust-mode)
|
||||
(global-set-key (kbd "C-x mw") 'web-mode)
|
||||
|
||||
;; Cambiar de ventana
|
||||
(global-set-key (kbd "C-S-o") 'other-window)
|
||||
|
||||
;; Saltar entre párrafos
|
||||
(define-key global-map "\M-p" 'backward-paragraph)
|
||||
(define-key global-map "\M-n" 'forward-paragraph)
|
||||
|
||||
;; Meta atajos (atajos de atajos)
|
||||
;;(global-set-key (kbd "C-c l d") "\C-a\C- \C-n\M-w\C-y") ; Duplicar línea
|
||||
|
||||
|
@ -20,16 +20,21 @@
|
||||
("M-DEL" . vertico-directory-delete-word))
|
||||
:hook ((elpaca-after-init . vertico-mode)
|
||||
(elpaca-after-init . savehist-mode) ;; savehist sirve para recordar el último comando de M-x
|
||||
(rfn-eshadow-update-overlay . vertico-directory-tidy)))
|
||||
(rfn-eshadow-update-overlay . vertico-directory-tidy))
|
||||
:config
|
||||
(setq read-file-name-completion-ignore-case t
|
||||
read-buffer-completion-ignore-case t
|
||||
completion-ignore-case t)
|
||||
)
|
||||
|
||||
;; Reemplazo para counsel
|
||||
(use-package consult
|
||||
:defer t
|
||||
:bind (;; C-c bindings in `mode-specific-map'
|
||||
("C-s" . consult-line)
|
||||
("C-r" . consult-ripgrep)
|
||||
("C-S-s" . isearch-forward)
|
||||
("C-S-r" . isearch-backward)
|
||||
:bind (("C-x p" . project-find-file)
|
||||
("C-S-s" . consult-line)
|
||||
("C-c r g" . consult-ripgrep)
|
||||
("C-S-r" . consult-ripgrep)
|
||||
;; ("C-S-s" . isearch-forward)
|
||||
("M-m" . consult-mode-command)
|
||||
("C-c h" . consult-history)
|
||||
("C-c k" . consult-kmacro)
|
||||
@ -39,30 +44,21 @@
|
||||
([remap recentf-open-files] . consult-recent-file)
|
||||
|
||||
|
||||
;; C-x bindings in `ctl-x-map'
|
||||
("C-x M-." . consult-complex-command) ;; orig. repeat-complex-command
|
||||
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
|
||||
("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
|
||||
("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
|
||||
("C-x r b" . consult-bookmark) ;; orig. bookmark-jump
|
||||
("C-c p b" . consult-project-buffer) ;; orig. project-switch-to-buffer
|
||||
("C-c p p" . project-switch-project) ;; orig. project-switch-to-buffer
|
||||
("C-c p p" . project-switch-project)
|
||||
;; Consult search
|
||||
("C-c p f" . consult-find) ;; Búsqueda de archivos en todo el projecto incluso en carpetas
|
||||
("C-c p l" . consult-line-multi) ;; Búsqueda en todos los buffers del projecto abiertos
|
||||
;; Custom M-# bindings for fast register access
|
||||
("C-'" . consult-register-load)
|
||||
("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
|
||||
("M-¡" . consult-register)
|
||||
;; Other custom bindings
|
||||
("M-y" . consult-yank-pop) ;; orig. yank-pop
|
||||
("M-y" . consult-yank-pop) ;; orig. yank-pop
|
||||
;; M-g bindings in `goto-map'
|
||||
("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
|
||||
("M-g g" . consult-goto-line) ;; orig. goto-line
|
||||
("M-g M-g" . consult-goto-line) ;; orig. goto-line
|
||||
("M-g o" . consult-outline) ;; Alternative: consult-org-heading
|
||||
("M-g m" . consult-mark)
|
||||
("M-g k" . consult-global-mark)
|
||||
("M-g i" . consult-imenu)
|
||||
("M-g I" . consult-imenu-multi)
|
||||
|
||||
@ -70,14 +66,13 @@
|
||||
:map minibuffer-local-map
|
||||
("<escape>" . minibuffer-keyboard-quit) ;; Cacelar minibuffer con escape (más rápido que C-g)
|
||||
("C-<return>" . newline) ;; Insertar nueva línea estando en el minibufer (Mas rápido que C-q C-j)
|
||||
("C-s" . (lambda ()
|
||||
("C-S-s" . (lambda ()
|
||||
"Insert the current symbol."
|
||||
(interactive)
|
||||
(insert (save-excursion
|
||||
(set-buffer (window-buffer (minibuffer-selected-window)))
|
||||
(or (thing-at-point 'symbol t) ""))))) ;; Al presionar por segunda ves C-s busca el símbolo actual.
|
||||
("M-s" . consult-history) ;; orig. historial de búsqueda
|
||||
("M-r" . consult-history)) ;; orig. historual de búsqueda
|
||||
)
|
||||
|
||||
;; Enable automatic preview at point in the *Completions* buffer. This is
|
||||
;; relevant when you use the default completion UI.
|
||||
@ -125,13 +120,6 @@
|
||||
:defer t
|
||||
:hook (ibuffer-mode . nerd-icons-ibuffer-mode))
|
||||
|
||||
;; Integración entre consult y project
|
||||
(use-package consult-project-extra
|
||||
:ensure t
|
||||
:bind
|
||||
(("C-x p" . consult-project-extra-find)
|
||||
("C-c p o" . consult-project-extra-find-other-window)))
|
||||
|
||||
;; Descripciones en el minibufer
|
||||
(use-package marginalia
|
||||
:defer t
|
||||
@ -148,5 +136,16 @@
|
||||
:bind ("C-c t" . consult-todo)
|
||||
:defer t)
|
||||
|
||||
;; Mover el minibufer de vertico al centro de la pantalla.
|
||||
(use-package vertico-posframe
|
||||
:after vertico
|
||||
:config
|
||||
(vertico-posframe-mode 1)
|
||||
(setq vertico-posframe-border-width 1)
|
||||
(setq vertico-posframe-parameters
|
||||
'((left-fringe . 8)
|
||||
(right-fringe . 8)))
|
||||
)
|
||||
|
||||
(provide 'init-minibuffer)
|
||||
;;; init-minibuffer.el ends here
|
||||
|
@ -25,6 +25,9 @@
|
||||
(visual-line-mode 1)
|
||||
(visual-fill-column-mode 1)
|
||||
|
||||
;; Configuracin para Systanx Highlight en porg-blocks
|
||||
(add-to-list 'org-src-lang-modes (cons "html" 'mhtml))
|
||||
|
||||
;; Configuración de fonts
|
||||
;; (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face))
|
||||
|
||||
@ -75,14 +78,34 @@
|
||||
;; (push '("#+begin_example" . "🦉" ) prettify-symbols-alist)
|
||||
;; (push '("#+end_example" . "⎯" ) prettify-symbols-alist)
|
||||
(prettify-symbols-mode)
|
||||
|
||||
;; Habilitar evaluación de lenguajes en org-mode (babel)
|
||||
(org-babel-do-load-languages 'org-babel-load-languages
|
||||
(append org-babel-load-languages
|
||||
'(
|
||||
(C . t)
|
||||
(R . t)
|
||||
(awk . t)
|
||||
(calc . t)
|
||||
(clojure . t)
|
||||
(go . t)
|
||||
(haskell . t)
|
||||
(java . t)
|
||||
(js . t)
|
||||
(php . t)
|
||||
(python . t)
|
||||
(rust . t)
|
||||
(translate . t)
|
||||
(shell . t)
|
||||
)))
|
||||
;; No solicitar confirmación para evaluar
|
||||
(setq org-confirm-babel-evaluate nil)
|
||||
)
|
||||
|
||||
;; org-mode
|
||||
(use-package org
|
||||
:defer t
|
||||
:ensure nil
|
||||
:bind (("C-c a" . org-agenda)
|
||||
("C-c c" . org-capture))
|
||||
:hook
|
||||
(org-mode . kj/org-hook)
|
||||
:config
|
||||
@ -109,7 +132,7 @@
|
||||
'(("TODO" . "#ff6464")
|
||||
("DOING" . "yellow")
|
||||
("DONE" . "green")
|
||||
("WAITING" . "orange")
|
||||
("HOLD" . "orange")
|
||||
("CANCELED" . "#aaa"))
|
||||
)
|
||||
|
||||
@ -137,13 +160,6 @@
|
||||
;; Guardar los archivos cuando se muevan tareas entre ellos
|
||||
(advice-add 'org-refile :after 'org-save-all-org-buffers)
|
||||
|
||||
(setq org-capture-templates
|
||||
`(("t" "Tareas")
|
||||
("tt" "Tareas" entry (file+olp "~/Documentos/ORG/Agenda/Tareas.org")
|
||||
"* TODO %? \n %a\n %i" :empty-lines 1)
|
||||
)
|
||||
)
|
||||
|
||||
;; Configuración de imágenes
|
||||
(setq org-startup-with-inline-images t) ;; Mostrar por defecto las imágenes
|
||||
(setq org-display-remote-inline-images 'cache) ;; Mostrar imágenes remotas
|
||||
@ -152,6 +168,7 @@
|
||||
|
||||
;; Org-yt para soportar embebidos.
|
||||
(use-package org-yt
|
||||
:after org
|
||||
:ensure (:host github :repo "TobiasZawada/org-yt")
|
||||
:config
|
||||
(defun org-http-image-data-fn (protocol link _description)
|
||||
@ -173,7 +190,38 @@
|
||||
(use-package org-bullets
|
||||
:defer t
|
||||
:hook
|
||||
(org-mode . org-bullets-mode))
|
||||
(org-mode . org-bullets-mode)
|
||||
:config
|
||||
(setq org-bullets-bullet-list '("◉"
|
||||
"○"
|
||||
"●"
|
||||
"◈"
|
||||
"◇"
|
||||
"◆"
|
||||
"✸"
|
||||
"✳"))
|
||||
)
|
||||
|
||||
;; Mejora visualmente varias cosas de org
|
||||
(use-package org-modern
|
||||
:defer t
|
||||
:ensure t
|
||||
:hook ((org-mode . org-modern-mode)
|
||||
(org-agenda . org-modern-mode))
|
||||
:config
|
||||
;; Me gustan varias cosas por defecto, así que desactivo aquí varias de las "mejoras"
|
||||
(setq org-modern-table nil ;; Mejora visual de las tablas
|
||||
org-modern-table-vertical 1 ;; Grosor de las líneas verticales de las tablas
|
||||
org-modern-table-horizontal 0.2 ;; Grosor de las líneas horizontales de las tablas
|
||||
org-modern-priority nil ;; Mejora de las prioridades (Arriba ya las puse bonitas con prettyfy-symbols, así que mejor está desactivado)
|
||||
org-modern-todo nil ;; Mejora visual a las lista de tareas
|
||||
org-modern-progress nil ;; Mejora visual a las estadísticas de completado de uan tarea (ej: [50%] o [5/9])
|
||||
org-modern-checkbox nil ;; Mejora de los checkboxes (a mi parecer se ven más feos, los por defecto ya están bonitos).
|
||||
org-modern-keyword nil ;; Oculta el "#+" en los keywords de org
|
||||
org-modern-block-name nil ;; Mejora visual para los org blocks (bloques de código, ejemplo, citas, etc.)
|
||||
org-modern-star nil ;; Lista de bullets a usar en los headers (falla si se activa junto a org-bullets).
|
||||
org-modern-list nil)
|
||||
)
|
||||
|
||||
(use-package visual-fill-column
|
||||
:defer t
|
||||
@ -214,9 +262,30 @@
|
||||
|
||||
;; Continúa el formato de la lista cuando presionas enter.
|
||||
(use-package org-autolist
|
||||
:defer t
|
||||
:ensure t
|
||||
:hook (org-mode . org-autolist-mode))
|
||||
|
||||
;; Org babel para PHP
|
||||
(use-package ob-php
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Org babel para GO
|
||||
(use-package ob-go
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Org babel para Rust
|
||||
(use-package ob-rust
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Org babel para traducciones (mediante google translate)
|
||||
(use-package ob-translate
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Org mode en modo presentación
|
||||
(use-package org-present
|
||||
:defer t
|
||||
@ -248,10 +317,11 @@
|
||||
;; Mostrar los caracteres ocultos de org mode al pasar con el cursor.
|
||||
(use-package org-appear
|
||||
:defer t
|
||||
:hook (org-mode . org-appear-mode))
|
||||
;; :hook (org-mode . org-appear-mode)
|
||||
)
|
||||
|
||||
;; Polymode para org-mode
|
||||
(use-package poly-org)
|
||||
;; (use-package poly-org)
|
||||
|
||||
(provide 'init-org)
|
||||
;;; init-org.el ends here
|
||||
|
@ -14,9 +14,15 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Mejora del reemplazo
|
||||
(use-package anzu
|
||||
:defer t
|
||||
:bind (([remap query-replace] . anzu-query-replace)
|
||||
([remap query-replace-regexp] . anzu-query-replace-regexp)))
|
||||
|
||||
;; Intercamiar buffers de lugar
|
||||
(use-package buffer-move
|
||||
:defer t
|
||||
:defer 2
|
||||
:bind (("M-S-<up>" . buf-move-up)
|
||||
("M-S-<down>" . buf-move-down)
|
||||
("M-S-<left>" . buf-move-left)
|
||||
@ -31,20 +37,27 @@
|
||||
;; Seleccionar por regiones (similar a mark-sexp, pero toma en cuenta hacia atrás del cursor también)
|
||||
(use-package expand-region
|
||||
:defer t
|
||||
:bind ("C-+" . er/expand-region))
|
||||
:bind (("C-+" . er/expand-region)
|
||||
("C-=" . er/expand-region)))
|
||||
|
||||
;; Major mode para archivos CSV
|
||||
(use-package csv-mode
|
||||
:defer t
|
||||
:hook ((csv-mode . csv-align-mode)
|
||||
(csv-mode . csv-header-line))
|
||||
;; :hook ((csv-mode . csv-align-mode)
|
||||
;; (csv-mode . csv-header-line))
|
||||
)
|
||||
|
||||
;; Visor de documentos de emacs (soporta de todo: epub, pdf, odt, docx, cbz, etc.)
|
||||
(use-package doc-view
|
||||
:defer t
|
||||
:hook
|
||||
(doc-view-mode . (lambda ()
|
||||
(display-line-numbers-mode 0)))
|
||||
:ensure nil)
|
||||
|
||||
;; Un bonito y sencillo panel de inicio
|
||||
(use-package dashboard
|
||||
:defer t
|
||||
:init
|
||||
(dashboard-setup-startup-hook)
|
||||
:config
|
||||
(setq dashboard-set-file-icons t
|
||||
dashboard-set-heading-icons t
|
||||
@ -54,20 +67,19 @@
|
||||
(setq dashboard-startup-banner
|
||||
(expand-file-name "duck.svg" user-emacs-directory))
|
||||
(setq dashboard-items '(
|
||||
;; (recents . 10)
|
||||
(agenda . 10)
|
||||
;;(recents . 10)
|
||||
))
|
||||
)
|
||||
|
||||
;; Coloca en emacs la documentacón distribuída por devdocs.io
|
||||
(use-package devdocs
|
||||
:defer t)
|
||||
:defer 2)
|
||||
|
||||
;; Sidebar a la derecha con los archivos
|
||||
(use-package dired-sidebar
|
||||
:defer t
|
||||
:hook (dired-mode . hl-line-mode)
|
||||
:ensure t
|
||||
:bind ([f9] . dired-sidebar-toggle-sidebar)
|
||||
:commands (dired-sidebar-toggle-sidebar)
|
||||
:config
|
||||
@ -76,20 +88,12 @@
|
||||
;; dired-sidebar-follow-file-idle-delay 0.5
|
||||
))
|
||||
|
||||
;; Mover líneas o regiones
|
||||
(use-package drag-stuff
|
||||
:defer t
|
||||
:hook
|
||||
(elpaca-after-init . drag-stuff-global-mode)
|
||||
:config
|
||||
(drag-stuff-define-keys))
|
||||
|
||||
;; La línea bonita esa de abajo
|
||||
(use-package doom-modeline
|
||||
:defer t
|
||||
:after emacs
|
||||
:ensure t
|
||||
:hook (elpaca-after-init . doom-modeline-mode)
|
||||
:config
|
||||
(doom-modeline-mode)
|
||||
(setq doom-modeline-project-detection 'auto
|
||||
doom-modeline-buffer-file-name-style 'relative-from-project
|
||||
doom-modeline-major-mode-color-icon t
|
||||
@ -97,66 +101,36 @@
|
||||
doom-modeline-indent-info nil
|
||||
doom-modeline-persp-name t))
|
||||
|
||||
;; Resolver diferencias entre 2 archivos o versiones del mismo.
|
||||
(use-package ediff
|
||||
;; Modo para edición de arc docker compose
|
||||
(use-package docker-compose-mode
|
||||
:defer t)
|
||||
|
||||
;; Modo para la edición de archivos Dockerfile (y building desde emacs)
|
||||
(use-package dockerfile-mode
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
(setq ediff-diff-options "")
|
||||
(setq ediff-custom-diff-options "-u")
|
||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
|
||||
(setq ediff-split-window-function 'split-window-vertically))
|
||||
;; Suelo tener podman siempre en lugar de docker, así que lo definimos como el comando a usar
|
||||
(setq dockerfile-mode-command "podman"))
|
||||
|
||||
;; Mover líneas o regiones
|
||||
(use-package drag-stuff
|
||||
:defer 1
|
||||
:config
|
||||
(drag-stuff-global-mode)
|
||||
(drag-stuff-define-keys))
|
||||
|
||||
;; Emparejamiento automático de comillas, paréntesis, corchetes y llaves
|
||||
(use-package electric-pair
|
||||
:defer t
|
||||
:ensure nil
|
||||
:hook (elpaca-after-init . electric-pair-mode)
|
||||
:config
|
||||
(setq electric-pair-delete-adjacent-pairs nil))
|
||||
;; (use-package electric-pair
|
||||
;; :defer t
|
||||
;; :ensure nil
|
||||
;; :config
|
||||
;; (electric-pair-mode)
|
||||
;; (setq electric-pair-delete-adjacent-pairs nil))
|
||||
|
||||
;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
|
||||
(use-package git-gutter
|
||||
:defer t
|
||||
:hook
|
||||
(elpaca-after-init . global-git-gutter-mode)
|
||||
;; Cargar las variables de entorno desde la configuración del usuario
|
||||
(use-package exec-path-from-shell
|
||||
:config
|
||||
(defhydra hydra-git-gutter nil
|
||||
"git hunk"
|
||||
("p" git-gutter:previous-hunk "previous")
|
||||
("n" git-gutter:next-hunk "next")
|
||||
("s" git-gutter:stage-hunk "stage")
|
||||
("r" git-gutter:revert-hunk "revert")
|
||||
("m" git-gutter:mark-hunk "mark")
|
||||
("SPC" git-gutter:toggle-popup-hunk "toggle diffinfo"))
|
||||
)
|
||||
|
||||
;; Cliente LLM (ollama, chatgpt, gemini, etc.)
|
||||
(use-package gptel
|
||||
:defer t
|
||||
:config
|
||||
(setq gptel-model "mistral:latest"
|
||||
gptel-backend (gptel-make-ollama "Ollama"
|
||||
:host "localhost:11434"
|
||||
:stream t
|
||||
:models '("mistral:latest" "zephyr:latest" "llama2-uncensored:latest"))
|
||||
gptel-default-mode 'org-mode
|
||||
gptel-prompt-prefix-alist
|
||||
'((markdown-mode . "# ")
|
||||
(org-mode . "* ")
|
||||
(text-mode . "# "))
|
||||
gptel-directives
|
||||
'((default . "Eres un LLM que vive dentro de Emacs. Responde de manera concisa.")
|
||||
(programming . "Eres un LLM y un programador profesional cuidadoso. Provee el código y solo el código como output sin ningún texto adicional, prompt o nota.")
|
||||
(programming_tutor . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y realiza sugerencias concisas en español para mejorarlo.")
|
||||
(programming_explainer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español de manera concisa, su funcionamiento.")
|
||||
(programming_describer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español su funcionamiento línea a línea.")
|
||||
(writing . "Eres un LLM y un asistente de escritura. Responde de manera concisa.")
|
||||
(grammarly . "You are a large language model and professional translator. Improve grammar and spelling.")
|
||||
(chat . "Eres un LLM y un compañero de conversación. Responde de manera concisa y en español.")
|
||||
)
|
||||
)
|
||||
)
|
||||
(exec-path-from-shell-initialize))
|
||||
|
||||
;; Resalta los escapes de secuencia
|
||||
(use-package highlight-escape-sequences
|
||||
@ -169,6 +143,7 @@
|
||||
(objc-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(go-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(php-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(php-ts-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(java-mode . ,hes-java-escape-sequence-re)
|
||||
(clojure-mode . ,hes-java-escape-sequence-re)
|
||||
(js-mode . ,hes-js-escape-sequence-re)
|
||||
@ -182,8 +157,16 @@
|
||||
|
||||
;; Resaltar palabras clave como TODO, FIXME, etc. en comentarios del código.
|
||||
(use-package hl-todo
|
||||
:ensure (hl-todo :version (lambda (_) "3.6.0"))
|
||||
:defer t
|
||||
:hook (prog-mode . hl-todo-mode))
|
||||
:hook (prog-mode . hl-todo-mode)
|
||||
:config
|
||||
(add-to-list 'hl-todo-keyword-faces '("BUG" . "#d99600")))
|
||||
|
||||
;; Paquete para exportar buffers de emacs a HTML
|
||||
(use-package htmlize
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Permite crear conjuntos de atajos.
|
||||
(use-package hydra
|
||||
@ -204,31 +187,14 @@
|
||||
keypression-font-face-attribute '(:width normal :height 180 :weight bold))
|
||||
)
|
||||
|
||||
;; Generador automatizado de archivos de licencia
|
||||
(use-package license-templates
|
||||
:defer t)
|
||||
|
||||
;; Magia para git
|
||||
(use-package magit
|
||||
:defer t)
|
||||
|
||||
;; Todolist en magit de todos los archivos del projecto.
|
||||
(use-package magit-todos
|
||||
:defer t
|
||||
:after magit
|
||||
:config (magit-todos-mode 1))
|
||||
|
||||
;; Modo markdown
|
||||
(use-package markdown-mode
|
||||
:defer t)
|
||||
|
||||
;; Multiples cursores en emacs
|
||||
(use-package multiple-cursors
|
||||
:defer t)
|
||||
|
||||
;; Multiple vterm
|
||||
(use-package multi-vterm
|
||||
:defer t
|
||||
:after vterm
|
||||
:bind* (("<f5>" . multi-vterm-dedicated-toggle)
|
||||
("C-x tt" . multi-vterm-dedicated-toggle)
|
||||
("C-x tf" . multi-vterm)
|
||||
@ -244,19 +210,16 @@
|
||||
;; Usar nerd-icons en dired
|
||||
(use-package nerd-icons-dired
|
||||
:defer t
|
||||
:after nerd-icons
|
||||
:hook (dired-mode . nerd-icons-dired-mode))
|
||||
|
||||
;; Modo para leer archivos de configuración de nginx
|
||||
(use-package nginx-mode
|
||||
:defer t)
|
||||
|
||||
;; Lector EPUB
|
||||
;; (use-package nov
|
||||
;; :defer t)
|
||||
|
||||
;; Múltiples modos en un mismo buffer
|
||||
(use-package polymode
|
||||
:defer t)
|
||||
;; (use-package polymode
|
||||
;; :defer t)
|
||||
|
||||
;; Des-minifica / ordena el código
|
||||
(use-package prettier
|
||||
@ -266,20 +229,6 @@
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
|
||||
(defun kj/project-name (&optional project)
|
||||
"Return the name for PROJECT.
|
||||
If PROJECT is not specified, assume current project root."
|
||||
(when-let (root (or project (kj/project-root)))
|
||||
(file-name-nondirectory
|
||||
(directory-file-name
|
||||
(file-name-directory root)))))
|
||||
|
||||
(defun kj/project-root ()
|
||||
"Return the current project root."
|
||||
(when-let (project (project-current))
|
||||
(project-root project)))
|
||||
|
||||
;; Colocamos un título del frame más bonito y útil que el por defecto
|
||||
(setq frame-title-format
|
||||
'(
|
||||
@ -292,49 +241,61 @@ If PROJECT is not specified, assume current project root."
|
||||
)
|
||||
)
|
||||
|
||||
;; Correr el código desde el buffer de emacs
|
||||
(use-package quickrun
|
||||
:defer t
|
||||
:ensure t
|
||||
:bind (:map prog-mode-map
|
||||
("C-c C-r" . quickrun)
|
||||
("C-c r f" . quickrun)
|
||||
("C-c r r" . quickrun-region)
|
||||
("C-c r R" . quickrun-replace-region)
|
||||
)
|
||||
)
|
||||
|
||||
;; Recentf - Guarda registro de los archivos abiertos recientemente
|
||||
(use-package recentf
|
||||
:defer t
|
||||
:ensure nil
|
||||
:bind ("C-x C-r" . recentf-open-files)
|
||||
:hook (after-load-theme . recentf-mode)
|
||||
:config
|
||||
(setq recentf-save-file
|
||||
(recentf-expand-file-name (concat temp-dir "/recentf"))
|
||||
recentf-auto-cleanup 'never
|
||||
recentf-keep '(file-remote-p file-readable-p)
|
||||
recentf-max-saved-items 1000
|
||||
recentf-max-menu-items 500)
|
||||
(recentf-mode 1))
|
||||
recentf-max-menu-items 500))
|
||||
|
||||
;; Busqueda rápida con ripgrep
|
||||
(use-package rg
|
||||
:defer t
|
||||
:hook (elpaca-after-init . rg-enable-default-bindings)
|
||||
;; :hook (elpaca-after-init . rg-enable-default-bindings)
|
||||
:bind (:map rg-global-map
|
||||
("c" . rg-dwim-current-dir)
|
||||
("f" . rg-dwim-current-file)
|
||||
("m" . rg-menu))
|
||||
:init (setq rg-group-result t
|
||||
rg-show-columns t)
|
||||
:config
|
||||
(setq rg-group-result t
|
||||
rg-show-columns t)
|
||||
(cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases))
|
||||
|
||||
;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
|
||||
(use-package saveplace
|
||||
:ensure nil
|
||||
:hook (elpaca-after-init . save-place-mode)
|
||||
:config
|
||||
(setq save-place-file (locate-user-emacs-file (concat temp-dir "/places"))))
|
||||
|
||||
;; Paquete para crear imágens (solo lo uso para sacar capturas SVG de emacs)
|
||||
(use-package silicon
|
||||
:defer t
|
||||
:ensure (:host github :repo "iensu/silicon-el"))
|
||||
:hook
|
||||
(elpaca-after-init . (lambda()
|
||||
(setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))
|
||||
(save-place-mode 1)
|
||||
))
|
||||
)
|
||||
|
||||
;; Mejorando el scroll
|
||||
(use-package smooth-scrolling
|
||||
:defer t
|
||||
:hook (elpaca-after-init . smooth-scrolling-mode)
|
||||
:config
|
||||
(smooth-scrolling-mode 1)
|
||||
(setq mouse-wheel-scroll-amount
|
||||
'(8 ((shift) . 1) ((control) . nil))) ; Cambia el scroll a 8 líneas a la vez, 1 cuando se preciona SHIFT y saltos de página cuando presionas CTRL
|
||||
(setq mouse-wheel-progressive-speed nil) ; Deshabilita la velocidad progresiva del scroll (mientras más scroll haces, mas rápido va)
|
||||
@ -364,13 +325,14 @@ If PROJECT is not specified, assume current project root."
|
||||
:defer t
|
||||
:hook
|
||||
(speed-type-mode . (lambda ()
|
||||
(corfu-mode 0)
|
||||
(display-line-numbers-mode 0)
|
||||
(visual-line-mode 1)
|
||||
(visual-fill-column-mode 1)))
|
||||
:diminish
|
||||
:config
|
||||
(setq speed-type-gb-book-list '(66867 66866 66591 57303)
|
||||
speed-type-min-chars 500
|
||||
(setq speed-type-gb-book-list '(66867 66866 66591 57303 15725 24536)
|
||||
speed-type-min-chars 300
|
||||
speed-type-max-chars 600))
|
||||
|
||||
;; Tree-sitter :)
|
||||
@ -389,16 +351,20 @@ If PROJECT is not specified, assume current project root."
|
||||
(html . ("https://github.com/tree-sitter/tree-sitter-html"))
|
||||
(java . ("https://github.com/tree-sitter/tree-sitter-java"))
|
||||
(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript"))
|
||||
(jsdoc . ("https://github.com/tree-sitter/tree-sitter-jsdoc"))
|
||||
(json . ("https://github.com/tree-sitter/tree-sitter-json"))
|
||||
(julia . ("https://github.com/tree-sitter/tree-sitter-julia"))
|
||||
(lua . ("https://github.com/Azganoth/tree-sitter-lua"))
|
||||
(make . ("https://github.com/alemuller/tree-sitter-make"))
|
||||
(python . ("https://github.com/tree-sitter/tree-sitter-python"))
|
||||
(php . ("https://github.com/tree-sitter/tree-sitter-php" "master" "php/src"))
|
||||
(phpdoc . ("https://github.com/claytonrcarter/tree-sitter-phpdoc"))
|
||||
(ruby . ("https://github.com/tree-sitter/tree-sitter-ruby"))
|
||||
(rust . ("https://github.com/tree-sitter/tree-sitter-rust"))
|
||||
(sql . ("https://github.com/m-novikov/tree-sitter-sql"))
|
||||
(toml . ("https://github.com/tree-sitter/tree-sitter-toml"))
|
||||
(tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src"))
|
||||
(typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src"))
|
||||
(zig . ("https://github.com/GrayJack/tree-sitter-zig"))))
|
||||
(defun nf/treesit-install-all-languages ()
|
||||
"Install all languages specified by `treesit-language-source-alist'."
|
||||
@ -409,39 +375,39 @@ If PROJECT is not specified, assume current project root."
|
||||
(message "`%s' parser was installed." lang)
|
||||
(sit-for 0.75)))))
|
||||
|
||||
;; Cuando presionas enter en un bloque de comentario sigue el estilo del bloque.
|
||||
;; (use-package vs-comment-return
|
||||
;; :ensure (:host github :repo "emacs-vs/vs-comment-return")
|
||||
;; :defer t
|
||||
;; :hook (prog-mode . vs-comment-return-mode)
|
||||
;; )
|
||||
|
||||
;; Mostrar el último commit que modificó la linea actual
|
||||
(use-package vc-msg
|
||||
:defer t
|
||||
:bind (("C-c v" . vc-msg-show)
|
||||
("C-c C-v" . vc-msg-show))
|
||||
)
|
||||
|
||||
;; Terminal
|
||||
(use-package vterm
|
||||
:ensure t
|
||||
:defer t)
|
||||
:defer t
|
||||
:config
|
||||
(setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto
|
||||
(setq vterm-tramp-shells '(("ssh" "/bin/bash")
|
||||
("sshx" "/bin/bash")
|
||||
("docker" "/bin/bash")
|
||||
("podman" "/bin/bash"))) ;; Tanto docker como podman usarán bash cuado se contecte mediante tramp
|
||||
)
|
||||
|
||||
;; Cuando iniicias un atajo de teclas te muestra las posibilidades
|
||||
;; Cuando inicias un atajo de teclas te muestra las posibilidades
|
||||
(use-package which-key
|
||||
:defer t
|
||||
:hook (elpaca-after-init . which-key-mode))
|
||||
:config
|
||||
(which-key-mode))
|
||||
|
||||
;; Muestra which-key en un frame en el centro en lugar de abajo
|
||||
(use-package which-key-posframe
|
||||
:after which-key
|
||||
:config
|
||||
(which-key-posframe-mode))
|
||||
|
||||
;; Restaurar el estado de los frames
|
||||
(use-package winner
|
||||
:ensure nil
|
||||
:defer t
|
||||
:hook (elpaca-after-init . winner-mode))
|
||||
:config
|
||||
(winner-mode))
|
||||
|
||||
;; Emacs Start Up Profiler
|
||||
(use-package esup
|
||||
:defer t)
|
||||
;; (use-package esup
|
||||
;; :defer t)
|
||||
|
||||
(provide 'init-packages)
|
||||
;;; init-packages.el ends here
|
||||
|
@ -11,71 +11,28 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Theme dracula (https://draculatheme.com/)
|
||||
;; Theme dracula (https://draculatheme.com/) // aún lo tengo en l config porque a Ney le gusta
|
||||
(use-package dracula-theme
|
||||
:defer t
|
||||
;; :hook
|
||||
;; (elpaca-after-init . (lambda()
|
||||
;; (load-theme 'dracula t)
|
||||
;; (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
;; ))
|
||||
)
|
||||
:defer t)
|
||||
|
||||
;; El theme más cercano a adwaita dark que he encontrado
|
||||
(use-package adwaita-dark-theme
|
||||
:defer t
|
||||
:hook
|
||||
(elpaca-after-init . (lambda()
|
||||
(load-theme 'adwaita-dark t)
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
))
|
||||
)
|
||||
|
||||
;; Theme adwaita, viene integrado en emacs desde la v29.1
|
||||
;; (use-package adwaita-theme
|
||||
;; :elpaca nil
|
||||
;; :defer t
|
||||
;; :hook
|
||||
;; (elpaca-after-init . (lambda()
|
||||
;; (load-theme 'adwaita t)
|
||||
;; (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
;; ))
|
||||
;; )
|
||||
:defer t)
|
||||
|
||||
;; Themes modus, vienen integrado en emacs en master (~v30)
|
||||
;; (use-package modus-themes
|
||||
;; :elpaca nil
|
||||
;; :defer t
|
||||
;; :hook
|
||||
;; (elpaca-after-init . (lambda()
|
||||
;; (load-theme 'modus-operandi-tinted t) ;; Solarized
|
||||
;; (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
;; ))
|
||||
;; )
|
||||
(use-package modus-themes
|
||||
:defer t)
|
||||
|
||||
;; Themes ef
|
||||
(use-package ef-themes
|
||||
:defer t
|
||||
;; :hook
|
||||
;; (elpaca-after-init . (lambda()
|
||||
;; (load-theme 'ef-light t)
|
||||
;; (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
;; ))
|
||||
)
|
||||
:defer t)
|
||||
|
||||
;; Themes de doom emacs
|
||||
;; (use-package doom-themes
|
||||
;; :defer t
|
||||
;; :hook
|
||||
;; (elpaca-after-init . (lambda()
|
||||
;; (setq doom-themes-enable-bold t ; if nil, bold is universally disabled
|
||||
;; doom-themes-enable-italic t) ; if nil, italics is universally disabled
|
||||
;; (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
|
||||
;; (load-theme 'doom-one t)
|
||||
;; (doom-themes-org-config)
|
||||
;; ))
|
||||
;; )
|
||||
;; Prendemos el theme que elijamos
|
||||
(add-hook 'elpaca-after-init-hook #'(lambda() (load-theme 'ef-dream t)))
|
||||
|
||||
;; Los themes que recomiendo:
|
||||
;; Oscuros: adwaita-dark y ef-dream
|
||||
;; Claros: modus-operandi-tinted y ef-day
|
||||
|
||||
(provide 'init-theme)
|
||||
;;; init-theme.el ends here
|
||||
|
111
configs/init-vc.el
Normal file
111
configs/init-vc.el
Normal file
@ -0,0 +1,111 @@
|
||||
;;; init-vc.el --- Configuración del control de versiones -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Archivo de configuración específico para el control de versiones.
|
||||
;;
|
||||
;; Puedes que hoy en día la norma es usar git para este trabajo,
|
||||
;; la gran mayoría de configuraciones son justamente para el mismo.
|
||||
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Resolver diferencias entre 2 archivos o versiones del mismo.
|
||||
(use-package ediff
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
(setq ediff-diff-options "")
|
||||
(setq ediff-custom-diff-options "-u")
|
||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
|
||||
(setq ediff-split-window-function 'split-window-vertically))
|
||||
|
||||
;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
|
||||
(use-package git-gutter
|
||||
:defer t
|
||||
:config
|
||||
(global-git-gutter-mode 1)
|
||||
(defhydra hydra-git-gutter (:hint nil)
|
||||
"
|
||||
^Navigation^ | ^Actions^ | ^Others^
|
||||
-^-----------^-+-^----^--------+-^-------^----------
|
||||
_p_: previous | _s_: stage | _m_: mark
|
||||
_n_: next | _r_: revert | _SPC_: toggle info
|
||||
-^-----------^-+-^----^--------+-^-------^----------
|
||||
"
|
||||
("p" git-gutter:previous-hunk)
|
||||
("n" git-gutter:next-hunk)
|
||||
("s" git-gutter:stage-hunk)
|
||||
("r" git-gutter:revert-hunk)
|
||||
("m" git-gutter:mark-hunkmark)
|
||||
("SPC" git-gutter:toggle-popup-hunk))
|
||||
)
|
||||
|
||||
;; Visitar rápidamente viejas versiones de un archivo rápidamente
|
||||
(use-package git-timemachine
|
||||
:defer t)
|
||||
|
||||
;; Generador automatizado de archivos de licencia
|
||||
(use-package license-templates
|
||||
:defer t)
|
||||
|
||||
;; Magia para git
|
||||
(use-package magit
|
||||
:defer t)
|
||||
|
||||
;; Todolist en magit de todos los archivos del projecto.
|
||||
(use-package magit-todos
|
||||
:defer t
|
||||
:config (magit-todos-mode 1))
|
||||
|
||||
;; Modo para resolución de confictos
|
||||
(use-package smerge-mode
|
||||
:ensure nil
|
||||
:defer t
|
||||
:config
|
||||
(defhydra hydra-smerge (:color pink
|
||||
:hint nil)
|
||||
"
|
||||
^Move^ ^Keep^ ^Diff^ ^Other^
|
||||
^^-----------^^-------------------^^---------------------^^-------
|
||||
_n_ext _b_ase _<_: upper/base _C_ombine
|
||||
_p_rev _u_pper _=_: upper/lower _r_esolve
|
||||
^^ _l_ower _>_: base/lower _k_ill current
|
||||
^^ _a_ll _R_efine
|
||||
^^ _RET_: current _E_diff
|
||||
"
|
||||
("n" smerge-next)
|
||||
("p" smerge-prev)
|
||||
("b" smerge-keep-base)
|
||||
("u" smerge-keep-upper)
|
||||
("l" smerge-keep-lower)
|
||||
("a" smerge-keep-all)
|
||||
("RET" smerge-keep-current)
|
||||
("\C-m" smerge-keep-current)
|
||||
("<" smerge-diff-base-upper)
|
||||
("=" smerge-diff-upper-lower)
|
||||
(">" smerge-diff-base-lower)
|
||||
("R" smerge-refine)
|
||||
("E" smerge-ediff)
|
||||
("C" smerge-combine-with-next)
|
||||
("r" smerge-resolve)
|
||||
("k" smerge-kill-current)
|
||||
("q" nil "cancel" :color blue))
|
||||
)
|
||||
|
||||
(use-package transient
|
||||
:defer t)
|
||||
|
||||
;; Mostrar el último commit que modificó la linea actual
|
||||
(use-package vc-msg
|
||||
:defer t
|
||||
:bind (("C-c v" . vc-msg-show)
|
||||
("C-c C-v" . vc-msg-show))
|
||||
)
|
||||
|
||||
|
||||
(provide 'init-vc)
|
||||
;;; init-vc.el ends here
|
@ -20,6 +20,11 @@
|
||||
|
||||
)
|
||||
|
||||
(use-package css-mode
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
(setq css-indent-offset 2))
|
||||
|
||||
(use-package auto-rename-tag
|
||||
:ensure (:host github :repo "jcs-elpa/auto-rename-tag")
|
||||
|
@ -14,8 +14,9 @@
|
||||
:ensure nil
|
||||
:mode
|
||||
("\\.js$" . js-mode)
|
||||
:hook
|
||||
(js-mode . eglot-ensure)
|
||||
:init
|
||||
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
|
||||
:config
|
||||
(setq js-indent-level 2))
|
||||
|
||||
|
@ -9,24 +9,21 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(use-package php-mode
|
||||
(use-package php-ts-mode
|
||||
:defer t
|
||||
:bind ("C-c d b" . kj/php-doc-block)
|
||||
:config
|
||||
(defun kj/php-doc-block ()
|
||||
"Llama a \"php-dock-block\", sin conflicto con \"vs-comment-return-mode\"."
|
||||
(interactive)
|
||||
(if (bound-and-true-p vs-comment-return-mode)
|
||||
(funcall (lambda()
|
||||
(vs-comment-return-mode -1)
|
||||
(php-doc-block)
|
||||
(vs-comment-return-mode 1)))
|
||||
(php-doc-block)
|
||||
)
|
||||
)
|
||||
)
|
||||
:mode "\\.php\\'"
|
||||
;; :init
|
||||
;; (add-to-list 'auto-mode-alist '("\\.php\\'" . php-ts-mode))
|
||||
;; :after php-mode
|
||||
:ensure nil)
|
||||
|
||||
;; (use-package php-mode
|
||||
;; :defer t
|
||||
;; :ensure t)
|
||||
|
||||
(use-package php-doc-block
|
||||
:after php-ts-mode
|
||||
:bind ("C-c d b" . php-doc-block)
|
||||
:ensure (:host github :repo "moskalyovd/emacs-php-doc-block")
|
||||
)
|
||||
|
||||
|
@ -12,6 +12,8 @@
|
||||
(use-package rust-mode
|
||||
:defer t
|
||||
:ensure t
|
||||
:init
|
||||
(setq rust-mode-treesitter-derive t)
|
||||
:config
|
||||
(setq rust-format-on-save t))
|
||||
|
||||
|
@ -39,6 +39,9 @@
|
||||
;; Permitir solo la búsqueda de archivos a cargar en la config en case sensitive.
|
||||
(setq auto-mode-case-fold nil)
|
||||
|
||||
;; Definimos que la shell por defecto será bash
|
||||
(setq shell-file-name "/bin/bash")
|
||||
|
||||
;; Personalizaciones (Tedrían que ir en init-base, pero por optimización, las pongo acá)
|
||||
(push '(menu-bar-lines . 0) default-frame-alist) ; Quitar menús.
|
||||
(push '(tool-bar-lines . 0) default-frame-alist) ; Quitar toolbar.
|
||||
|
6
init.el
6
init.el
@ -18,12 +18,14 @@
|
||||
(require 'init-theme)
|
||||
(require 'init-packages)
|
||||
(require 'init-functions)
|
||||
(require 'init-ai)
|
||||
(require 'init-vc)
|
||||
(require 'init-org)
|
||||
(require 'init-eglot)
|
||||
(require 'init-corfu)
|
||||
(require 'init-ctags)
|
||||
;; (require 'init-ctags)
|
||||
(require 'init-minibuffer)
|
||||
(require 'init-evil)
|
||||
;; (require 'init-evil)
|
||||
(require 'init-keys)
|
||||
|
||||
;; Lenguajes
|
||||
|
67
readme.md
67
readme.md
@ -1,67 +0,0 @@
|
||||
# Configuración de Emacs actual
|
||||
|
||||
Esta configuración para emacs se podría decir que es la heredera de mi [configuración de emacs inicial](https://git.kj2.me/kj/confi-emacs-inicial), la cual ya llevaba tiempo necesitando una manita de gato para arreglar y mejorar algunas cosas que me resultan cómodas para el uso, ademas de comenzar a utilizar `evil-mode`. Esta configuración bien podría haber sido una rama de la inicial, pero he decidido hacer uno nuevo y si es neceario hacer aquí las ramas.
|
||||
|
||||
## Instalación
|
||||
|
||||
Si deseas clonar mi configuración, puedes clonar este repositorio:
|
||||
|
||||
`git clone --depth 1 https://git.kj2.me/kj/confi-emacs-actual.git ~/.emacs.d`
|
||||
|
||||
Instalación de fonts y libvterm:
|
||||
|
||||
`sudo apt install fonts-firacode fonts-cantarell libvterm-dev cmake`
|
||||
|
||||
Al igual que la versión anterior, puede ser necesario ejecutar el siguiente comando en el minibuffer para tener bien los íconos de neotree:
|
||||
|
||||
`nerd-icons-install-fonts`
|
||||
|
||||
Y eso sería todo.
|
||||
|
||||
## Dependencias espefícicas
|
||||
|
||||
Algunos lenguajes, pueden requerir que instales algunas cosas en específico.
|
||||
|
||||
- *Javascript*: Necesita de al menos [deno](https://deno.land/) para LSP (eglot) y [node](https://nodejs.org/es/) para flycheck, aunque creo que con deno puede bastar para ambos.
|
||||
- *PHP*: Requiere instalar [phpactor](https://phpactor.readthedocs.io/en/master/usage/standalone.html) para el LSP.
|
||||
- *GO*: Necesita etener instalado [go](https://go.dev/) para linter (gofmt) y [gopls](https://github.com/golang/tools/tree/master/gopls) para LSP.
|
||||
- *Rust*: Necesita clippy para flycheck y LSP. Pare este útimo igual es posible usar [rust-analyzer](https://rust-analyzer.github.io).
|
||||
|
||||
Otros:
|
||||
|
||||
- Búsqueda: Requiere tener instalado ripgrep.
|
||||
- Capturas: Requiere silicon para las capturas con silico y que la compilación sea con cairo para las capturas SVG.
|
||||
|
||||
## Usar el modo daemon
|
||||
|
||||
El modo daemon permite a emacs cargar mucho más rápido, puesto que con ello evitas volver a cargar la configuración cada vez que abres un nuevo archivo. Si quieres aprender mas sobre esto, puedes revisarlo en la [documentación de emacs](https://www.emacswiki.org/emacs/EmacsAsDaemon).
|
||||
|
||||
Para iniciar el daemon, puedes hacerlo desde la terminal ejecutando:
|
||||
|
||||
`sudo systemctl --user start emacs`
|
||||
|
||||
Del mismo modo, igual es recomendable habilitar el autoinicio de este servicio junto con el sistema:
|
||||
|
||||
`sudo systemctl --user enable emacs`
|
||||
|
||||
Y abrir emacs mediante emacsclient.
|
||||
|
||||
## Consideraciones
|
||||
|
||||
- Toda la configuración la he realizado en los archivos que están en los archivos de la carpeta config, el archivo `init.el` solo los llama y no guarda nada más aparte de eso.
|
||||
- Se puede activar/desactivar `cua-mode` (`configs/base.el`, línea 49) activado para poder copiar, cortar, pegar y deshacer cambios con las combinaciones típicas en lugar de las de emacs.
|
||||
- Con F9 puedes abrir y cerrar el panel lateral de archivos.
|
||||
- Con C-F11 puedes maximizar/restaurar.
|
||||
- Con C-S-c se puede comentar / descomentar un región.
|
||||
- Con C-S-d se duplica las líneas.
|
||||
- Con M-<arrow keys> se mueven las líneas/palabras.
|
||||
- Por defecto he configurado que al presionar TAB se usen 2 espacios en su lugar.
|
||||
|
||||
Recuerda que si alguna cosa no te gusta, puedes cambiarla a gusto. Esta configuración fue hecha para mi uso personal y puede que tenga cosas que solo a mi me parecen cómodas/útiles.
|
||||
|
||||
## Contacto
|
||||
|
||||
Si se tiene alguna pregunta o quieres comentarme alguna corrección, puesto que este git no está abierto a registro, puedes contactarme mediante:
|
||||
|
||||
E-mail: webmaster@outcontol.net
|
||||
Telegram: [https://t.me/keyjay](https://t.me/keyjay)
|
63
readme.org
Normal file
63
readme.org
Normal file
@ -0,0 +1,63 @@
|
||||
#+TITLE: Configuración Emacs
|
||||
#+AUTHOR: KJ
|
||||
#+OPTIONS: toc:nil
|
||||
|
||||
Esta es mi configuración de Emacs personal y está hecha principalmente para funcionar con *Emacs compilado desde el código*, ya que es así como yo lo uso.
|
||||
|
||||
* Instalación
|
||||
|
||||
Si deseas clonar mi configuración, puedes clonar este repositorio:
|
||||
|
||||
#+begin_src bash
|
||||
git clone --depth 1 https://git.kj2.me/kj/confi-emacs-actual.git ~/.emacs.d
|
||||
#+end_src
|
||||
|
||||
Si no ves los íconos bien dentro de Emacs, puedes ejecutar el comando dentro de Emacs (M-x)
|
||||
|
||||
#+begin_src elisp
|
||||
nerd-icons-install-fonts
|
||||
#+end_src
|
||||
|
||||
* Compilación de Emacs
|
||||
|
||||
Si quieres instalar Emacs tal cual lo tengo yo, esta es la configuración de compilación que actualmente uso:
|
||||
|
||||
#+begin_src bash
|
||||
git clone https://git.savannah.gnu.org/git/emacs.git
|
||||
cd emacs
|
||||
./autogen.sh
|
||||
./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-modules --without-libotf --without-m17n-flt --without-gconf --with-native-compilation=yes --with-native-compilation=aot --with-xinput2 --with-pgtk --with-tree-sitter --without-compress-install --with-mailutils
|
||||
|
||||
make -j16
|
||||
make check
|
||||
sudo make install
|
||||
#+end_src
|
||||
|
||||
Las dependencias para compilar pueden cambiar según tu distribución, por lo que queda en tus manos el ajustar lo que sea necesario.
|
||||
|
||||
Como ayuda lo más que puedo dar es que en las distros basadas en Debian puedes usar =apt build-dep emacs= mientras que en las basadas en RHEL (solo lo he probado en Fedora) puedes usar =dnf builddep emacs=. En el caso de las basadas Arch puedes usar AUR.
|
||||
|
||||
* Dependencias
|
||||
|
||||
Normalmente no es usual el tener dependencias reales para que emacs funcione, pero para el funcionamiendo adecuado y sin errores, lo mejor es tener instalado:
|
||||
|
||||
- El font de firacode
|
||||
- cmake
|
||||
- libvterm
|
||||
|
||||
** Languaje Server Protocol (LSP)
|
||||
|
||||
Esta configuración por defecto utiliza [[https://github.com/joaotavora/eglot][eglot]] para LSP con los servidores por defecto. Puedes revisar su documentación para ver lo que necesitas instalar para usar el LSP del lenguaje que necesites.
|
||||
|
||||
Finalmente, recomiendo instalar [[https://github.com/blahgeek/emacs-lsp-booster][emacs-lsp-booster]], la mejora es nimia en general, pero en proyectos grandes esa pequeña mejora es bastante notoria.
|
||||
|
||||
* Atajos de teclas personalizados
|
||||
|
||||
Tengo varios atajos reconfigurados, por lo que recomiento revisar primero que nada el archivo [[./configs/init-keys.el][init-keys.el]] el resto de configuraciones está principalmente en los archivos [[./configs/init-minibuffer.el][init-minibuffer.el]] e [[./configs/init-packages.el][init-packages.el]], dudo que las uses todas y yo mismo no las uso, por lo que con el tiempo las voy eliminando y a veces agrego alguna extra. Con que revises el primer archivo y sepas que =consult-project= está en =C-x p= ya estás servido.
|
||||
|
||||
* Contacto
|
||||
|
||||
Si se tiene alguna pregunta o quieres comentarme alguna corrección, puesto que este git no está abierto a registro, puedes contactarme mediante:
|
||||
|
||||
*Correo*: webmaster@outcontrol.net
|
||||
*Telegram*: [[https://t.me/keyjay][@keyjay]]
|
Reference in New Issue
Block a user