;;; base-extensions.el --- Extensiones/paquetes instalados y su configuración -*- lexical-binding: t -*- ;; Author: kj ;; URL: https://git.kj2.me/kj/confi-emacs-actual ;;; Commentary: ;;; Code: ;; Iconos principalmente para ser usados por neotree (use-package all-the-icons :defer t :straight t) ;; Reemplazar mejorado (use-package anzu :defer :ensure t :straight t :hook (after-init . global-anzu-mode) :config (global-set-key [remap query-replace] 'anzu-query-replace) (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp)) ;; Un bonito y sencillo panel de inicio (use-package dashboard :defer t :straight t :hook (after-init . dashboard-setup-startup-hook) :config (setq dashboard-set-file-icons t) (setq dashboard-set-heading-icons t) (setq dashboard-set-file-icons t) (setq dashboard-startup-banner (expand-file-name "duck-small.png" user-emacs-directory)) (setq dashboard-items '( (agenda . 10) ;;(recents . 10) )) ) ;; Mover líneas o regiones (use-package drag-stuff :defer t :straight t :hook (after-init . drag-stuff-global-mode) :config (drag-stuff-define-keys)) ;; La línea bonita esa de abajo (use-package doom-modeline :defer t :straight t :ensure t :hook (after-init . doom-modeline-mode) :config (setq doom-modeline-project-detection 'auto doom-modeline-buffer-file-name-style 'relative-from-project doom-modeline-major-mode-color-icon t doom-modeline-buffer-modification-icon t doom-modeline-indent-info nil doom-modeline-persp-name t)) ;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás) (use-package emmet-mode :defer t :straight t :hook (html-mode . emmet-mode)) ;; Revisar sintaxis en vivo (use-package flycheck ;; :diminish flycheck-mode :defer t :straight t :hook (after-init . global-flycheck-mode) ; Habilitar flycheck de manera global ) ;; Mostrar los errores de flycheck en un pop up (use-package flycheck-popup-tip :defer t :straight t :hook (flycheck-mode . flycheck-popup-tip-mode)) ;; 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 :straight t :hook (after-init . global-git-gutter-mode)) (use-package gcmh :defer t :straight t :init (setq gcmh-high-cons-threshold 100000000) (gcmh-mode 1)) ;; Highlight en los números. ;; (use-package highlight-numbers ;; :defer t ;; :straight t ;; :ensure t ;; :hook ;; (prog-mode . highlight-numbers-mode)) ;; Magia para git (use-package magit :defer t :straight t) ;; Modo markdown (use-package markdown-mode :defer t :straight t) ;; Multiple vterm (use-package multi-vterm :defer t :straight t :bind* (("C-x tt" . multi-vterm-dedicated-toggle) ("C-x tf" . multi-vterm) ("C-x tp" . multi-vterm-project) ;;("" . vterm-send-tab) ) :ensure t) ;; Mecanografía (use-package speed-type :straight t :diminish :config (setq speed-type-gb-book-list '(66867 66866 66591 57303) speed-type-min-chars 500 speed-type-max-chars 600)) ;; Code Folding (use-package origami :defer t :straight t :bind (("C-" . origami-toggle-node) ("C-" . origami-toggle-all-nodes)) :hook (after-init . global-origami-mode)) ;; Pomodoro en emacs :D (use-package pomidor :defer t :straight t :bind ("" . pomidor) :init ;; (setq alert-default-style 'mode-line) (setq alert-default-style 'libnotify) (with-eval-after-load 'all-the-icons (setq alert-severity-faces '((urgent . all-the-icons-red) (high . all-the-icons-orange) (moderate . all-the-icons-yellow) (normal . all-the-icons-green) (low . all-the-icons-blue) (trivial . all-the-icons-purple)) alert-severity-colors `((urgent . ,(face-foreground 'all-the-icons-red)) (high . ,(face-foreground 'all-the-icons-orange)) (moderate . ,(face-foreground 'all-the-icons-yellow)) (normal . ,(face-foreground 'all-the-icons-green)) (low . ,(face-foreground 'all-the-icons-blue)) (trivial . ,(face-foreground 'all-the-icons-purple))))) ;; (setq pomidor-sound-tick nil ;; pomidor-sound-tack nil) ; Deshabilitar el sonido de reloj de pomidor (setq pomidor-play-sound-file (lambda (file) (start-process "pomidor-play-sound" nil "playsound" file))) ) ;; Paquete para manejo de proyectos (use-package projectile :defer t :straight t :bind ("C-c p" . projectile-command-map) :diminish projectile-mode :custom ((projectile-completion-system 'ivy)) :hook (after-init . projectile-mode) :init (setq projectile-mode-line-prefix "" projectile-sort-order 'recentf projectile-use-git-grep t) :config ;; Rutas de archivos temporales. (setq projectile-cache-file (expand-file-name "projectile.cache" temp-dir)) (setq projectile-known-projects-file (expand-file-name "projectile-bookmarks.eld" temp-dir)) ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git inicio). (when (file-directory-p "~/Proyectos") (setq projectile-project-search-path '("~/Proyectos"))) (when (file-directory-p "~/mnt/Nginx") (setq projectile-project-search-path (append projectile-project-search-path '("~/mnt/Nginx")))) (setq projectile-switch-project-action #'projectile-dired) ; Usar dired cuando se elija un proyecto. ;; Cambiar el título de la ventana de emacs (setq frame-title-format '( (:eval (let ((project-name (projectile-project-name))) (unless (string= "-" project-name) (format "[%s] " project-name)))) "%b" " - Emacs") ) ) ;; Recentf - Guarda registro de los archivos abiertos recientemente (use-package recentf :defer t :straight t :bind ("C-x C-r" . recentf-open-files) :config (setq recentf-save-file (recentf-expand-file-name (concat temp-dir "/recentf"))) (recentf-mode 1)) ;; Busqueda rápida con ripgrep (use-package rg :defer t :straight t :defines projectile-command-map :hook (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 (cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases) (with-eval-after-load 'projectile (bind-key "s R" #'rg-project projectile-command-map))) ;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir. (use-package saveplace :defer t :straight t :hook (after-init . save-place-mode) :config (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))) ;; Autocompletado de parentesis, corchetes, llaves, etc. (use-package smartparens :defer t :straight t :hook (after-init . smartparens-global-mode)) ;; Mejorando el scroll (use-package smooth-scrolling :defer t :straight t :hook (after-init . smooth-scrolling-mode) :config (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) ) (use-package tree-sitter :defer t :straight t :hook (after-init . global-tree-sitter-mode) :config (add-to-list 'tree-sitter-major-mode-language-alist '(rustic-mode . rust)) ) (use-package tree-sitter-langs :straight t :after tree-sitter) ;; Terminal (use-package vterm :ensure t :defer t :straight t) ;; Cuando iniicias un atajo de teclas te muestra las posibilidades (use-package which-key :defer t :straight t :hook (after-init . which-key-mode)) ;; Restaurar el estado de los frames (use-package winner :defer t :straight t :hook (after-init . winner-mode)) ;; Permitir snippets (use-package yasnippet :defer t :straight t :ensure t :bind (:map yas-minor-mode-map ("TAB" . nil) ("" . nil)) ;; unbid tab for yasnippets :custom (yas-prompt-functions '(yas-completing-prompt)) :hook ((prog-mode feature-mode) . yas-minor-mode-on) (html-mode . yas-minor-mode)) ;; Coleción de snippets (use-package yasnippet-snippets :ensure t :defer t :straight t) (use-package esup :ensure t :straight t) (provide 'base-extensions) ;;; base-extensions.el ends here