diff --git a/configs/base-extensions.el b/configs/base-extensions.el index ecd0849..6e693a9 100644 --- a/configs/base-extensions.el +++ b/configs/base-extensions.el @@ -7,6 +7,7 @@ ;;; Code: +(setq evil-want-keybinding nil) ;; use-package - No necesita presentación (use-package use-package :config @@ -49,16 +50,174 @@ (drag-stuff-global-mode 1) (drag-stuff-define-keys)) +;; 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 +(use-package markdown-mode :defer t) + +;; 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) + ) + +;; Esa línea bonita de abajo del editor que dice cosas xD +(use-package telephone-line + :defer t + :custom + (telephone-line-primary-left-separator 'telephone-line-cubed-left) + (telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left) + (telephone-line-primary-right-separator 'telephone-line-cubed-right) + (telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) + (telephone-line-evil-use-short-tag t) + + (setq telephone-line-lhs + '((evil . (telephone-line-evil-tag-segment)) + (accent . (telephone-line-vc-segment + telephone-line-erc-modified-channels-segment + telephone-line-process-segment)) + (nil . (;telephone-line-minor-mode-segment + telephone-line-buffer-segment)))) + (setq telephone-line-rhs + '((nil . (telephone-line-misc-info-segment)) + (accent . (telephone-line-major-mode-segment)) + (evil . (telephone-line-airline-position-segment)))) + (telephone-line-mode t) + ) + +;; Hacer uso de Emacs con las ventajas de vim. +(use-package evil + :defer t + :init + (evil-mode 1) + (setq evil-want-keybinding nil) + :config + (setq evil-want-integration t) + (setq evil-want-keybinding nil) + (setq evil-want-C-u-scroll t) + (setq evil-want-C-i-jump nil) + (setq evil-want-fine-undo t) + (setq evil-respect-visual-line-mode t) + (setq evil-toggle-key "C-'") ; Cambiar toggle-key cambiar entre evil states y emacs. + ;; (setq evil-default-state 'emacs) ; Modo por defecto en emacs mode + (define-key evil-normal-state-map (kbd "g b") 'evil-jump-backward) + + ;; Seleccionar todo con C-a en insert mode + (evil-global-set-key 'insert (kbd "C-a") 'mark-whole-buffer) + + ;; ** + ;; Atajos personalizados con leader key + ;; ** + + ;; Definiendo la leader key + (evil-set-leader 'normal (kbd "SPC")) + (evil-set-leader 'visual (kbd "SPC")) + + ;; Atajos para counsel-projectile y switch buffer con leader key + (evil-define-key 'normal 'global (kbd "b") 'ivy-switch-buffer) + (evil-define-key 'visual 'global (kbd "b") 'ivy-switch-buffer) + (evil-define-key 'normal 'global (kbd "v") 'counsel-projectile) + (evil-define-key 'normal 'global (kbd "cp") 'projectile-switch-project) + (evil-define-key 'visual 'global (kbd "v") 'counsel-projectile) + (evil-define-key 'visual 'global (kbd "cp") 'projectile-switch-project) + (evil-define-key 'normal 'global (kbd "ff") 'counsel-find-file) + (evil-define-key 'visual 'global (kbd "ff") 'counsel-find-file) + + ;; Atajos windmove con leader key + (evil-define-key 'normal 'global (kbd "wh") 'windmove-left) + (evil-define-key 'normal 'global (kbd "wj") 'windmove-down) + (evil-define-key 'normal 'global (kbd "wk") 'windmove-up) + (evil-define-key 'normal 'global (kbd "wl") 'windmove-right) + + ;; Atajos con leader key para frames + (evil-define-key 'normal 'global (kbd "0") 'delete-window) + (evil-define-key 'normal 'global (kbd "1") 'delete-other-windows) + (evil-define-key 'normal 'global (kbd "2") 'split-window-below) + (evil-define-key 'normal 'global (kbd "3") 'split-window-right) + (evil-define-key 'normal 'global (kbd "kb") 'kill-buffer) + (evil-define-key 'normal 'global (kbd "wb") 'winner-undo) + (evil-define-key 'normal 'global (kbd "wr") 'winner-redo) + + ;; Atajos para cambiar entre major modes + (evil-define-key 'normal 'global (kbd "mh") 'html-mode) + (evil-define-key 'normal 'global (kbd "mj") 'js-mode) + (evil-define-key 'normal 'global (kbd "mp") 'php-mode) + + ;; Atajo para abrir vterm + (evil-define-key 'normal 'global (kbd "tt") 'multi-vterm-dedicated-toggle) + (evil-define-key 'normal 'global (kbd "tf") 'multi-vterm) + (evil-define-key 'normal 'global (kbd "tp") 'multi-vterm-project) + + ;; Cambiar el cursor según el estado + (setq evil-emacs-state-cursor 'bar) + (setq evil-motion-state-cursor 'bar) + (setq evil-normal-state-cursor 'box) + (setq evil-visual-state-cursor 'box) + (setq evil-insert-state-cursor 'bar) + (setq evil-replace-state-cursor 'hollow) + (setq evil-operator-state-cursor 'hollow) + + ;; Establecer modos por defecto en algunos modos + (evil-set-initial-state 'shell-mode 'insert) + (evil-set-initial-state 'vterm-mode 'emacs) + (evil-set-initial-state 'term-mode 'emacs) + (evil-set-initial-state 'help-mode 'emacs) + (evil-set-initial-state 'helm-grep-mode 'emacs) + (evil-set-initial-state 'grep-mode 'emacs) + (evil-set-initial-state 'dired-mode 'emacs) + (evil-set-initial-state 'Buffer-menu-mode 'emacs) + (evil-set-initial-state 'wdired-mode 'normal) + ;; Por defecto usar emcas mode. + ;;(setq evil-default-state 'emacs) + ) + +;; Edición múltiple con evil (Atajos por defecto: C-d y C-D) +(use-package evil-multiedit + :defer t + :config + (evil-multiedit-default-keybinds) + ) + +;; evil keybinding +(use-package evil-collection + :custom (evil-collection-setup-minibuffer t) + :init (evil-collection-init)) + ;; Barra lateral de archivos (use-package treemacs :defer t :ensure t :hook (treemacs-mode . (lambda() (display-line-numbers-mode -1))) :bind ([mouse-1] . treemacs-single-click-expand-action) - :init - (with-eval-after-load 'winum - (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) - :config (progn (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) @@ -174,167 +333,6 @@ :ensure t :config (treemacs-set-scope-type 'Tabs)) -;; 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 -(use-package markdown-mode :defer t) - -;; 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) - ) - -;; Esa línea bonita de abajo del editor que dice cosas xD -(use-package telephone-line - :defer t - :custom - (telephone-line-primary-left-separator 'telephone-line-cubed-left) - (telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left) - (telephone-line-primary-right-separator 'telephone-line-cubed-right) - (telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) - (telephone-line-evil-use-short-tag t) - - (setq telephone-line-lhs - '((evil . (telephone-line-evil-tag-segment)) - (accent . (telephone-line-vc-segment - telephone-line-erc-modified-channels-segment - telephone-line-process-segment)) - (nil . (;telephone-line-minor-mode-segment - telephone-line-buffer-segment)))) - (setq telephone-line-rhs - '((nil . (telephone-line-misc-info-segment)) - (accent . (telephone-line-major-mode-segment)) - (evil . (telephone-line-airline-position-segment)))) - (telephone-line-mode t) - ) - -;; Hacer uso de Emacs con las ventajas de vim. -(use-package evil - :defer t - :init - (evil-mode 1) - :config - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) - (setq evil-want-fine-undo t) - (setq evil-respect-visual-line-mode t) - (setq evil-toggle-key "C-'") ; Cambiar toggle-key cambiar entre evil states y emacs. - ;; (setq evil-default-state 'emacs) ; Modo por defecto en emacs mode - (define-key evil-normal-state-map (kbd "g b") 'evil-jump-backward) - - ;; Seleccionar todo con C-a en insert mode - (evil-global-set-key 'insert (kbd "C-a") 'mark-whole-buffer) - - ;; ** - ;; Atajos personalizados con leader key - ;; ** - - ;; Definiendo la leader key - (evil-set-leader 'normal (kbd "SPC")) - (evil-set-leader 'visual (kbd "SPC")) - - ;; Atajos para counsel-projectile y switch buffer con leader key - (evil-define-key 'normal 'global (kbd "b") 'ivy-switch-buffer) - (evil-define-key 'visual 'global (kbd "b") 'ivy-switch-buffer) - (evil-define-key 'normal 'global (kbd "v") 'counsel-projectile) - (evil-define-key 'normal 'global (kbd "cp") 'projectile-switch-project) - (evil-define-key 'visual 'global (kbd "v") 'counsel-projectile) - (evil-define-key 'visual 'global (kbd "cp") 'projectile-switch-project) - (evil-define-key 'normal 'global (kbd "ff") 'counsel-find-file) - (evil-define-key 'visual 'global (kbd "ff") 'counsel-find-file) - - ;; Atajos windmove con leader key - (evil-define-key 'normal 'global (kbd "wh") 'windmove-left) - (evil-define-key 'normal 'global (kbd "wj") 'windmove-down) - (evil-define-key 'normal 'global (kbd "wk") 'windmove-up) - (evil-define-key 'normal 'global (kbd "wl") 'windmove-right) - - ;; Atajos con leader key para frames - (evil-define-key 'normal 'global (kbd "0") 'delete-window) - (evil-define-key 'normal 'global (kbd "1") 'delete-other-windows) - (evil-define-key 'normal 'global (kbd "2") 'split-window-below) - (evil-define-key 'normal 'global (kbd "3") 'split-window-right) - (evil-define-key 'normal 'global (kbd "kb") 'kill-buffer) - (evil-define-key 'normal 'global (kbd "wb") 'winner-undo) - (evil-define-key 'normal 'global (kbd "wr") 'winner-redo) - - ;; Atajos para cambiar entre major modes - (evil-define-key 'normal 'global (kbd "mh") 'html-mode) - (evil-define-key 'normal 'global (kbd "mj") 'js-mode) - (evil-define-key 'normal 'global (kbd "mp") 'php-mode) - - ;; Atajo para abrir vterm - (evil-define-key 'normal 'global (kbd "tt") 'multi-vterm-dedicated-toggle) - (evil-define-key 'normal 'global (kbd "tf") 'multi-vterm) - (evil-define-key 'normal 'global (kbd "tp") 'multi-vterm-project) - - ;; Cambiar el cursor según el estado - (setq evil-emacs-state-cursor 'bar) - (setq evil-motion-state-cursor 'bar) - (setq evil-normal-state-cursor 'box) - (setq evil-visual-state-cursor 'box) - (setq evil-insert-state-cursor 'bar) - (setq evil-replace-state-cursor 'hollow) - (setq evil-operator-state-cursor 'hollow) - - ;; Establecer modos por defecto en algunos modos - (evil-set-initial-state 'shell-mode 'insert) - (evil-set-initial-state 'vterm-mode 'emacs) - (evil-set-initial-state 'term-mode 'emacs) - (evil-set-initial-state 'help-mode 'emacs) - (evil-set-initial-state 'helm-grep-mode 'emacs) - (evil-set-initial-state 'grep-mode 'emacs) - (evil-set-initial-state 'dired-mode 'emacs) - (evil-set-initial-state 'Buffer-menu-mode 'emacs) - (evil-set-initial-state 'wdired-mode 'normal) - ;; Por defecto usar emcas mode. - ;;(setq evil-default-state 'emacs) - ) - -;; Edición múltiple con evil (Atajos por defecto: C-d y C-D) -(use-package evil-multiedit - :defer t - :config - (evil-multiedit-default-keybinds) - ) - -;; evil keybinding -(use-package evil-collection - :custom (evil-collection-setup-minibuffer t) - :init (evil-collection-init)) - ;; Code Folding (use-package origami :defer t