Compare commits

..

73 Commits

Author SHA1 Message Date
kj
6388d5c0bb Fix drag stuff not starting. 2025-06-10 21:17:29 -03:00
kj
cc1fb2a0c9 Only use defer t for now.
In another oportunity i will optimize this again.
2025-06-08 12:42:48 -03:00
kj
4fc380750e A few tweaks for corfu. 2025-06-03 12:12:15 -03:00
kj
564e6dbac5 Update evil bindings. 2025-05-26 13:41:08 -03:00
kj
2a1309ecaa Change defer times to decimals. 2025-05-26 13:40:35 -03:00
kj
d12c13c027 Update elpaca installer version. 2025-05-26 13:38:55 -03:00
kj
3c7ac83e3f Remove unused/unnecessary consult shortcuts. 2025-05-02 04:50:22 -03:00
kj
089b056916 Remove consult-project-extra in favor of project-find-file (native). 2025-05-02 04:49:19 -03:00
kj
c0a0bc347c Just execute exec-path-from-shell. 2025-05-01 13:47:22 -03:00
kj
f2faff5f3f Remove unnecesary lines. 2025-04-29 19:46:11 -03:00
kj
d497b12805 Improve a few the startup time. 2025-04-29 19:41:46 -03:00
kj
ed5f25fb4d Move gptel to his own ia init file. 2025-04-28 18:58:34 -03:00
kj
f48e200fe7 Enable which-key. 2025-04-28 14:34:03 -03:00
kj
668a2c3c91 Remove unused shortcuts. 2025-04-28 14:32:45 -03:00
kj
cb8a4dcd75 Reduce padding on vertico postframe. 2025-04-28 14:31:56 -03:00
kj
4749773a51 Add delay to corfu. 2025-04-28 14:30:44 -03:00
kj
d41a4ce7ee Add some visual tweaks to vertico-posframe. 2025-04-14 16:54:32 -03:00
kj
5185766542 Add vertico-postframe package. 2025-04-14 16:07:33 -03:00
kj
cf7b239bcb Change dashboard startup behavior. 2025-04-09 14:08:46 -03:00
kj
ad54b6e3c9 Disable hooks for visual tweaks on csv files.
It looks fine, but is not good for edit.
2025-03-28 13:55:44 -03:00
kj
cab913064f Set to use rust-ts-mode. 2025-03-26 17:20:13 -03:00
kj
c3aabfff88 Enable to open big files or files with long lines on so-long-mode. 2025-02-20 19:56:15 -03:00
kj
a0a1282aa2 Enable subword mode by default.
This will allow detecting words (or as words) inside camelCase,
snake_case, kebab-case, and PascalCase.

