2022-03-30 01:21:13 +02:00
|
|
|
;;; base-extensions.el --- Extenciones/paquetes instalados y su configuración
|
|
|
|
|
|
|
|
;; Author: kj <webmaster@outcontrol.net>
|
|
|
|
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
;; use-package - No necesita presentación
|
|
|
|
(use-package use-package
|
|
|
|
:config
|
|
|
|
(setq use-package-always-ensure t) ; auto-instalar extenciones que no lo estén
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Auto-actualizar los paquetes
|
|
|
|
(use-package auto-package-update
|
|
|
|
:custom
|
|
|
|
(auto-package-update-interval 7)
|
|
|
|
(auto-package-update-prompt-before-update t)
|
|
|
|
(auto-package-update-hide-results t)
|
|
|
|
:config
|
|
|
|
(auto-package-update-maybe)
|
|
|
|
(auto-package-update-at-time "06:00")
|
|
|
|
:init
|
|
|
|
(setq
|
|
|
|
auto-package-update-last-update-day-filename
|
|
|
|
(expand-file-name ".last-package-update-day" private-dir)))
|
|
|
|
|
|
|
|
;; Iconos principalmente para ser usados por neotree
|
2022-04-05 04:08:30 +02:00
|
|
|
(use-package all-the-icons :defer t)
|
2022-03-30 01:21:13 +02:00
|
|
|
|
2022-04-06 08:10:24 +02:00
|
|
|
;; Terminal
|
2022-04-06 10:14:57 +02:00
|
|
|
(use-package vterm :ensure t :defer t)
|
|
|
|
|
|
|
|
;; Multiple vterm
|
|
|
|
(use-package multi-vterm :ensure t :defer t)
|
2022-04-06 08:10:24 +02:00
|
|
|
|
2022-03-30 01:21:13 +02:00
|
|
|
;; Highlight en los números.
|
|
|
|
(use-package highlight-numbers
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:ensure t
|
|
|
|
:hook
|
|
|
|
(prog-mode . highlight-numbers-mode))
|
|
|
|
|
2022-04-05 08:19:24 +02:00
|
|
|
;; Mover líneas o regiones
|
|
|
|
(use-package drag-stuff
|
|
|
|
:config
|
|
|
|
(drag-stuff-global-mode 1)
|
|
|
|
(drag-stuff-define-keys))
|
|
|
|
|
2022-03-30 01:21:13 +02:00
|
|
|
;; Recentf - Guarda registro de los archivos abiertos recientemente
|
|
|
|
(use-package recentf
|
|
|
|
:config
|
|
|
|
(setq recentf-save-file
|
|
|
|
(recentf-expand-file-name (concat temp-dir "/recentf")))
|
|
|
|
(recentf-mode 1))
|
|
|
|
|
|
|
|
|
|
|
|
;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
|
|
|
|
(use-package saveplace
|
|
|
|
:config
|
|
|
|
(save-place-mode 1)
|
|
|
|
(setq save-place-file (locate-user-emacs-file (concat temp-dir "/places"))))
|
|
|
|
|
|
|
|
;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás)
|
|
|
|
(use-package emmet-mode
|
|
|
|
:config
|
|
|
|
(add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes
|
|
|
|
(add-hook 'html-mode-hook 'emmet-mode)
|
|
|
|
(add-hook 'css-mode-hook 'emmet-mode)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Modo markdown
|
2022-04-05 04:08:30 +02:00
|
|
|
(use-package markdown-mode :defer t)
|
2022-03-30 01:21:13 +02:00
|
|
|
|
|
|
|
;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
|
|
|
|
(use-package git-gutter
|
|
|
|
:config
|
|
|
|
(global-git-gutter-mode +1) ; Habilitar git gutter de manera global
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Mejorando el scroll
|
|
|
|
(use-package smooth-scrolling
|
|
|
|
:config
|
|
|
|
(smooth-scrolling-mode 1) ; Cambia el salto de líneas cuando el cursor llega al final.
|
|
|
|
(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)
|
|
|
|
)
|
|
|
|
|
2022-04-21 19:45:31 +02:00
|
|
|
(use-package doom-modeline
|
|
|
|
:ensure t
|
|
|
|
:init (doom-modeline-mode 1)
|
|
|
|
: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)
|
|
|
|
)
|
2022-03-30 01:21:13 +02:00
|
|
|
|
|
|
|
;; Code Folding
|
|
|
|
(use-package origami
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:config
|
|
|
|
(global-origami-mode))
|
|
|
|
|
2022-04-21 19:45:31 +02:00
|
|
|
;; Reemplazar y buscar menjorado
|
|
|
|
(use-package anzu
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(global-anzu-mode +1)
|
|
|
|
(global-set-key [remap query-replace] 'anzu-query-replace)
|
|
|
|
(global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp))
|
|
|
|
|
2022-03-30 01:21:13 +02:00
|
|
|
;; Automcompletado
|
|
|
|
(use-package company
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:bind (:map company-active-map
|
|
|
|
("<tab>" . company-indent-or-complete-common)) ; autocompletar con tab como se haría en bash-competition en la terminal de linux
|
|
|
|
(:map company-active-map
|
|
|
|
("<escape>" . company-abort)) ; cerrar las sugerencias de autocompletado precionando escape.
|
|
|
|
:config
|
|
|
|
(global-company-mode)
|
|
|
|
(setq company-dabbrev-downcase nil) ; autocompletado case-sensitive.
|
|
|
|
(setq company-idle-delay 0) ; mostrar autocompletado lo más rápido posible
|
|
|
|
(setq company-minimum-prefix-length 1) ; mostrar autocompletado desde que se coloca la primera letra.
|
|
|
|
(setq company-backends '((company-files :with company-yasnippet)
|
2022-04-21 19:45:31 +02:00
|
|
|
(company-capf :with company-yasnippet)
|
|
|
|
(company-dabbrev-code company-gtags company-etags company-keywords :with company-yasnippet)
|
|
|
|
(company-dabbrev :with company-yasnippet)))
|
2022-03-30 01:21:13 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
;; Poner la info acerca del autocompletado del autocompletado mas rápido
|
|
|
|
(use-package company-quickhelp
|
2022-04-06 07:32:38 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:ensure t
|
|
|
|
:custom
|
|
|
|
(company-quickhelp-delay 2)
|
|
|
|
(company-quickhelp-mode))
|
|
|
|
|
|
|
|
;; Hacer que el autocompletado se vea más bonito con íconos
|
|
|
|
(use-package company-box
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:hook (company-mode . company-box-mode))
|
|
|
|
|
|
|
|
;; Usar autocompletado con ctags y company
|
|
|
|
(use-package company-ctags
|
|
|
|
:config
|
|
|
|
(add-to-list 'company-backends '(company-ctags))
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Snippets
|
|
|
|
(use-package yasnippet
|
2022-04-06 07:32:38 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:ensure t
|
|
|
|
:custom
|
|
|
|
(yas-prompt-functions '(yas-completing-prompt))
|
|
|
|
:config
|
|
|
|
(yas-reload-all)
|
|
|
|
:hook
|
|
|
|
((prog-mode feature-mode) . yas-minor-mode))
|
|
|
|
|
|
|
|
;; Restaurar el estado de los frames
|
|
|
|
(use-package winner
|
|
|
|
:init
|
|
|
|
(winner-mode 1))
|
|
|
|
|
|
|
|
(use-package lsp-mode
|
|
|
|
:defer t
|
2022-04-06 07:32:38 +02:00
|
|
|
:hook (js-mode . lsp-deferred)
|
2022-03-30 01:21:13 +02:00
|
|
|
:custom
|
|
|
|
(lsp-headerline-breadcrumb-enable nil))
|
|
|
|
|
|
|
|
(use-package lsp-ui)
|
|
|
|
|
|
|
|
;; Revisar sintaxis en vivo
|
|
|
|
(use-package flycheck
|
|
|
|
;; :diminish flycheck-mode
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:hook (after-init . global-flycheck-mode) ; Habilitar flycheck en todos los modos
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Mostrar los errores de flycheck en un pop up
|
|
|
|
(use-package flycheck-popup-tip
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:hook (flycheck-mode . flycheck-popup-tip-mode))
|
|
|
|
|
|
|
|
;; Un bonito y sencillo panel de inicio
|
|
|
|
(use-package dashboard
|
|
|
|
:config
|
|
|
|
(setq dashboard-set-file-icons t)
|
|
|
|
(setq dashboard-startup-banner
|
|
|
|
(expand-file-name "duck-small.png" user-emacs-directory))
|
|
|
|
(setq dashboard-items '(
|
|
|
|
;;(recents . 5)
|
|
|
|
;;(projects . 5)
|
|
|
|
))
|
|
|
|
(dashboard-setup-startup-hook)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Autocompletado para shell scripting.
|
|
|
|
(use-package company-shell
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:config
|
|
|
|
(add-to-list 'company-backends '(company-shell company-shell-env company-fish-shell))
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Autocompletado para el minibuffer (counsel e ivy)
|
|
|
|
(use-package counsel
|
|
|
|
:bind
|
|
|
|
("M-x" . counsel-M-x)
|
|
|
|
("C-x C-m" . counsel-M-x)
|
|
|
|
("C-x C-f" . counsel-find-file)
|
|
|
|
("C-x c k" . counsel-yank-pop))
|
|
|
|
|
|
|
|
(use-package projectile
|
|
|
|
:diminish projectile-mode
|
|
|
|
:config
|
|
|
|
(projectile-mode)
|
|
|
|
:custom ((projectile-completion-system 'ivy))
|
|
|
|
:bind-keymap
|
|
|
|
("C-c p" . projectile-command-map)
|
|
|
|
:init
|
|
|
|
;; 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 iniciado).
|
|
|
|
(when (file-directory-p "~/Proyectos")
|
|
|
|
(setq projectile-project-search-path '("~/Proyectos")))
|
|
|
|
(when (file-directory-p "~/Docker/Nginx")
|
|
|
|
(setq projectile-project-search-path (append
|
|
|
|
projectile-project-search-path
|
|
|
|
'("~/Docker/Nginx"))))
|
|
|
|
(when (file-directory-p "~/Docker/Nginx2")
|
|
|
|
(setq projectile-project-search-path (append
|
|
|
|
projectile-project-search-path
|
|
|
|
'("~/Docker/Nginx2"))))
|
|
|
|
(when (file-directory-p "~/Docker/NginxTwitch")
|
|
|
|
(setq projectile-project-search-path (append
|
|
|
|
projectile-project-search-path
|
|
|
|
'("~/Docker/NginxTwitch"))))
|
|
|
|
(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")
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Autocompletado de proyectos en counsel (projectile)
|
|
|
|
(use-package counsel-projectile
|
|
|
|
:config
|
2022-04-13 06:44:58 +02:00
|
|
|
(global-set-key (kbd "C-x p") 'counsel-projectile)
|
2022-03-30 01:21:13 +02:00
|
|
|
(counsel-projectile-mode))
|
|
|
|
|
|
|
|
;; Mostrar info del panel inferior de otra manera
|
|
|
|
(use-package ivy
|
2022-04-05 04:08:30 +02:00
|
|
|
:defer t
|
2022-03-30 01:21:13 +02:00
|
|
|
:bind
|
|
|
|
("C-x s" . swiper)
|
|
|
|
("C-x C-r" . ivy-resume)
|
|
|
|
("C-x b" . ivy-switch-buffer)
|
|
|
|
:config
|
|
|
|
(ivy-mode 1)
|
|
|
|
(setq ivy-use-virtual-buffers nil)
|
|
|
|
(define-key ivy-minibuffer-map (kbd "TAB") 'ivy-partial)
|
|
|
|
(define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
|
|
|
|
(define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Iconos en Ivy (allthe icons)
|
|
|
|
(use-package all-the-icons-ivy-rich
|
|
|
|
:ensure t
|
|
|
|
:init (all-the-icons-ivy-rich-mode 1)
|
|
|
|
:config
|
|
|
|
(setq all-the-icons-ivy-rich-color-icon t))
|
|
|
|
|
|
|
|
(use-package ivy-rich
|
|
|
|
:ensure t
|
|
|
|
:init (ivy-rich-mode 1))
|
|
|
|
|
|
|
|
;; Cuando iniicias un atajo de teclas te muestra las posibilidades
|
|
|
|
(use-package which-key
|
|
|
|
:config
|
|
|
|
(which-key-mode))
|
|
|
|
|
|
|
|
;; Autocompletado de parentesis, corchetes, llaves, etc.
|
|
|
|
(use-package smartparens
|
|
|
|
:config
|
|
|
|
(smartparens-global-mode t))
|
|
|
|
|
|
|
|
;; Org-Mode
|
2022-04-21 19:45:31 +02:00
|
|
|
(require 'org-config)
|
2022-03-30 01:21:13 +02:00
|
|
|
|
|
|
|
(provide 'base-extensions)
|
|
|
|
;;; base-extensions.el ends here
|