Compare commits
52 Commits
21185e0438
...
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 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -33,3 +33,4 @@ workspace/
|
||||
/eshell/
|
||||
/.emacs.desktop
|
||||
/.tutor/
|
||||
/intelephense/
|
||||
|
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))))
|
||||
@ -86,7 +88,9 @@
|
||||
)
|
||||
(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)
|
||||
@ -123,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,19 +19,20 @@
|
||||
:defer t
|
||||
:ensure (:files (:defaults "extensions/*")
|
||||
:includes (corfu-info corfu-history))
|
||||
:hook ((elpaca-after-init . global-corfu-mode)
|
||||
(corfu-mode . corfu-popupinfo-mode))
|
||||
:hook ((corfu-mode . corfu-popupinfo-mode))
|
||||
:bind (:map corfu-map
|
||||
("<tab>" . corfu-quit)
|
||||
("<tab>" . corfu-quit)
|
||||
("<escape>" . corfu-quit)
|
||||
("<SPC>" . corfu-insert-separator))
|
||||
("<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)
|
||||
@ -45,9 +46,25 @@
|
||||
;; Cambia la forma de mostrar y buscar sugerencias (afecta a corfu, pero también a otros como vertico).
|
||||
(use-package orderless
|
||||
:defer t
|
||||
:init
|
||||
(setq completion-styles '(flex orderless basic)
|
||||
completion-category-overrides '((file (styles partial-completion)))))
|
||||
: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
|
||||
|
@ -34,12 +34,16 @@
|
||||
: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-ts-mode . ("intelephense" "--stdio")))
|
||||
(add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
)
|
||||
|
||||
;; Mejorar la velocidad de eglot (un binario en rust )
|
||||
@ -57,6 +61,7 @@
|
||||
;; 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))
|
||||
|
@ -30,7 +30,7 @@
|
||||
(evil-set-undo-system 'undo-redo)
|
||||
|
||||
;; Arreglar el problemita con corfu-quit y el cambio de modos
|
||||
(evil-define-key 'insert 'global (kbd "<escape>") '(lambda ()
|
||||
(evil-define-key 'emacs 'global (kbd "<escape>") '(lambda ()
|
||||
"Call `corfu-quit' and then return to Normal State."
|
||||
(interactive)
|
||||
(call-interactively 'corfu-quit)
|
||||
@ -40,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))
|
||||
@ -101,13 +101,14 @@
|
||||
(evil-define-key 'normal 'global (kbd "<leader>mw") 'web-mode)
|
||||
|
||||
;; Otros atajos
|
||||
(evil-define-key 'motion 'global (kbd "<leader>b") 'consult-buffer) ;; Cambiar de buffer
|
||||
(evil-define-key 'motion 'global (kbd "<leader>p") '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>f") '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 solo en modos específicos
|
||||
(setq evil-default-state 'emacs) ;; Modo por defecto en emacs
|
||||
|
@ -30,11 +30,11 @@
|
||||
;; Reemplazo para counsel
|
||||
(use-package consult
|
||||
:defer t
|
||||
:bind (;; C-c bindings in `mode-specific-map'
|
||||
("C-s" . consult-line)
|
||||
:bind (("C-x p" . project-find-file)
|
||||
("C-S-s" . consult-line)
|
||||
("C-c r g" . consult-ripgrep)
|
||||
("C-S-s" . isearch-forward)
|
||||
("C-S-r" . isearch-backward)
|
||||
("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)
|
||||
@ -44,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)
|
||||
|
||||
@ -75,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.
|
||||
@ -130,14 +120,6 @@
|
||||
:defer t
|
||||
: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
|
||||
(use-package marginalia
|
||||
:defer t
|
||||
@ -154,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))
|
||||
|
||||
@ -103,8 +106,6 @@
|
||||
(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
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
;; 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)
|
||||
@ -37,13 +37,14 @@
|
||||
;; 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.)
|
||||
@ -57,17 +58,6 @@
|
||||
;; Un bonito y sencillo panel de inicio
|
||||
(use-package dashboard
|
||||
: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
|
||||
(setq dashboard-set-file-icons t
|
||||
dashboard-set-heading-icons t
|
||||
@ -76,18 +66,20 @@
|
||||
dashboard-agenda-time-string-format "%Y-%m-%d %H:%M")
|
||||
(setq dashboard-startup-banner
|
||||
(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
|
||||
(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
|
||||
@ -98,10 +90,10 @@
|
||||
|
||||
;; 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
|
||||
@ -109,9 +101,12 @@
|
||||
doom-modeline-indent-info nil
|
||||
doom-modeline-persp-name t))
|
||||
|
||||
;; 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
|
||||
:ensure t
|
||||
:defer t
|
||||
:config
|
||||
;; Suelo tener podman siempre en lugar de docker, así que lo definimos como el comando a usar
|
||||
@ -119,47 +114,23 @@
|
||||
|
||||
;; Mover líneas o regiones
|
||||
(use-package drag-stuff
|
||||
:defer t
|
||||
:hook
|
||||
(elpaca-after-init . drag-stuff-global-mode)
|
||||
: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))
|
||||
|
||||
;; Cliente LLM (ollama, chatgpt, gemini, etc.)
|
||||
(use-package gptel
|
||||
:defer t
|
||||
;; Cargar las variables de entorno desde la configuración del usuario
|
||||
(use-package exec-path-from-shell
|
||||
:config
|
||||
(setq gptel-model "dolphin-llama3:latest"
|
||||
gptel-backend (gptel-make-ollama "Ollama"
|
||||
:host "localhost:11434"
|
||||
:stream t
|
||||
:models '("mistral:latest" "dolphin-llama3:latest" "llama3:latest" "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 de libros de informática profesional. Traduce a español tomando en cuenta los posibles tecnicismos que no deberían traducirse.")
|
||||
)
|
||||
)
|
||||
)
|
||||
(exec-path-from-shell-initialize))
|
||||
|
||||
;; Resalta los escapes de secuencia
|
||||
(use-package highlight-escape-sequences
|
||||
@ -223,6 +194,7 @@
|
||||
;; 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)
|
||||
@ -238,6 +210,7 @@
|
||||
;; 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
|
||||
@ -321,8 +294,8 @@
|
||||
;; 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)
|
||||
@ -352,13 +325,14 @@
|
||||
: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 :)
|
||||
@ -377,16 +351,20 @@
|
||||
(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'."
|
||||
@ -399,7 +377,6 @@
|
||||
|
||||
;; Terminal
|
||||
(use-package vterm
|
||||
:ensure t
|
||||
:defer t
|
||||
:config
|
||||
(setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto
|
||||
@ -409,20 +386,28 @@
|
||||
("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
|
||||
|
@ -13,23 +13,19 @@
|
||||
|
||||
;; Theme dracula (https://draculatheme.com/) // aún lo tengo en l config porque a Ney le gusta
|
||||
(use-package dracula-theme
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
;; El theme más cercano a adwaita dark que he encontrado
|
||||
(use-package adwaita-dark-theme
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
;; Themes modus, vienen integrado en emacs en master (~v30)
|
||||
(use-package modus-themes
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
;; Themes ef
|
||||
(use-package ef-themes
|
||||
:defer t
|
||||
:ensure t)
|
||||
:defer t)
|
||||
|
||||
;; Prendemos el theme que elijamos
|
||||
(add-hook 'elpaca-after-init-hook #'(lambda() (load-theme 'ef-dream t)))
|
||||
|
@ -26,9 +26,8 @@
|
||||
;; 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
|
||||
(global-git-gutter-mode 1)
|
||||
(defhydra hydra-git-gutter (:hint nil)
|
||||
"
|
||||
^Navigation^ | ^Actions^ | ^Others^
|
||||
@ -47,7 +46,6 @@
|
||||
|
||||
;; Visitar rápidamente viejas versiones de un archivo rápidamente
|
||||
(use-package git-timemachine
|
||||
:ensure t
|
||||
:defer t)
|
||||
|
||||
;; Generador automatizado de archivos de licencia
|
||||
@ -61,7 +59,6 @@
|
||||
;; Todolist en magit de todos los archivos del projecto.
|
||||
(use-package magit-todos
|
||||
:defer t
|
||||
:after magit
|
||||
:config (magit-todos-mode 1))
|
||||
|
||||
;; Modo para resolución de confictos
|
||||
@ -99,6 +96,9 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
|
||||
("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
|
||||
|
@ -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))
|
||||
|
||||
|
@ -12,13 +12,14 @@
|
||||
(use-package php-ts-mode
|
||||
:defer t
|
||||
:mode "\\.php\\'"
|
||||
;; :init
|
||||
;; (add-to-list 'auto-mode-alist '("\\.php\\'" . php-ts-mode))
|
||||
;; :after php-mode
|
||||
:ensure nil)
|
||||
|
||||
;; Requerido por org-mode para el Syntax Highlight
|
||||
(use-package php-mode
|
||||
:defer t
|
||||
:hook (php-mode . php-ts-mode)
|
||||
:ensure t)
|
||||
;; (use-package php-mode
|
||||
;; :defer t
|
||||
;; :ensure t)
|
||||
|
||||
(use-package php-doc-block
|
||||
:after php-ts-mode
|
||||
|
@ -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.
|
||||
|
Reference in New Issue
Block a user