Note: Without this, kebab-case and snake_case don't have problems, but
I mention all nomenclatures as a group.
2025-02-17 21:54:20 -03:00
kj
8e6fb27ec8 Update elpaca. 2025-02-17 21:43:17 -03:00
kj
32078154c9 Disable php-mode in favor of php-ts-mode. 2025-02-17 21:42:52 -03:00
kj
eac4af5029 Remove scrollbar on daemon mode (emacsclient). 2025-02-16 10:37:47 -03:00
kj
f199adb367 Improve agenda/items load on dashboard. 2025-02-08 16:43:40 -03:00
kj
4051c11dad Ignore intelephense license files. 2025-02-08 16:25:25 -03:00
kj
6be143756c Move eglot hooks for js and ts to eglot file. 2025-02-08 06:29:52 -03:00
kj
cfef8c9a4a Add typescript base config. 2025-02-07 17:40:49 -03:00
kj
fb5e2c8455 Set default shell. 2025-02-02 02:25:53 -03:00
kj
5ebecc1d4b Add new treesit parser: jsdoc and phpdoc. 2024-11-27 19:05:11 -04:00
kj
64d60088cb Add exec-path-from-shell package. 2024-11-27 19:04:54 -04:00
kj
dce274d8ff Remove unnecesary line. 2024-11-27 19:04:37 -04:00
KJ
8133266734 Update elpaca boostrap code. 2024-11-25 13:23:46 -04:00
KJ
147949285e Add transient package as magit requirement.
The build-in version do not fit with magit requeriment.
2024-11-25 13:21:41 -04:00
KJ
9417dcf830 Add docker-compose-mode. 2024-11-15 09:28:12 -04:00
KJ
447b80428b Set intelephense lsp to php-mode. 2024-09-30 08:15:05 -04:00
KJ
95d9746fbf Set mhtml-mode for sintax highlight on html org-src blocks. 2024-09-24 13:35:10 -04:00
KJ
135671b5b9 Disable electric pair. 2024-09-24 13:34:38 -04:00
KJ
45029768b9 Improve lang php config. 2024-09-24 13:33:47 -04:00
KJ
9876be8389 Reconfigure gptel models. 2024-09-21 12:41:05 -04:00
KJ
9553b240d8 Disable corfu mode on speed-type an add afew more books. 2024-09-13 20:37:07 -04:00
KJ
297416d1ce Corfu quit when starts a new word. 2024-09-13 03:34:56 -04:00
KJ
4148fff8a1 Change escape binding. 2024-09-13 00:26:00 -04:00
KJ
39862a753d Use emacs state instead insert. 2024-09-12 23:37:59 -04:00
KJ
85ad5c15b3 Add one more shortcut for expand region. 2024-09-12 23:18:22 -04:00
KJ
c3a2df6bef Ignore case in competition and configure competition-overrides. 2024-09-12 23:00:01 -04:00
KJ
4ceabc679a Remove competition overrides. 2024-09-12 22:54:24 -04:00
KJ
4733bb46ac Change a bit the orderless config. 2024-09-12 22:51:24 -04:00
KJ
c97b3a974e Change to use isearch by default and consult-line with C-S-s. 2024-09-12 22:16:06 -04:00
KJ
9b1bd93ceb Remove unused shortcuts. 2024-09-12 22:15:43 -04:00
KJ
21185e0438 Simplify most used keybindings. 2024-09-12 20:29:15 -04:00
KJ
3f618a44e7 Ensure evil initial state for magit and vtrem modes. 2024-09-11 08:48:07 -04:00
KJ
e99e71a6a5 Use emacs state when starts git-timemachine. 2024-09-11 08:47:38 -04:00
KJ
adc3d07d35 Set git commit initial state to emacs instead normal (evil). 2024-09-10 14:13:37 -04:00
KJ
2178a2e7cb Remove shortcut for C-r on evil mode. 2024-09-10 14:12:59 -04:00
KJ
c39574582f change shortcut for consult-ripgrep. 2024-09-10 14:08:16 -04:00
KJ
6972b11f0a User evil-normal-state as ininitial only with some modes. 2024-09-10 12:51:50 -04:00
KJ
8e8544960e Ignore evil-tutor files. 2024-09-10 12:44:00 -04:00
KJ
1752b38dc1 Fix problem with corfu-quit and evil. 2024-09-10 12:43:53 -04:00
KJ
b6dc907ad8 Fix corfu binding. 2024-09-10 11:32:45 -04:00
KJ
7d145f6200 Add some corfu tweaks. 2024-09-10 11:31:57 -04:00
KJ
8f0334c51b Ensure always run php-ts-mode an not php-mode. 2024-09-08 14:12:46 -04:00
KJ
da816f098a Add dockerfile-mode. 2024-09-07 11:07:44 -04:00
KJ
4752f03dfc Add php-mode again but not to replace php-ts-mode.
This is only needed on org-mode for Syntax Highlighting.
2024-09-07 11:06:05 -04:00
KJ
7134c41dfc Change default theme. 2024-08-02 10:48:15 -04:00
KJ
ff22f194d4 Move version control config to its own file. 2024-07-24 20:45:20 -04:00
KJ
f9329c4a32 Remove unused/comented code. 2024-07-24 20:44:39 -04:00
KJ
30c890a155 Replace php-mode with php-ts-mode.
This is a huge improvement from the same author of the package.
2024-07-02 11:55:47 -04:00
KJ
4407141739 Remove unused package. 2024-07-02 11:55:02 -04:00
KJ
734d3cf08c Change to intelephense LSP server for PHP.
Just now phpactor is bad and only old versions works fine, but that
versions has it the old and already resolved bugs on the newest
version.

Previously, intelephense was bad integraion with newer php versions,
but now it works fine again. So maybe I will to buy a licence for this
lsp server.
2024-07-01 10:08:56 -04:00
KJ
c2792c0415 Ignore desktop file. 2024-06-25 15:09:11 -04:00
17 changed files with 365 additions and 236 deletions

3
.gitignore vendored
View File

@ -31,3 +31,6 @@ workspace/
/devdocs/ /devdocs/
/.mc-lists.el /.mc-lists.el
/eshell/ /eshell/
/.emacs.desktop
/.tutor/
/intelephense/

46
configs/init-ai.el Normal file
View 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

View File

@ -20,12 +20,12 @@
)) ))
;; Instalar elpaca.el (reemplpazando package.el) ;; 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-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory)) (defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory)) (defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git" (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")) :files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package))) :build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory)) (let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
@ -37,16 +37,18 @@
(make-directory repo t) (make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x)) (when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err (condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*")) (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (call-process "git" nil buffer t "clone" ((zerop (apply #'call-process `("git" nil ,buffer t "clone"
(plist-get order :repo) repo))) ,@(when-let* ((depth (plist-get order :depth)))
((zerop (call-process "git" nil buffer t "checkout" (list (format "--depth=%d" depth) "--no-single-branch"))
(or (plist-get order :ref) "--")))) ,(plist-get order :repo) ,repo))))
(emacs (concat invocation-directory invocation-name)) ((zerop (call-process "git" nil buffer t "checkout"
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch" (or (plist-get order :ref) "--"))))
"--eval" "(byte-recompile-directory \".\" 0 'force)"))) (emacs (concat invocation-directory invocation-name))
((require 'elpaca)) ((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
((elpaca-generate-autoloads "elpaca" repo))) "--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer)) (progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string)))) (error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive)))) ((error) (warn "%s" err) (delete-directory repo 'recursive))))
@ -86,7 +88,9 @@
) )
(tooltip-mode -1) ; Disable tooltips. (tooltip-mode -1) ; Disable tooltips.
(global-display-line-numbers-mode) ; Mostar número de línea. (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. (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). (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. ;; (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) (setq use-short-answers t) ; Usar respuesta cortas (y/n) en lugar de las largas (yes/no)
@ -123,11 +127,7 @@
"Carga la configuración del modo daemon." "Carga la configuración del modo daemon."
(message "Corriendo en modo daemon.") (message "Corriendo en modo daemon.")
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112) (set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
(scroll-bar-mode -1)
;; Abrir primero el dashboard
(setq initial-buffer-choice (lambda ()
(get-buffer "*dashboard*")
(dashboard-refresh-buffer)))
;; Cerrar buffers al cerrar emacsclient ;; Cerrar buffers al cerrar emacsclient
;; (add-hook 'delete-frame-functions ;; (add-hook 'delete-frame-functions

View File

@ -19,29 +19,52 @@
:defer t :defer t
:ensure (:files (:defaults "extensions/*") :ensure (:files (:defaults "extensions/*")
:includes (corfu-info corfu-history)) :includes (corfu-info corfu-history))
:hook ((elpaca-after-init . global-corfu-mode) :hook ((corfu-mode . corfu-popupinfo-mode))
(corfu-mode . corfu-popupinfo-mode))
:bind (:map corfu-map :bind (:map corfu-map
("<tab>" . corfu-quit) ("<tab>" . corfu-quit)
("<escape>" . corfu-quit) ("<escape>" . corfu-quit)
("<SPC>" . corfu-insert-separator)) ("<SPC>" . corfu-insert-separator))
:custom :custom
(corfu-auto t) (corfu-auto t)
:config :config
(global-corfu-mode)
(setq corfu-popupinfo-delay 0 (setq corfu-popupinfo-delay 0
corfu-auto-delay 0.5 corfu-auto-delay 1
corfu-auto-prefix 1 corfu-auto-prefix 1
corfu-cycle t corfu-cycle t
corfu-quit-at-boundary t
corfu-preview-current nil corfu-preview-current nil
corfu-quit-no-match t) 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). ;; Cambia la forma de mostrar y buscar sugerencias (afecta a corfu, pero también a otros como vertico).
(use-package orderless (use-package orderless
:defer t :defer t
:init :after corfu
(setq completion-styles '(flex orderless basic) :custom
completion-category-overrides '((file (styles partial-completion))))) (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. ;; Set de funciones de para las sugerencias de corfu.
(use-package cape (use-package cape
@ -52,6 +75,7 @@
("C-c l" . cape-line) ("C-c l" . cape-line)
("C-c _" . cape-tex)) ("C-c _" . cape-tex))
:init :init
(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-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-tex) ;; Completar Latex (caracteres unicode). ;; (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-dict) ;; Completar desde un diccionario (por defecto toma el de linux que está en /usr/share/dict/words).

View File

@ -31,14 +31,19 @@
(use-package eglot (use-package eglot
:defer t :defer t
;; :ensure nil :ensure nil
:hook ((css-mode . eglot-ensure) :hook ((css-mode . eglot-ensure)
(html-mode . eglot-ensure) (html-mode . eglot-ensure)
(php-mode . eglot-ensure) (php-mode . eglot-ensure)
(rust-mode . eglot-ensure) (php-ts-mode . eglot-ensure)
(sh-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 :config
(setq eglot-sync-connect 0) (setq eglot-sync-connect 0)
(add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
) )
;; Mejorar la velocidad de eglot (un binario en rust ) ;; Mejorar la velocidad de eglot (un binario en rust )
@ -56,6 +61,7 @@
;; Emmet (mientras veo como hacer funcionar emmet-ls) ;; Emmet (mientras veo como hacer funcionar emmet-ls)
(use-package emmet-mode (use-package emmet-mode
:defer t :defer t
:after eglot
:hook :hook
((html-mode . emmet-mode) ((html-mode . emmet-mode)
(web-mode . emmet-mode)) (web-mode . emmet-mode))

View File

@ -14,24 +14,33 @@
;;; Code: ;;; Code:
(use-package evil (use-package evil
:defer t :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 :config
;; Configuraciones básicas ;; Configuraciones básicas
;; (setq evil-default-state 'emacs) ;; Modo por defecto en emacs ;; (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-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 ;; (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-leader 'motion (kbd "SPC")) ;; Leader key
(evil-set-undo-system 'undo-redo) (evil-set-undo-system 'undo-redo)
;; Habilitar atajos de de tecla de emacs en insert state ;; Arreglar el problemita con corfu-quit y el cambio de modos
(setq evil-insert-state-map (make-sparse-keymap)) (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)))
;; (evil-define-key 'normal 'global (kbd "<escape>") 'corfu-quit) ;; (evil-define-key 'normal 'global (kbd "<escape>") 'corfu-quit)
;; Cambiar a mode emacs con escape ;; Cambiar a mode emacs con escape
;; (evil-define-key 'emacs 'global (kbd "<escape>") 'evil-normal-state) ;; (evil-define-key 'emacs 'global (kbd "<escape>") 'evil-normal-state)
;; Cambiar Insert state por emacs 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) ;; Variales locales (todos los estados o solo los estados de VIM)
(setq all-states '(normal insert visual replace operator motion emacs)) (setq all-states '(normal insert visual replace operator motion emacs))
@ -44,8 +53,7 @@
;; Cambiar C-z a deshacer ;; Cambiar C-z a deshacer
(evil-define-key all-states 'global (kbd "C-z") 'undo) (evil-define-key all-states 'global (kbd "C-z") 'undo)
;; Cambiar C-r a ripgrep y U hasta hacer redo ;; Cambiar U para hacer redo
(evil-define-key vim-states 'global (kbd "C-r") 'consult-ripgrep)
(evil-define-key 'normal 'global (kbd "U") 'undo-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 "C-S-z") 'undo-redo)
(evil-define-key 'normal 'global (kbd "M-.") 'xref-find-definitions) (evil-define-key 'normal 'global (kbd "M-.") 'xref-find-definitions)
@ -88,25 +96,32 @@
;; Cambios de modos ;; Cambios de modos
(evil-define-key 'normal 'global (kbd "<leader>mh") 'html-mode) (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>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>mr") 'rust-mode)
(evil-define-key 'normal 'global (kbd "<leader>mw") 'web-mode) (evil-define-key 'normal 'global (kbd "<leader>mw") 'web-mode)
;; Otros atajos ;; Otros atajos
(evil-define-key 'motion 'global (kbd "<leader>xb") 'consult-buffer) ;; Cambiar de buffer (evil-define-key 'motion 'global (kbd "<leader>b") 'switch-to-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>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>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>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>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>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 ;; Iniciar en normal state solo en modos específicos
;; (evil-set-initial-state 'prog-mode 'normal) (setq evil-default-state 'emacs) ;; Modo por defecto en emacs
;; (evil-set-initial-state 'org-mode 'normal) (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 'dashboard-mode 'normal)
(evil-set-initial-state 'dired 'normal) (evil-set-initial-state 'dired 'normal)
(evil-set-initial-state 'vterm-mode 'emacs) (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. ;; Funciones y atajos de teclas especiales para evil cuando estamo en org-mode.
@ -118,5 +133,10 @@
:after org :after org
:hook (org-mode . evil-org-mode)) :hook (org-mode . evil-org-mode))
;; Similar a Vimtutor, pero para evil.
(use-package evil-tutor
:defer t
:ensure t)
(provide 'init-evil) (provide 'init-evil)
;;; init-evil.el ends here ;;; init-evil.el ends here

View File

@ -27,7 +27,7 @@
(global-set-key (kbd "C-x m") nil) ; Unbind mail on C-x m (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 mh") 'mhtml-mode)
(global-set-key (kbd "C-x mj") 'js-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 mr") 'rust-mode)
(global-set-key (kbd "C-x mw") 'web-mode) (global-set-key (kbd "C-x mw") 'web-mode)

View File

@ -30,11 +30,11 @@
;; Reemplazo para counsel ;; Reemplazo para counsel
(use-package consult (use-package consult
:defer t :defer t
:bind (;; C-c bindings in `mode-specific-map' :bind (("C-x p" . project-find-file)
("C-s" . consult-line) ("C-S-s" . consult-line)
("C-r" . consult-ripgrep) ("C-c r g" . consult-ripgrep)
("C-S-s" . isearch-forward) ("C-S-r" . consult-ripgrep)
("C-S-r" . isearch-backward) ;; ("C-S-s" . isearch-forward)
("M-m" . consult-mode-command) ("M-m" . consult-mode-command)
("C-c h" . consult-history) ("C-c h" . consult-history)
("C-c k" . consult-kmacro) ("C-c k" . consult-kmacro)
@ -44,30 +44,21 @@
([remap recentf-open-files] . consult-recent-file) ([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 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 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 ;; Consult search
("C-c p f" . consult-find) ;; Búsqueda de archivos en todo el projecto incluso en carpetas ("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 ("C-c p l" . consult-line-multi) ;; Búsqueda en todos los buffers del projecto abiertos
;; Custom M-# bindings for fast register access ;; Custom M-# bindings for fast register access
("C-'" . consult-register-load) ("C-'" . consult-register-load)
("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
("M-¡" . consult-register)
;; Other custom bindings ;; 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 bindings in `goto-map'
("M-g f" . consult-flymake) ;; Alternative: consult-flycheck ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line ("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-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)
("M-g I" . consult-imenu-multi) ("M-g I" . consult-imenu-multi)
@ -75,14 +66,13 @@
:map minibuffer-local-map :map minibuffer-local-map
("<escape>" . minibuffer-keyboard-quit) ;; Cacelar minibuffer con escape (más rápido que C-g) ("<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-<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." "Insert the current symbol."
(interactive) (interactive)
(insert (save-excursion (insert (save-excursion
(set-buffer (window-buffer (minibuffer-selected-window))) (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. (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 ;; Enable automatic preview at point in the *Completions* buffer. This is
;; relevant when you use the default completion UI. ;; relevant when you use the default completion UI.
@ -130,14 +120,6 @@
:defer t :defer t
:hook (ibuffer-mode . nerd-icons-ibuffer-mode)) :hook (ibuffer-mode . nerd-icons-ibuffer-mode))
;; Integración entre consult y project
(use-package consult-project-extra
:defer t
:ensure t
:bind
(("C-x p" . consult-project-extra-find)
("C-c p o" . consult-project-extra-find-other-window)))
;; Descripciones en el minibufer ;; Descripciones en el minibufer
(use-package marginalia (use-package marginalia
:defer t :defer t
@ -154,5 +136,16 @@
:bind ("C-c t" . consult-todo) :bind ("C-c t" . consult-todo)
:defer t) :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) (provide 'init-minibuffer)
;;; init-minibuffer.el ends here ;;; init-minibuffer.el ends here

View File

@ -25,6 +25,9 @@
(visual-line-mode 1) (visual-line-mode 1)
(visual-fill-column-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 ;; Configuración de fonts
;; (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face)) ;; (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face))
@ -103,8 +106,6 @@
(use-package org (use-package org
:defer t :defer t
:ensure nil :ensure nil
:bind (("C-c a" . org-agenda)
("C-c c" . org-capture))
:hook :hook
(org-mode . kj/org-hook) (org-mode . kj/org-hook)
:config :config

View File

@ -22,7 +22,7 @@
;; Intercamiar buffers de lugar ;; Intercamiar buffers de lugar
(use-package buffer-move (use-package buffer-move
:defer t :defer 2
:bind (("M-S-<up>" . buf-move-up) :bind (("M-S-<up>" . buf-move-up)
("M-S-<down>" . buf-move-down) ("M-S-<down>" . buf-move-down)
("M-S-<left>" . buf-move-left) ("M-S-<left>" . buf-move-left)
@ -37,13 +37,14 @@
;; Seleccionar por regiones (similar a mark-sexp, pero toma en cuenta hacia atrás del cursor también) ;; Seleccionar por regiones (similar a mark-sexp, pero toma en cuenta hacia atrás del cursor también)
(use-package expand-region (use-package expand-region
:defer t :defer t
:bind ("C-+" . er/expand-region)) :bind (("C-+" . er/expand-region)
("C-=" . er/expand-region)))
;; Major mode para archivos CSV ;; Major mode para archivos CSV
(use-package csv-mode (use-package csv-mode
:defer t :defer t
:hook ((csv-mode . csv-align-mode) ;; :hook ((csv-mode . csv-align-mode)
(csv-mode . csv-header-line)) ;; (csv-mode . csv-header-line))
) )
;; Visor de documentos de emacs (soporta de todo: epub, pdf, odt, docx, cbz, etc.) ;; Visor de documentos de emacs (soporta de todo: epub, pdf, odt, docx, cbz, etc.)
@ -57,17 +58,6 @@
;; Un bonito y sencillo panel de inicio ;; Un bonito y sencillo panel de inicio
(use-package dashboard (use-package dashboard
:defer t :defer t
:init
(dashboard-setup-startup-hook)
:hook
(dashboard-after-initialize . (lambda ()
"Refrescamos el dashboard con la agenda luego de cargar todo"
(setq dashboard-items '(
;; (recents . 10)
(agenda . 10)
))
(dashboard-refresh-buffer)
))
:config :config
(setq dashboard-set-file-icons t (setq dashboard-set-file-icons t
dashboard-set-heading-icons t dashboard-set-heading-icons t
@ -76,18 +66,20 @@
dashboard-agenda-time-string-format "%Y-%m-%d %H:%M") dashboard-agenda-time-string-format "%Y-%m-%d %H:%M")
(setq dashboard-startup-banner (setq dashboard-startup-banner
(expand-file-name "duck.svg" user-emacs-directory)) (expand-file-name "duck.svg" user-emacs-directory))
(setq dashboard-items '()) (setq dashboard-items '(
;; (recents . 10)
(agenda . 10)
))
) )
;; Coloca en emacs la documentacón distribuída por devdocs.io ;; Coloca en emacs la documentacón distribuída por devdocs.io
(use-package devdocs (use-package devdocs
:defer t) :defer 2)
;; Sidebar a la derecha con los archivos ;; Sidebar a la derecha con los archivos
(use-package dired-sidebar (use-package dired-sidebar
:defer t :defer t
:hook (dired-mode . hl-line-mode) :hook (dired-mode . hl-line-mode)
:ensure t
:bind ([f9] . dired-sidebar-toggle-sidebar) :bind ([f9] . dired-sidebar-toggle-sidebar)
:commands (dired-sidebar-toggle-sidebar) :commands (dired-sidebar-toggle-sidebar)
:config :config
@ -96,20 +88,12 @@
;; dired-sidebar-follow-file-idle-delay 0.5 ;; 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 ;; La línea bonita esa de abajo
(use-package doom-modeline (use-package doom-modeline
:defer t :after emacs
:ensure t :ensure t
:hook (elpaca-after-init . doom-modeline-mode)
:config :config
(doom-modeline-mode)
(setq doom-modeline-project-detection 'auto (setq doom-modeline-project-detection 'auto
doom-modeline-buffer-file-name-style 'relative-from-project doom-modeline-buffer-file-name-style 'relative-from-project
doom-modeline-major-mode-color-icon t doom-modeline-major-mode-color-icon t
@ -117,78 +101,36 @@
doom-modeline-indent-info nil doom-modeline-indent-info nil
doom-modeline-persp-name t)) doom-modeline-persp-name t))
;; Resolver diferencias entre 2 archivos o versiones del mismo. ;; Modo para edición de arc docker compose
(use-package ediff (use-package docker-compose-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))
;; 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))
;; 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)
:config
(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
:ensure t
:defer t) :defer t)
;; Cliente LLM (ollama, chatgpt, gemini, etc.) ;; Modo para la edición de archivos Dockerfile (y building desde emacs)
(use-package gptel (use-package dockerfile-mode
:defer t :defer t
:config :config
(setq gptel-model "dolphin-llama3:latest" ;; Suelo tener podman siempre en lugar de docker, así que lo definimos como el comando a usar
gptel-backend (gptel-make-ollama "Ollama" (setq dockerfile-mode-command "podman"))
:host "localhost:11434"
:stream t ;; Mover líneas o regiones
:models '("mistral:latest" "dolphin-llama3:latest" "llama3:latest" "llava:latest")) (use-package drag-stuff
gptel-default-mode 'org-mode :defer 1
gptel-prompt-prefix-alist :config
'((markdown-mode . "# ") (drag-stuff-global-mode)
(org-mode . "* ") (drag-stuff-define-keys))
(text-mode . "# "))
gptel-directives ;; Emparejamiento automático de comillas, paréntesis, corchetes y llaves
'((default . "Eres un LLM que vive dentro de Emacs. Responde de manera concisa.") ;; (use-package electric-pair
(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.") ;; :defer t
(programming_tutor . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y realiza sugerencias concisas en español para mejorarlo.") ;; :ensure nil
(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.") ;; :config
(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.") ;; (electric-pair-mode)
(writing . "Eres un LLM y un asistente de escritura. Responde de manera concisa.") ;; (setq electric-pair-delete-adjacent-pairs nil))
(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.") ;; Cargar las variables de entorno desde la configuración del usuario
(traductor . "Eres un traductor de libros de informática profesional. Traduce a español tomando en cuenta los posibles tecnicismos que no deberían traducirse.") (use-package exec-path-from-shell
) :config
) (exec-path-from-shell-initialize))
)
;; Resalta los escapes de secuencia ;; Resalta los escapes de secuencia
(use-package highlight-escape-sequences (use-package highlight-escape-sequences
@ -201,6 +143,7 @@
(objc-mode . ,hes-c/c++/objc-escape-sequence-re) (objc-mode . ,hes-c/c++/objc-escape-sequence-re)
(go-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-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) (java-mode . ,hes-java-escape-sequence-re)
(clojure-mode . ,hes-java-escape-sequence-re) (clojure-mode . ,hes-java-escape-sequence-re)
(js-mode . ,hes-js-escape-sequence-re) (js-mode . ,hes-js-escape-sequence-re)
@ -244,20 +187,6 @@
keypression-font-face-attribute '(:width normal :height 180 :weight bold)) 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 ;; Modo markdown
(use-package markdown-mode (use-package markdown-mode
:defer t) :defer t)
@ -265,6 +194,7 @@
;; Multiple vterm ;; Multiple vterm
(use-package multi-vterm (use-package multi-vterm
:defer t :defer t
:after vterm
:bind* (("<f5>" . multi-vterm-dedicated-toggle) :bind* (("<f5>" . multi-vterm-dedicated-toggle)
("C-x tt" . multi-vterm-dedicated-toggle) ("C-x tt" . multi-vterm-dedicated-toggle)
("C-x tf" . multi-vterm) ("C-x tf" . multi-vterm)
@ -280,16 +210,13 @@
;; Usar nerd-icons en dired ;; Usar nerd-icons en dired
(use-package nerd-icons-dired (use-package nerd-icons-dired
:defer t :defer t
:after nerd-icons
:hook (dired-mode . nerd-icons-dired-mode)) :hook (dired-mode . nerd-icons-dired-mode))
;; Modo para leer archivos de configuración de nginx ;; Modo para leer archivos de configuración de nginx
(use-package nginx-mode (use-package nginx-mode
:defer t) :defer t)
;; Lector EPUB
;; (use-package nov
;; :defer t)
;; Múltiples modos en un mismo buffer ;; Múltiples modos en un mismo buffer
;; (use-package polymode ;; (use-package polymode
;; :defer t) ;; :defer t)
@ -367,8 +294,8 @@
;; Mejorando el scroll ;; Mejorando el scroll
(use-package smooth-scrolling (use-package smooth-scrolling
:defer t :defer t
:hook (elpaca-after-init . smooth-scrolling-mode)
:config :config
(smooth-scrolling-mode 1)
(setq mouse-wheel-scroll-amount (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 '(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) (setq mouse-wheel-progressive-speed nil) ; Deshabilita la velocidad progresiva del scroll (mientras más scroll haces, mas rápido va)
@ -398,13 +325,14 @@
:defer t :defer t
:hook :hook
(speed-type-mode . (lambda () (speed-type-mode . (lambda ()
(corfu-mode 0)
(display-line-numbers-mode 0) (display-line-numbers-mode 0)
(visual-line-mode 1) (visual-line-mode 1)
(visual-fill-column-mode 1))) (visual-fill-column-mode 1)))
:diminish :diminish
:config :config
(setq speed-type-gb-book-list '(66867 66866 66591 57303) (setq speed-type-gb-book-list '(66867 66866 66591 57303 15725 24536)
speed-type-min-chars 500 speed-type-min-chars 300
speed-type-max-chars 600)) speed-type-max-chars 600))
;; Tree-sitter :) ;; Tree-sitter :)
@ -423,16 +351,20 @@
(html . ("https://github.com/tree-sitter/tree-sitter-html")) (html . ("https://github.com/tree-sitter/tree-sitter-html"))
(java . ("https://github.com/tree-sitter/tree-sitter-java")) (java . ("https://github.com/tree-sitter/tree-sitter-java"))
(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript")) (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")) (json . ("https://github.com/tree-sitter/tree-sitter-json"))
(julia . ("https://github.com/tree-sitter/tree-sitter-julia")) (julia . ("https://github.com/tree-sitter/tree-sitter-julia"))
(lua . ("https://github.com/Azganoth/tree-sitter-lua")) (lua . ("https://github.com/Azganoth/tree-sitter-lua"))
(make . ("https://github.com/alemuller/tree-sitter-make")) (make . ("https://github.com/alemuller/tree-sitter-make"))
(python . ("https://github.com/tree-sitter/tree-sitter-python")) (python . ("https://github.com/tree-sitter/tree-sitter-python"))
(php . ("https://github.com/tree-sitter/tree-sitter-php" "master" "php/src")) (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")) (ruby . ("https://github.com/tree-sitter/tree-sitter-ruby"))
(rust . ("https://github.com/tree-sitter/tree-sitter-rust")) (rust . ("https://github.com/tree-sitter/tree-sitter-rust"))
(sql . ("https://github.com/m-novikov/tree-sitter-sql")) (sql . ("https://github.com/m-novikov/tree-sitter-sql"))
(toml . ("https://github.com/tree-sitter/tree-sitter-toml")) (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")))) (zig . ("https://github.com/GrayJack/tree-sitter-zig"))))
(defun nf/treesit-install-all-languages () (defun nf/treesit-install-all-languages ()
"Install all languages specified by `treesit-language-source-alist'." "Install all languages specified by `treesit-language-source-alist'."
@ -443,23 +375,8 @@
(message "`%s' parser was installed." lang) (message "`%s' parser was installed." lang)
(sit-for 0.75))))) (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 ;; Terminal
(use-package vterm (use-package vterm
:ensure t
:defer t :defer t
:config :config
(setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto (setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto
@ -469,20 +386,28 @@
("podman" "/bin/bash"))) ;; Tanto docker como podman usarán bash cuado se contecte mediante tramp ("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 (use-package which-key
:defer t :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 ;; Restaurar el estado de los frames
(use-package winner (use-package winner
:ensure nil :ensure nil
:defer t :defer t
:hook (elpaca-after-init . winner-mode)) :config
(winner-mode))
;; Emacs Start Up Profiler ;; Emacs Start Up Profiler
(use-package esup ;; (use-package esup
:defer t) ;; :defer t)
(provide 'init-packages) (provide 'init-packages)
;;; init-packages.el ends here ;;; init-packages.el ends here

View File

@ -13,26 +13,22 @@
;; Theme dracula (https://draculatheme.com/) // aún lo tengo en l config porque a Ney le gusta ;; Theme dracula (https://draculatheme.com/) // aún lo tengo en l config porque a Ney le gusta
(use-package dracula-theme (use-package dracula-theme
:ensure t
:defer t) :defer t)
;; El theme más cercano a adwaita dark que he encontrado ;; El theme más cercano a adwaita dark que he encontrado
(use-package adwaita-dark-theme (use-package adwaita-dark-theme
:ensure t
:defer t) :defer t)
;; Themes modus, vienen integrado en emacs en master (~v30) ;; Themes modus, vienen integrado en emacs en master (~v30)
(use-package modus-themes (use-package modus-themes
:ensure t
:defer t) :defer t)
;; Themes ef ;; Themes ef
(use-package ef-themes (use-package ef-themes
:defer t :defer t)
:ensure t)
;; Prendemos el theme que elijamos ;; Prendemos el theme que elijamos
(add-hook 'elpaca-after-init-hook #'(lambda() (load-theme 'adwaita-dark t))) (add-hook 'elpaca-after-init-hook #'(lambda() (load-theme 'ef-dream t)))
;; Los themes que recomiendo: ;; Los themes que recomiendo:
;; Oscuros: adwaita-dark y ef-dream ;; Oscuros: adwaita-dark y ef-dream

111
configs/init-vc.el Normal file
View 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

View File

@ -14,8 +14,9 @@
:ensure nil :ensure nil
:mode :mode
("\\.js$" . js-mode) ("\\.js$" . js-mode)
:hook :init
(js-mode . eglot-ensure) (add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode))
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
:config :config
(setq js-indent-level 2)) (setq js-indent-level 2))

View File

@ -9,25 +9,21 @@
;;; Code: ;;; Code:
(use-package php-mode (use-package php-ts-mode
:defer t :defer t
:bind ("C-c d b" . kj/php-doc-block) :mode "\\.php\\'"
:config ;; :init
(defun kj/php-doc-block () ;; (add-to-list 'auto-mode-alist '("\\.php\\'" . php-ts-mode))
"Llama a \"php-dock-block\", sin conflicto con \"vs-comment-return-mode\"." ;; :after php-mode
(interactive) :ensure nil)
(if (bound-and-true-p vs-comment-return-mode)
(funcall (lambda() ;; (use-package php-mode
(vs-comment-return-mode -1) ;; :defer t
(php-doc-block) ;; :ensure t)
(vs-comment-return-mode 1)))
(php-doc-block)
)
)
)
(use-package php-doc-block (use-package php-doc-block
:after php-mode :after php-ts-mode
:bind ("C-c d b" . php-doc-block)
:ensure (:host github :repo "moskalyovd/emacs-php-doc-block") :ensure (:host github :repo "moskalyovd/emacs-php-doc-block")
) )

View File

@ -12,6 +12,8 @@
(use-package rust-mode (use-package rust-mode
:defer t :defer t
:ensure t :ensure t
:init
(setq rust-mode-treesitter-derive t)
:config :config
(setq rust-format-on-save t)) (setq rust-format-on-save t))

View File

@ -39,6 +39,9 @@
;; Permitir solo la búsqueda de archivos a cargar en la config en case sensitive. ;; Permitir solo la búsqueda de archivos a cargar en la config en case sensitive.
(setq auto-mode-case-fold nil) (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á) ;; 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 '(menu-bar-lines . 0) default-frame-alist) ; Quitar menús.
(push '(tool-bar-lines . 0) default-frame-alist) ; Quitar toolbar. (push '(tool-bar-lines . 0) default-frame-alist) ; Quitar toolbar.

View File

@ -18,6 +18,8 @@
(require 'init-theme) (require 'init-theme)
(require 'init-packages) (require 'init-packages)
(require 'init-functions) (require 'init-functions)
(require 'init-ai)
(require 'init-vc)
(require 'init-org) (require 'init-org)
(require 'init-eglot) (require 'init-eglot)
(require 'init-corfu) (require 'init-corfu)