Big re-write :)
I reordered the code in a more clean an organized way. Also this improves a lot the emacs startup time again, bucause after some updates it becomes a bit slow with the old configuration, so i did it again in a new way.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -34,3 +34,5 @@ workspace/
|
||||
/.emacs.desktop
|
||||
/.tutor/
|
||||
/intelephense/
|
||||
/auto-save-list/
|
||||
/*.eld
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
;; Cliente LLM (ollama, chatgpt, gemini, etc.)
|
||||
(use-package gptel
|
||||
:defer t
|
||||
:config
|
||||
;; (setq gptel-model 'gemma3:4b
|
||||
;; gptel-backend (gptel-make-ollama "Ollama"
|
||||
|
@ -6,10 +6,11 @@
|
||||
;;; Commentary:
|
||||
|
||||
;; Configuración general de Emacs.
|
||||
;; No incluye paquetes/extensiones, solo configuraciones generales.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'init-functions)
|
||||
|
||||
;; Native compilation
|
||||
(when (and (fboundp 'native-comp-available-p)
|
||||
(native-comp-available-p))
|
||||
@ -19,131 +20,136 @@
|
||||
(setq package-native-compile t)
|
||||
))
|
||||
|
||||
;; Instalar elpaca.el (reemplpazando package.el)
|
||||
(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 :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))
|
||||
(build (expand-file-name "elpaca/" elpaca-builds-directory))
|
||||
(order (cdr elpaca-order))
|
||||
(default-directory repo))
|
||||
(add-to-list 'load-path (if (file-exists-p build) build repo))
|
||||
(unless (file-exists-p repo)
|
||||
(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 (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))))
|
||||
(unless (require 'elpaca-autoloads nil t)
|
||||
(require 'elpaca)
|
||||
(elpaca-generate-autoloads "elpaca" repo)
|
||||
(load "./elpaca-autoloads")))
|
||||
(add-hook 'after-init-hook #'elpaca-process-queues)
|
||||
(elpaca `(,@elpaca-order))
|
||||
;; Garbage Collector Magic Hack
|
||||
(use-package gcmh
|
||||
:diminish
|
||||
:hook (emacs-startup . gcmh-mode)
|
||||
:init
|
||||
(setq gcmh-idle-delay 'auto
|
||||
gcmh-auto-idle-delay-factor 10
|
||||
gcmh-high-cons-threshold #x1000000)) ; 16MB
|
||||
|
||||
;; Instalar use-package si no está instalado
|
||||
(elpaca elpaca-use-package
|
||||
;; Enable :elpaca use-package keyword.
|
||||
(elpaca-use-package-mode)
|
||||
;; Assume :elpaca t unless otherwise specified.
|
||||
(setq elpaca-use-package-by-default t))
|
||||
;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
|
||||
(use-package saveplace
|
||||
:ensure nil
|
||||
:hook (after-init . save-place-mode))
|
||||
|
||||
;; Block until current queue processed.
|
||||
(elpaca-wait)
|
||||
;; Recentf - Guarda registro de los archivos abiertos recientemente
|
||||
(use-package recentf
|
||||
:ensure nil
|
||||
:bind (("C-x C-r" . recentf-open-files))
|
||||
:hook (after-init . recentf-mode)
|
||||
:init (setq recentf-max-saved-items 300
|
||||
recentf-exclude
|
||||
'("\\.?cache" ".cask" "url" "COMMIT_EDITMSG\\'" "bookmarks"
|
||||
"\\.\\(?:gz\\|gif\\|svg\\|png\\|jpe?g\\|bmp\\|xpm\\)$"
|
||||
"\\.?ido\\.last$" "\\.revive$" "/G?TAGS$" "/.elfeed/"
|
||||
"^/tmp/" "^/var/folders/.+$" "^/ssh:" "/persp-confs/"
|
||||
(lambda (file) (file-in-directory-p file package-user-dir))))
|
||||
:config
|
||||
(push (expand-file-name recentf-save-file) recentf-exclude)
|
||||
(add-to-list 'recentf-filename-handlers #'abbreviate-file-name))
|
||||
|
||||
(defconst private-dir (expand-file-name "private" user-emacs-directory))
|
||||
(defconst temp-dir (format "%s/cache" private-dir)
|
||||
"Hostname-based elisp temp directories.")
|
||||
;; Guarda el historial del minibuffer
|
||||
(use-package savehist
|
||||
:ensure nil
|
||||
:hook (after-init . savehist-mode)
|
||||
:init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers
|
||||
history-length 1000
|
||||
savehist-additional-variables '(mark-ring
|
||||
global-mark-ring
|
||||
search-ring
|
||||
regexp-search-ring
|
||||
extended-command-history)
|
||||
savehist-autosave-interval 300))
|
||||
|
||||
;; Misc.
|
||||
(use-package simple
|
||||
:ensure nil
|
||||
:hook ((after-init . size-indication-mode)
|
||||
(text-mode . visual-line-mode))
|
||||
:init
|
||||
(setq column-number-mode t
|
||||
line-number-mode t
|
||||
kill-whole-line t ; Kill line including '\n' (C-k)
|
||||
line-move-visual nil
|
||||
track-eol t ; Keep cursor at end of lines. Require line-move-visual is nil.
|
||||
set-mark-command-repeat-pop t) ; Repeating C-SPC after popping mark pops it again
|
||||
;; Visualize TAB, (HARD) SPACE, NEWLINE
|
||||
(setq-default show-trailing-whitespace nil ; Don't show trailing whitespace by default
|
||||
cursor-type 'bar) ; Usar la barrita como cursor
|
||||
(setq show-trailing-whitespace t)
|
||||
(add-hook 'before-save-hook #'delete-trailing-whitespace nil t)
|
||||
)
|
||||
|
||||
;; UTF-8 please
|
||||
(set-charset-priority 'unicode)
|
||||
(setq locale-coding-system 'utf-8) ; pretty
|
||||
(set-terminal-coding-system 'utf-8) ; pretty
|
||||
(set-keyboard-coding-system 'utf-8) ; pretty
|
||||
(set-selection-coding-system 'utf-8) ; please
|
||||
(prefer-coding-system 'utf-8) ; with sugar on top
|
||||
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
|
||||
(when (fboundp 'set-charset-priority)
|
||||
(set-charset-priority 'unicode))
|
||||
(set-language-environment "UTF-8")
|
||||
(set-default-coding-systems 'utf-8)
|
||||
(set-buffer-file-coding-system 'utf-8)
|
||||
(set-clipboard-coding-system 'utf-8)
|
||||
(set-file-name-coding-system 'utf-8)
|
||||
(set-keyboard-coding-system 'utf-8)
|
||||
(set-next-selection-coding-system 'utf-8)
|
||||
(set-selection-coding-system 'utf-8)
|
||||
(set-terminal-coding-system 'utf-8)
|
||||
(setq locale-coding-system 'utf-8)
|
||||
(setq system-time-locale "C")
|
||||
|
||||
;; Emacs customizations
|
||||
(when (display-graphic-p)
|
||||
(scroll-bar-mode -1) ; Quitar scrollbar.
|
||||
)
|
||||
(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)
|
||||
(setq-default
|
||||
cursor-type 'bar ; Usar la barrita como cursor
|
||||
cursor-in-non-selected-windows nil ; Desaparecer el cursor en frames no activos.
|
||||
indent-tabs-mode nil ; Cambiar tabs por espacios.
|
||||
inhibit-startup-message t ; Eliminar el mensaje de inicio.
|
||||
)
|
||||
(setq
|
||||
custom-file (concat private-dir "/.custom.el") ; Cabiar la ruta del código que se genera al isntalar un theme o package
|
||||
ac-ignore-case nil ; Desactivar el autocapitalizado.
|
||||
ac-disable-faces nil ; Auto-complete hablitado incluso entre comillas (fuente: https://bit.ly/3a9wCB4).
|
||||
tags-revert-without-query 1 ; Recargar tags (ctags) sin pedir confirmación.
|
||||
)
|
||||
;; Leve transparencia en emacs por defecto.
|
||||
;; (set-frame-parameter nil 'alpha-background 95)
|
||||
;; Font por defecto
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
|
||||
;; Misc
|
||||
(if (boundp 'use-short-answers)
|
||||
(setq use-short-answers t)
|
||||
(fset 'yes-or-no-p 'y-or-n-p))
|
||||
(setq-default major-mode 'text-mode
|
||||
fill-column 80
|
||||
tab-width 4
|
||||
indent-tabs-mode nil) ; Permanently indent with spaces, never with TABs
|
||||
|
||||
;; Backups enabled, use nil to disable
|
||||
(setq
|
||||
history-length 1000
|
||||
backup-inhibited nil
|
||||
make-backup-files nil
|
||||
auto-save-default nil
|
||||
auto-save-list-file-name (concat temp-dir "/autosave")
|
||||
create-lockfiles nil
|
||||
backup-directory-alist `((".*" . ,(concat temp-dir "/backup/")))
|
||||
auto-save-file-name-transforms `((".*" ,(concat temp-dir "/auto-save-list/") t)))
|
||||
(setq visible-bell t
|
||||
inhibit-compacting-font-caches t ; Don’t compact font caches during GC
|
||||
delete-by-moving-to-trash t ; Deleting files go to OS's trash folder
|
||||
make-backup-files nil ; Forbide to make backup files
|
||||
auto-save-default nil ; Disable auto sav
|
||||
inhibit-splash-screen t
|
||||
uniquify-buffer-name-style 'post-forward-angle-brackets ; Show path if names are same
|
||||
adaptive-fill-regexp "[ t]+|[ t]*([0-9]+.|*+)[ t]*"
|
||||
adaptive-fill-first-line-regexp "^* *$"
|
||||
sentence-end "\\([。!?]\\|……\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*"
|
||||
sentence-end-double-space nil
|
||||
word-wrap-by-category t)
|
||||
|
||||
;; Configuración cuando es un server
|
||||
(defun setup-daemon ()
|
||||
"Carga la configuración del modo daemon."
|
||||
(message "Corriendo en modo daemon.")
|
||||
(set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
|
||||
(scroll-bar-mode -1)
|
||||
;; Async
|
||||
(use-package async
|
||||
:functions (async-bytecomp-package-mode dired-async-mode)
|
||||
:init
|
||||
(async-bytecomp-package-mode 1)
|
||||
(dired-async-mode 1))
|
||||
|
||||
;; Cerrar buffers al cerrar emacsclient
|
||||
;; (add-hook 'delete-frame-functions
|
||||
;; (lambda (frame)
|
||||
;; (mapc 'kill-buffer (delq (get-buffer "*dashboard*") (buffer-list)))
|
||||
;; ))
|
||||
)
|
||||
;; Child frame
|
||||
(use-package posframe
|
||||
:hook (after-load-theme . posframe-delete-all)
|
||||
:init
|
||||
(defface posframe-border
|
||||
`((t (:inherit region)))
|
||||
"Face used by the `posframe' border."
|
||||
:group 'posframe)
|
||||
(defvar posframe-border-width 2
|
||||
"Default posframe border width.")
|
||||
:config
|
||||
(with-no-warnings
|
||||
(defun my-posframe--prettify-frame (&rest _)
|
||||
(set-face-background 'fringe nil posframe--frame))
|
||||
(advice-add #'posframe--create-posframe :after #'my-posframe--prettify-frame)
|
||||
|
||||
(if (daemonp)
|
||||
(add-hook 'after-make-frame-functions
|
||||
(lambda (frame)
|
||||
(with-selected-frame frame
|
||||
(setup-daemon))))
|
||||
(message "Corriendo en modo normal."))
|
||||
(defun posframe-poshandler-frame-center-near-bottom (info)
|
||||
(cons (/ (- (plist-get info :parent-frame-width)
|
||||
(plist-get info :posframe-width))
|
||||
2)
|
||||
(/ (+ (plist-get info :parent-frame-height)
|
||||
(* 2 (plist-get info :font-height)))
|
||||
2)))))
|
||||
|
||||
(add-hook 'elpaca-after-init-hook (lambda () (load custom-file 'noerror)))
|
||||
|
||||
(provide 'init-base)
|
||||
;;; init-base.el ends here
|
||||
|
@ -1,4 +1,4 @@
|
||||
;;; init-corfu.el --- Autocompletado con corfu -*- lexical-binding: t -*-
|
||||
;;; init-completion.el --- Autocompletado con corfu -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
@ -15,15 +15,17 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; childframe con los cantidatos de autocompletado
|
||||
(use-package corfu
|
||||
:defer t
|
||||
:ensure (:files (:defaults "extensions/*")
|
||||
:includes (corfu-info corfu-history))
|
||||
:hook ((corfu-mode . corfu-popupinfo-mode))
|
||||
:hook ((elpaca-after-init . global-corfu-mode)
|
||||
(global-corfu-mode . corfu-popupinfo-mode))
|
||||
:bind (:map corfu-map
|
||||
("<tab>" . corfu-quit)
|
||||
("<escape>" . corfu-quit)
|
||||
("<SPC>" . corfu-insert-separator))
|
||||
:custom-face
|
||||
(corfu-border ((t (:inherit region :background unspecified))))
|
||||
:custom
|
||||
(corfu-auto t)
|
||||
:config
|
||||
@ -45,7 +47,6 @@
|
||||
|
||||
;; Cambia la forma de mostrar y buscar sugerencias (afecta a corfu, pero también a otros como vertico).
|
||||
(use-package orderless
|
||||
:defer t
|
||||
:after corfu
|
||||
:custom
|
||||
(completion-styles '(orderless)) ; Use orderless
|
||||
@ -68,12 +69,10 @@
|
||||
|
||||
;; Set de funciones de para las sugerencias de corfu.
|
||||
(use-package cape
|
||||
:defer t
|
||||
:ensure (:host github :repo "minad/cape")
|
||||
:after corfu
|
||||
:bind (("C-c f" . cape-file)
|
||||
("C-c l" . cape-line)
|
||||
("C-c _" . cape-tex))
|
||||
:bind (("C-c c f" . cape-file)
|
||||
("C-c c l" . cape-line))
|
||||
: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.
|
||||
@ -92,19 +91,35 @@
|
||||
(use-package corfu-terminal
|
||||
:after corfu
|
||||
:ensure (:repo "https://codeberg.org/akib/emacs-corfu-terminal.git")
|
||||
:config
|
||||
:init
|
||||
(corfu-terminal-mode +1))
|
||||
)
|
||||
|
||||
;; Iconos en corfu
|
||||
(use-package kind-icon
|
||||
:ensure t
|
||||
:after corfu
|
||||
;; A few more useful configurations...
|
||||
(use-package emacs
|
||||
:ensure nil
|
||||
:custom
|
||||
(kind-icon-default-face 'corfu-default) ; to compute blended backgrounds correctly
|
||||
:config
|
||||
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter))
|
||||
;; TAB cycle if there are only few candidates
|
||||
;; (completion-cycle-threshold 3)
|
||||
|
||||
;; Enable indentation+completion using the TAB key.
|
||||
;; `completion-at-point' is often bound to M-TAB.
|
||||
(tab-always-indent 'complete)
|
||||
|
||||
;; Emacs 30 and newer: Disable Ispell completion function. As an alternative,
|
||||
;; try `cape-dict'.
|
||||
(text-mode-ispell-word-completion nil)
|
||||
|
||||
;; Emacs 28 and newer: Hide commands in M-x which do not apply to the current
|
||||
;; mode. Corfu commands are hidden, since they are not used via M-x. This
|
||||
;; setting is useful beyond Corfu.
|
||||
(read-extended-command-predicate #'command-completion-default-include-p))
|
||||
|
||||
;; Iconos en corfu
|
||||
(use-package nerd-icons-corfu
|
||||
:after corfu
|
||||
:init (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
|
||||
|
||||
|
||||
(provide 'init-corfu)
|
||||
;;; init-corfu.el ends here
|
||||
(provide 'init-completion)
|
||||
;;; init-completion.el ends here
|
@ -1,69 +0,0 @@
|
||||
;;; init-ctags.el --- Configuracíón de TAGS -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; En esta sección está la configuración para ctags.
|
||||
;; Quizá con la aparición de lsp sea menos necesaria,
|
||||
;; pero dado a que sigue teniendo potencial para aportar
|
||||
;; además de tener un rendimiento muy bueno es mejor
|
||||
;; no dejarla de lado.
|
||||
|
||||
;; Ctags IDE on the True Editor
|
||||
;; @see https://github.com/universal-ctags/citre#quick-start
|
||||
|
||||
(use-package citre
|
||||
:defer t
|
||||
:ensure t
|
||||
:diminish
|
||||
:bind (("C-x c ." . citre-jump)
|
||||
("C-x c ," . citre-jump-back)
|
||||
("C-x c p" . citre-peek)
|
||||
("C-x c a" . citre-ace-peek)
|
||||
("C-x c u" . citre-update-this-tags-file))
|
||||
:init
|
||||
(setq citre-auto-enable-citre-mode-modes '(prog-mode)
|
||||
citre-default-create-tags-file-location 'global-cache
|
||||
citre-prompt-language-for-ctags-command t)
|
||||
|
||||
:config
|
||||
(with-no-warnings
|
||||
;; Integrate with `lsp-mode' and `eglot'
|
||||
(define-advice xref--create-fetcher (:around (fn &rest args) fallback)
|
||||
(let ((fetcher (apply fn args))
|
||||
(citre-fetcher
|
||||
(let ((xref-backend-functions '(citre-xref-backend t)))
|
||||
(ignore xref-backend-functions)
|
||||
(apply fn args))))
|
||||
(lambda ()
|
||||
(or (with-demoted-errors "%s, fallback to citre"
|
||||
(funcall fetcher))
|
||||
(funcall citre-fetcher)))))
|
||||
|
||||
(defun lsp-citre-capf-function ()
|
||||
"A capf backend that tries lsp first, then Citre."
|
||||
(let ((lsp-result (if (fboundp #'eglot-completion-at-point)
|
||||
(eglot-completion-at-point)
|
||||
(when (fboundp #'lsp-completion-at-point)
|
||||
(lsp-completion-at-point)))))
|
||||
(if (and lsp-result
|
||||
(try-completion
|
||||
(buffer-substring (nth 0 lsp-result)
|
||||
(nth 1 lsp-result))
|
||||
(nth 2 lsp-result)))
|
||||
lsp-result
|
||||
(citre-completion-at-point))))
|
||||
|
||||
(defun enable-lsp-citre-capf-backend ()
|
||||
"Enable the lsp + Citre capf backend in current buffer."
|
||||
(add-hook 'completion-at-point-functions #'lsp-citre-capf-function nil t))
|
||||
|
||||
(add-hook 'citre-mode-hook #'enable-lsp-citre-capf-backend)
|
||||
))
|
||||
|
||||
(provide 'init-ctags)
|
||||
;;; init-ctags.el ends here
|
153
configs/init-editor.el
Normal file
153
configs/init-editor.el
Normal file
@ -0,0 +1,153 @@
|
||||
;; init-editor.el --- Initialize editing configurations. -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2006-2025 Vincent Zhang
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Configuración en la edición de texto en general
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Visor de documentos de emacs (soporta de todo: epub, pdf, odt, docx, cbz, etc.)
|
||||
(use-package doc-view
|
||||
:hook
|
||||
(doc-view-mode . (lambda ()
|
||||
(display-line-numbers-mode 0)))
|
||||
:ensure nil)
|
||||
|
||||
;; Eliminar cuando está
|
||||
(use-package delsel
|
||||
:ensure nil
|
||||
:hook (elpaca-after-init . delete-selection-mode))
|
||||
|
||||
;; Minor mode to aggressively keep your code always indented
|
||||
(use-package aggressive-indent
|
||||
:diminish
|
||||
:autoload aggressive-indent-mode
|
||||
:functions too-long-file-p
|
||||
:hook ((elpaca-after-init . global-aggressive-indent-mode)
|
||||
;; NOTE: Disable in large files due to the performance issues
|
||||
;; https://github.com/Malabarba/aggressive-indent-mode/issues/73
|
||||
(find-file . (lambda ()
|
||||
(when (too-long-file-p)
|
||||
(aggressive-indent-mode -1)))))
|
||||
:config
|
||||
;; Disable in some modes
|
||||
(dolist (mode '(gitconfig-mode
|
||||
asm-mode web-mode html-mode
|
||||
css-mode css-ts-mode
|
||||
go-mode go-ts-mode
|
||||
python-ts-mode yaml-ts-mode
|
||||
scala-mode
|
||||
shell-mode term-mode vterm-mode
|
||||
prolog-inferior-mode))
|
||||
(add-to-list 'aggressive-indent-excluded-modes mode))
|
||||
|
||||
;; Disable in some commands
|
||||
(add-to-list 'aggressive-indent-protected-commands #'delete-trailing-whitespace t)
|
||||
|
||||
;; Be slightly less aggressive in C/C++/C#/Java/Go/Swift
|
||||
(add-to-list 'aggressive-indent-dont-indent-if
|
||||
'(and (derived-mode-p 'c-mode 'c++-mode 'csharp-mode
|
||||
'java-mode 'go-mode 'swift-mode)
|
||||
(null (string-match "\\([;{}]\\|\\b\\(if\\|for\\|while\\)\\b\\)"
|
||||
(thing-at-point 'line))))))
|
||||
|
||||
;; Mover líneas o regiones con M-<teclas de dirección>
|
||||
(use-package drag-stuff
|
||||
:diminish
|
||||
:autoload drag-stuff-define-keys
|
||||
:hook (elpaca-after-init . drag-stuff-global-mode)
|
||||
:config
|
||||
(add-to-list 'drag-stuff-except-modes 'org-mode)
|
||||
(drag-stuff-define-keys))
|
||||
|
||||
;; A comprehensive visual interface to diff & patch
|
||||
(use-package ediff
|
||||
:ensure nil
|
||||
:hook(;; show org ediffs unfolded
|
||||
(ediff-prepare-buffer . outline-show-all)
|
||||
;; restore window layout when done
|
||||
(ediff-quit . winner-undo))
|
||||
:config
|
||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain
|
||||
ediff-split-window-function 'split-window-horizontally
|
||||
ediff-merge-split-window-function 'split-window-horizontally))
|
||||
|
||||
;; Automatic parenthesis pairing
|
||||
(use-package elec-pair
|
||||
:ensure nil
|
||||
;; :hook (elpaca-after-init . electric-pair-mode)
|
||||
:init (setq electric-pair-inhibit-predicate 'electric-pair-conservative-inhibit))
|
||||
|
||||
;; Edit multiple regions in the same way simultaneously
|
||||
(use-package iedit
|
||||
:defines desktop-minor-mode-table
|
||||
:bind (("C-;" . iedit-mode)
|
||||
("C-x r RET" . iedit-rectangle-mode)
|
||||
:map isearch-mode-map ("C-;" . iedit-mode-from-isearch)
|
||||
:map esc-map ("C-;" . iedit-execute-last-modification)
|
||||
:map help-map ("C-;" . iedit-mode-toggle-on-function))
|
||||
:config
|
||||
;; Avoid restoring `iedit-mode'
|
||||
(with-eval-after-load 'desktop
|
||||
(add-to-list 'desktop-minor-mode-table
|
||||
'(iedit-mode nil))))
|
||||
|
||||
;; Seleccionar por regiones (similar a mark-sexp, pero toma en cuenta hacia atrás del cursor también)
|
||||
(use-package expand-region
|
||||
:functions treesit-buffer-root-node
|
||||
:bind ("C-=" . er/expand-region)
|
||||
:config
|
||||
(defun treesit-mark-bigger-node ()
|
||||
"Use tree-sitter to mark regions."
|
||||
(let* ((root (treesit-buffer-root-node))
|
||||
(node (treesit-node-descendant-for-range root (region-beginning) (region-end)))
|
||||
(node-start (treesit-node-start node))
|
||||
(node-end (treesit-node-end node)))
|
||||
;; Node fits the region exactly. Try its parent node instead.
|
||||
(when (and (= (region-beginning) node-start) (= (region-end) node-end))
|
||||
(when-let* ((node (treesit-node-parent node)))
|
||||
(setq node-start (treesit-node-start node)
|
||||
node-end (treesit-node-end node))))
|
||||
(set-mark node-end)
|
||||
(goto-char node-start)))
|
||||
(add-to-list 'er/try-expand-list 'treesit-mark-bigger-node))
|
||||
|
||||
;; Hungry deletion (Elimina los espacios en blancos consecutivos)
|
||||
(use-package hungry-delete
|
||||
:diminish
|
||||
:hook (elpaca-after-init . global-hungry-delete-mode)
|
||||
:init (setq hungry-delete-chars-to-skip " \t\f\v"
|
||||
hungry-delete-except-modes
|
||||
'(help-mode minibuffer-mode minibuffer-inactive-mode calc-mode)))
|
||||
|
||||
;; Mejora C-a y C-e para ir a lo que contextualmente sería el fin de la línea
|
||||
(use-package mwim
|
||||
:bind (([remap move-beginning-of-line] . mwim-beginning)
|
||||
([remap move-end-of-line] . mwim-end)))
|
||||
|
||||
;; Ayuda a manipular los archivos con líneas demasiado largas
|
||||
(use-package so-long
|
||||
:ensure nil
|
||||
:hook (after-init . global-so-long-mode)
|
||||
:bind (:map so-long-mode-map
|
||||
("C-s" . isearch-forward)
|
||||
("C-r" . isearch-backward))
|
||||
:config
|
||||
(setq so-long-variable-overrides
|
||||
'((bidi-inhibit-bpa . t)
|
||||
(bidi-paragraph-direction . left-to-right)
|
||||
(buffer-read-only . nil)
|
||||
(global-hl-line-mode . nil)
|
||||
(line-move-visual . t)
|
||||
(show-paren-mode . nil)
|
||||
(truncate-lines . nil)
|
||||
(which-func-mode . nil))))
|
||||
|
||||
(provide 'init-editor)
|
||||
;;; init-editor.el ends here
|
@ -13,7 +13,6 @@
|
||||
|
||||
;;; Code:
|
||||
(use-package evil
|
||||
:defer t
|
||||
:hook ((elpaca-after-init . evil-mode)
|
||||
(git-timemachine-mode . evil-emacs-state))
|
||||
:init
|
||||
@ -81,7 +80,7 @@
|
||||
;; Expand region desde motion states
|
||||
(evil-define-key 'motion 'global (kbd "<leader>+") 'er/expand-region)
|
||||
|
||||
;; Identado en motion modes.
|
||||
;; Indentado en motion modes.
|
||||
(evil-define-key 'motion 'global (kbd "<tab>") 'indent-for-tab-command)
|
||||
|
||||
;; Atajos con leader key para frames
|
||||
@ -128,15 +127,11 @@
|
||||
;; Por ejemplo, para que evil-open-below funcione similar a org-return cuando
|
||||
;; estamos dentro de una lista.
|
||||
(use-package evil-org
|
||||
:ensure t
|
||||
:defer t
|
||||
:after org
|
||||
:hook (org-mode . evil-org-mode))
|
||||
|
||||
;; Similar a Vimtutor, pero para evil.
|
||||
(use-package evil-tutor
|
||||
:defer t
|
||||
:ensure t)
|
||||
(use-package evil-tutor)
|
||||
|
||||
(provide 'init-evil)
|
||||
;;; init-evil.el ends here
|
||||
|
@ -43,9 +43,6 @@
|
||||
(insert current-line)
|
||||
(decf n)))))
|
||||
|
||||
;; Borrar espacios, tabs y saltos de línea innecesarios al guardar
|
||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
||||
|
||||
;; Mostrar y ocultar el diff de la línea de git-gutter
|
||||
(defun git-gutter:toggle-popup-hunk ()
|
||||
"Toggle 'git-gutter' hunk window."
|
||||
@ -58,15 +55,15 @@
|
||||
(defun kj/project-name (&optional project)
|
||||
"Return the name for PROJECT.
|
||||
If PROJECT is not specified, assume current project root."
|
||||
(when-let (root (or project (kj/project-root)))
|
||||
(when-let* ((root (or project (kj/project-root)))) ;; <-- ¡Aquí está el cambio!
|
||||
(file-name-nondirectory
|
||||
(directory-file-name
|
||||
(file-name-directory root)))))
|
||||
(directory-file-name
|
||||
(file-name-directory root)))))
|
||||
|
||||
;; Obtener la raíz del proyecto desde project.el
|
||||
(defun kj/project-root ()
|
||||
"Return the current project root."
|
||||
(when-let (project (project-current))
|
||||
(when-let* ((project (project-current)))
|
||||
(project-root project)))
|
||||
|
||||
;; Cambia entre ocultar o no la barra de título cuando está maximizado
|
||||
@ -89,5 +86,52 @@ If PROJECT is not specified, assume current project root."
|
||||
"Run `after-load-theme-hook'."
|
||||
(run-hooks 'after-load-theme-hook))
|
||||
|
||||
;; Devuelve si el archivo es muy grande o no\
|
||||
(defun too-long-file-p ()
|
||||
"Check whether the file is too long."
|
||||
(or (> (buffer-size) 500000)
|
||||
(and (fboundp 'buffer-line-statistics)
|
||||
(> (car (buffer-line-statistics)) 10000))))
|
||||
|
||||
;; Renombrar el archivo actual
|
||||
(defun rename-this-file (new-name)
|
||||
"Renames both current buffer and file it's visiting to NEW-NAME."
|
||||
(interactive "sNew name: ")
|
||||
(let ((name (buffer-name))
|
||||
(filename (buffer-file-name)))
|
||||
(unless filename
|
||||
(error "Buffer '%s' is not visiting a file!" name))
|
||||
(progn
|
||||
(when (file-exists-p filename)
|
||||
(rename-file filename new-name 1))
|
||||
(set-visited-file-name new-name)
|
||||
(rename-buffer new-name))))
|
||||
|
||||
;; Copiar el nombre del archivo actual
|
||||
(defun copy-file-name ()
|
||||
"Copy the current buffer file name to the clipboard."
|
||||
(interactive)
|
||||
(let ((filename (if (equal major-mode 'dired-mode)
|
||||
default-directory
|
||||
(buffer-file-name))))
|
||||
(if filename
|
||||
(progn
|
||||
(kill-new filename)
|
||||
(message "Copied '%s'" filename))
|
||||
(warn "Current buffer is not attached to a file!"))))
|
||||
|
||||
;; Verifica si se puede levantar un childframe
|
||||
(defun childframe-workable-p ()
|
||||
"Whether childframe is workable."
|
||||
(and (not noninteractive)
|
||||
(not emacs-basic-display)
|
||||
(or (display-graphic-p)
|
||||
(featurep 'tty-child-frames))
|
||||
(eq (frame-parameter (selected-frame) 'minibuffer) 't)))
|
||||
|
||||
(defun font-installed-p (font-name)
|
||||
"Check if font with FONT-NAME is available."
|
||||
(find-font (font-spec :name font-name)))
|
||||
|
||||
(provide 'init-functions)
|
||||
;;; init-functions.el ends here.
|
||||
|
164
configs/init-highlight.el
Normal file
164
configs/init-highlight.el
Normal file
@ -0,0 +1,164 @@
|
||||
;; init-highlight.el --- Initialize highlighting configurations. -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Highlighting configurations.
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Highlight the current line
|
||||
(use-package hl-line
|
||||
:ensure nil
|
||||
:hook (((dashboard-mode eshell-mode shell-mode term-mode vterm-mode) .
|
||||
(lambda () (setq-local global-hl-line-mode nil)))
|
||||
;; (after-init . global-hl-line-mode)
|
||||
))
|
||||
|
||||
;; Highlight matching parens
|
||||
(use-package paren
|
||||
:ensure nil
|
||||
:functions childframe-workable-p
|
||||
:custom-face
|
||||
(show-paren-match ((((class color) (background light))
|
||||
(:box (:line-width (-1 . -1) :color "gray73")))
|
||||
(((class color) (background dark))
|
||||
(:box (:line-width (-1 . -1) :color "gray56")))))
|
||||
:hook (after-init . show-paren-mode)
|
||||
:init (setq show-paren-when-point-inside-paren t
|
||||
show-paren-when-point-in-periphery t)
|
||||
:config
|
||||
(setq blink-matching-paren-highlight-offscreen t
|
||||
show-paren-context-when-offscreen
|
||||
(if (childframe-workable-p) 'child-frame 'overlay))
|
||||
(with-no-warnings
|
||||
;; Display matching line for off-screen paren.
|
||||
(defun display-line-overlay (pos str &optional face)
|
||||
"Display line at POS as STR with FACE.
|
||||
|
||||
FACE defaults to inheriting from default and highlight."
|
||||
(let ((ol (save-excursion
|
||||
(goto-char pos)
|
||||
(make-overlay (line-beginning-position)
|
||||
(line-end-position)))))
|
||||
(overlay-put ol 'display str)
|
||||
(overlay-put ol 'face
|
||||
(or face '(:inherit highlight)))
|
||||
ol))
|
||||
|
||||
(defvar-local show-paren--off-screen-overlay nil)
|
||||
(defun show-paren-off-screen (&rest _args)
|
||||
"Display matching line for off-screen paren."
|
||||
(when (overlayp show-paren--off-screen-overlay)
|
||||
(delete-overlay show-paren--off-screen-overlay))
|
||||
;; Check if it's appropriate to show match info,
|
||||
(when (and (overlay-buffer show-paren--overlay)
|
||||
(not (or cursor-in-echo-area
|
||||
executing-kbd-macro
|
||||
noninteractive
|
||||
(minibufferp)
|
||||
this-command))
|
||||
(and (not (bobp))
|
||||
(memq (char-syntax (char-before)) '(?\) ?\$)))
|
||||
(= 1 (logand 1 (- (point)
|
||||
(save-excursion
|
||||
(forward-char -1)
|
||||
(skip-syntax-backward "/\\")
|
||||
(point))))))
|
||||
;; Rebind `minibuffer-message' called by `blink-matching-open'
|
||||
;; to handle the overlay display.
|
||||
(cl-letf (((symbol-function #'minibuffer-message)
|
||||
(lambda (msg &rest args)
|
||||
(let ((msg (apply #'format-message msg args)))
|
||||
(setq show-paren--off-screen-overlay
|
||||
(display-line-overlay
|
||||
(window-start) msg ))))))
|
||||
(blink-matching-open))))
|
||||
(advice-add #'show-paren-function :after #'show-paren-off-screen)))
|
||||
|
||||
;; Resalta los escapes de secuencia
|
||||
(use-package highlight-escape-sequences
|
||||
:hook (prog-mode . hes-mode)
|
||||
:config
|
||||
(setq hes-mode-alist
|
||||
`((c-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(c++-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)
|
||||
(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)
|
||||
(clojure-mode . ,hes-java-escape-sequence-re)
|
||||
(js-mode . ,hes-js-escape-sequence-re)
|
||||
(js2-mode . ,hes-js-escape-sequence-re)
|
||||
(ruby-mode . ,hes-ruby-escape-sequence-keywords)
|
||||
(lisp-mode . ,hes-elisp-escape-sequence-re)
|
||||
(lisp-interaction-mode . ,hes-elisp-escape-sequence-re)
|
||||
(emacs-lisp-mode . ,hes-elisp-escape-sequence-re))
|
||||
)
|
||||
)
|
||||
|
||||
;; Resalta todas las ocurrencias del contenido seleccionado
|
||||
(use-package region-occurrences-highlighter
|
||||
:diminish
|
||||
:bind (:map region-occurrences-highlighter-nav-mode-map
|
||||
("M-n" . region-occurrences-highlighter-next)
|
||||
("M-p" . region-occurrences-highlighter-prev))
|
||||
:hook (elpaca-after-init . global-region-occurrences-highlighter-mode))
|
||||
|
||||
;; Highlight indentions
|
||||
(use-package indent-bars
|
||||
:custom
|
||||
(indent-bars-color '(highlight :face-bg t :blend 0.225))
|
||||
(indent-bars-highlight-current-depth '(:face default :blend 0.225))
|
||||
(indent-bars-color-by-depth nil)
|
||||
(indent-bars-pattern ".")
|
||||
(indent-bars-treesit-support t)
|
||||
(indent-bars-no-descend-string t)
|
||||
(indent-bars-treesit-ignore-blank-lines-types '("module"))
|
||||
(indent-bars-prefer-character t)
|
||||
(indent-bars-treesit-scope '((python function_definition class_definition for_statement
|
||||
if_statement with_statement while_statement)))
|
||||
;; :hook ((prog-mode yaml-mode) . indent-bars-mode)
|
||||
:config (require 'indent-bars-ts))
|
||||
|
||||
;; Colorize color names in buffers
|
||||
(use-package colorful-mode
|
||||
:diminish
|
||||
:hook (after-init . global-colorful-mode)
|
||||
:init (setq colorful-use-prefix t)
|
||||
:config (dolist (mode '(html-mode php-mode help-mode helpful-mode))
|
||||
(add-to-list 'global-colorful-modes mode)))
|
||||
|
||||
;; Highlight brackets according to their depth
|
||||
(use-package rainbow-delimiters)
|
||||
|
||||
;; Resaltar palabras clave como TODO, FIXME, etc. en comentarios del código.
|
||||
(use-package hl-todo
|
||||
:autoload hl-todo-flymake hl-todo-search-and-highlight
|
||||
:functions rg rg-read-files rg-project
|
||||
:bind (:map hl-todo-mode-map
|
||||
([C-f3] . hl-todo-occur))
|
||||
:hook (elpaca-after-init . global-hl-todo-mode)
|
||||
:init (setq hl-todo-require-punctuation t
|
||||
hl-todo-highlight-punctuation ":")
|
||||
:config
|
||||
(add-to-list 'hl-todo-keyword-faces '("BUG" . "#d99600"))
|
||||
|
||||
;; Integrate into flymake
|
||||
(with-eval-after-load 'flymake
|
||||
(add-hook 'flymake-diagnostic-functions #'hl-todo-flymake))
|
||||
|
||||
;; Integrate into magit
|
||||
(with-eval-after-load 'magit
|
||||
(add-hook 'magit-log-wash-summary-hook
|
||||
#'hl-todo-search-and-highlight t)
|
||||
(add-hook 'magit-revision-wash-message-hook
|
||||
#'hl-todo-search-and-highlight t))
|
||||
)
|
||||
|
||||
(provide 'init-highlight)
|
||||
;;; init-highlight.el ends here
|
@ -28,18 +28,14 @@
|
||||
(global-set-key (kbd "C-x mh") 'mhtml-mode)
|
||||
(global-set-key (kbd "C-x mj") 'js-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 mw") 'web-mode)
|
||||
|
||||
;; Cambiar de ventana
|
||||
(global-set-key (kbd "C-S-o") 'other-window)
|
||||
|
||||
;; Saltar entre párrafos
|
||||
(define-key global-map "\M-p" 'backward-paragraph)
|
||||
(define-key global-map "\M-n" 'forward-paragraph)
|
||||
|
||||
;; Meta atajos (atajos de atajos)
|
||||
;;(global-set-key (kbd "C-c l d") "\C-a\C- \C-n\M-w\C-y") ; Duplicar línea
|
||||
(define-key global-map "\M-[" 'backward-paragraph)
|
||||
(define-key global-map "\M-]" 'forward-paragraph)
|
||||
|
||||
;; Deactivar el abrir *messages* al cliquear en el minibuffer
|
||||
(define-key minibuffer-inactive-mode-map [mouse-1] #'ignore)
|
||||
|
@ -1,4 +1,4 @@
|
||||
;;; init-eglot.el --- Configuración de eglot (LSP) -*- lexical-binding: t -*-
|
||||
;;; init-lsp.el --- Configuración de eglot (LSP) -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
@ -30,25 +30,43 @@
|
||||
;;; Code:
|
||||
|
||||
(use-package eglot
|
||||
:defer t
|
||||
: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))
|
||||
:hook ((prog-mode . (lambda ()
|
||||
(unless (derived-mode-p
|
||||
'emacs-lisp-mode 'lisp-mode
|
||||
'makefile-mode 'snippet-mode
|
||||
'ron-mode)
|
||||
(eglot-ensure))))
|
||||
((markdown-mode yaml-mode yaml-ts-mode) . eglot-ensure))
|
||||
:init
|
||||
(setq read-process-output-max (* 1024 1024)) ; 1MB
|
||||
(setq eglot-autoshutdown t
|
||||
eglot-events-buffer-size 0
|
||||
eglot-send-changes-idle-time 0.5)
|
||||
:config
|
||||
(setq eglot-sync-connect 0)
|
||||
(add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
;; (add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
|
||||
(add-to-list 'eglot-server-programs
|
||||
'((tsx-ts-mode
|
||||
;; js-ts-mode
|
||||
;; js-mode
|
||||
typescript-ts-mode
|
||||
typescript-mode)
|
||||
.
|
||||
(eglot-deno "deno" "lsp")))
|
||||
|
||||
(defclass eglot-deno (eglot-lsp-server) ()
|
||||
:documentation "A custom class for deno lsp.")
|
||||
|
||||
(cl-defmethod eglot-initialization-options ((server eglot-deno))
|
||||
"Passes through required deno initialization options"
|
||||
(list :enable t
|
||||
:lint t))
|
||||
)
|
||||
|
||||
;; Mejorar la velocidad de eglot (un binario en rust )
|
||||
(use-package eglot-booster
|
||||
:defer t
|
||||
:ensure (:host github :repo "jdtsmith/eglot-booster")
|
||||
:after eglot
|
||||
:config
|
||||
@ -60,8 +78,6 @@
|
||||
|
||||
;; 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))
|
||||
@ -69,7 +85,6 @@
|
||||
|
||||
;; Revisar por errores en el código
|
||||
(use-package flymake
|
||||
:defer t
|
||||
:ensure nil
|
||||
:hook (prog-mode . (lambda ()
|
||||
(unless (derived-mode-p 'makefile-mode)
|
||||
@ -80,10 +95,8 @@
|
||||
|
||||
;; Mostar los errores de flymake en un popup-tip
|
||||
(use-package flymake-diagnostic-at-point
|
||||
:defer t
|
||||
:ensure t
|
||||
:after flymake
|
||||
:hook (flymake-mode . flymake-diagnostic-at-point-mode))
|
||||
|
||||
(provide 'init-eglot)
|
||||
;;; init-eglot.el ends here
|
||||
(provide 'init-lsp)
|
||||
;;; init-lsp.el ends here
|
@ -10,26 +10,8 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; UI para completado
|
||||
(use-package vertico
|
||||
:defer t
|
||||
:bind (:map vertico-map
|
||||
("RET" . vertico-directory-enter)
|
||||
("DEL" . vertico-directory-delete-char)
|
||||
("TAB" . minibuffer-complete)
|
||||
("M-DEL" . vertico-directory-delete-word))
|
||||
:hook ((elpaca-after-init . vertico-mode)
|
||||
(elpaca-after-init . savehist-mode) ;; savehist sirve para recordar el último comando de M-x
|
||||
(rfn-eshadow-update-overlay . vertico-directory-tidy))
|
||||
:config
|
||||
(setq read-file-name-completion-ignore-case t
|
||||
read-buffer-completion-ignore-case t
|
||||
completion-ignore-case t)
|
||||
)
|
||||
|
||||
;; Reemplazo para counsel
|
||||
(use-package consult
|
||||
:defer t
|
||||
:bind (("C-x p" . project-find-file)
|
||||
("C-S-s" . consult-line)
|
||||
("C-c r g" . consult-ripgrep)
|
||||
@ -67,11 +49,11 @@
|
||||
("<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-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.
|
||||
"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.
|
||||
)
|
||||
|
||||
;; Enable automatic preview at point in the *Completions* buffer. This is
|
||||
@ -115,37 +97,39 @@
|
||||
;; You may want to use `embark-prefix-help-command' or which-key instead.
|
||||
(define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help))
|
||||
|
||||
;; nerd-icons en ibuffer
|
||||
(use-package nerd-icons-ibuffer
|
||||
:defer t
|
||||
:hook (ibuffer-mode . nerd-icons-ibuffer-mode))
|
||||
|
||||
;; Descripciones en el minibufer
|
||||
(use-package marginalia
|
||||
:defer t
|
||||
:hook (elpaca-after-init . marginalia-mode))
|
||||
|
||||
;; Nerd icons para vertico
|
||||
(use-package nerd-icons-completion
|
||||
:after nerd-icons
|
||||
:config (nerd-icons-completion-mode))
|
||||
:hook (vertico-mode . marginalia-mode))
|
||||
|
||||
;; Todolist de todo el projecto desde consult.
|
||||
(use-package consult-todo
|
||||
:demand t
|
||||
:bind ("C-c t" . consult-todo)
|
||||
:defer t)
|
||||
:bind ("C-c t" . consult-todo))
|
||||
|
||||
;; UI para completado del minibuffer
|
||||
(use-package vertico
|
||||
:bind (:map vertico-map
|
||||
("RET" . vertico-directory-enter)
|
||||
("DEL" . vertico-directory-delete-char)
|
||||
("TAB" . minibuffer-complete)
|
||||
("M-DEL" . vertico-directory-delete-word))
|
||||
:hook ((elpaca-after-init . vertico-mode)
|
||||
(rfn-eshadow-update-overlay . vertico-directory-tidy))
|
||||
:config
|
||||
(setq read-file-name-completion-ignore-case t
|
||||
read-buffer-completion-ignore-case t
|
||||
completion-ignore-case 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)))
|
||||
)
|
||||
:functions posframe-poshandler-frame-center
|
||||
:hook (vertico-mode . vertico-posframe-mode)
|
||||
:init (setq vertico-posframe-poshandler
|
||||
#'posframe-poshandler-frame-center
|
||||
vertico-posframe-parameters
|
||||
'((left-fringe . 8)
|
||||
(right-fringe . 8))))
|
||||
|
||||
(provide 'init-minibuffer)
|
||||
;;; init-minibuffer.el ends here
|
||||
|
@ -21,38 +21,19 @@
|
||||
"Configuración para el hook de 'org-mode'."
|
||||
|
||||
(display-line-numbers-mode 0)
|
||||
;; (variable-pitch-mode 1)
|
||||
(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))
|
||||
|
||||
;; Ensure that anything that should be fixed-pitch in Org files appears that way
|
||||
;; (set-face-attribute 'org-hide nil :inherit 'fixed-pitch)
|
||||
;; (set-face-attribute 'org-block nil :foreground 'unspecified :inherit 'fixed-pitch)
|
||||
;; (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch))
|
||||
(setq org-fontify-quote-and-verse-blocks t) ;; Permitir configuración de bloques quote y verse.
|
||||
;; (set-face-attribute 'org-block nil :underline nil :foreground nil :background "#282a36")
|
||||
;; (set-face-attribute 'org-block-begin-line nil :underline nil :foreground nil :background "#1e1f28")
|
||||
;; (set-face-attribute 'org-block-end-line nil :underline nil :foreground nil :background nil)
|
||||
;; (set-face-attribute 'org-block-end-line nil :background 'unspecified)
|
||||
(set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch))
|
||||
(set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
|
||||
(set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch))
|
||||
(set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch))
|
||||
(set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch)
|
||||
|
||||
;; (set-face-attribute 'org-block nil :background
|
||||
;; (color-darken-name
|
||||
;; (face-attribute 'default :background) 3))
|
||||
|
||||
;; (setq org-src-block-faces '(("emacs-lisp" (:background "#EEE2FF"))
|
||||
;; ("python" (:background "#E5FFB8"))))
|
||||
|
||||
;; Tachar los elementos "DONE"
|
||||
(set-face-attribute 'org-done nil :strike-through t)
|
||||
(set-face-attribute 'org-headline-done nil
|
||||
@ -104,7 +85,6 @@
|
||||
|
||||
;; org-mode
|
||||
(use-package org
|
||||
:defer t
|
||||
:ensure nil
|
||||
:hook
|
||||
(org-mode . kj/org-hook)
|
||||
@ -118,7 +98,7 @@
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-cycle-separator-lines -1)
|
||||
|
||||
;; Identación
|
||||
;; Indentación
|
||||
(setq org-startup-indented t)
|
||||
(setq org-src-preserve-indentation nil)
|
||||
(setq org-edit-src-content-indentation 0)
|
||||
@ -188,7 +168,6 @@
|
||||
|
||||
;; Los head "*" se ven como puntos
|
||||
(use-package org-bullets
|
||||
:defer t
|
||||
:hook
|
||||
(org-mode . org-bullets-mode)
|
||||
:config
|
||||
@ -204,8 +183,6 @@
|
||||
|
||||
;; Mejora visualmente varias cosas de org
|
||||
(use-package org-modern
|
||||
:defer t
|
||||
:ensure t
|
||||
:hook ((org-mode . org-modern-mode)
|
||||
(org-agenda . org-modern-mode))
|
||||
:config
|
||||
@ -224,7 +201,6 @@
|
||||
)
|
||||
|
||||
(use-package visual-fill-column
|
||||
:defer t
|
||||
:after (org)
|
||||
:config
|
||||
;; Tamaño de la columna
|
||||
@ -237,10 +213,7 @@
|
||||
|
||||
;; Segundo cerebro: Base de conocimientos en formato Zettelkasten
|
||||
(use-package org-roam
|
||||
:defer t
|
||||
:ensure t
|
||||
:bind (("<f4>" . org-roam-node-insert)
|
||||
("<f3>" . org-roam-node-find))
|
||||
:bind ("<f3>" . org-roam-node-find)
|
||||
:init
|
||||
(setq org-roam-v2-ack t)
|
||||
(setq org-roam-completion-system 'ivy)
|
||||
@ -252,8 +225,6 @@
|
||||
|
||||
;; Interface web para navegar en mi base de conocimientos.
|
||||
(use-package org-roam-ui
|
||||
:defer t
|
||||
:ensure t
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
@ -262,33 +233,22 @@
|
||||
|
||||
;; Continúa el formato de la lista cuando presionas enter.
|
||||
(use-package org-autolist
|
||||
:defer t
|
||||
:ensure t
|
||||
:hook (org-mode . org-autolist-mode))
|
||||
|
||||
;; Org babel para PHP
|
||||
(use-package ob-php
|
||||
:defer t
|
||||
:ensure t)
|
||||
(use-package ob-php)
|
||||
|
||||
;; Org babel para GO
|
||||
(use-package ob-go
|
||||
:defer t
|
||||
:ensure t)
|
||||
(use-package ob-go)
|
||||
|
||||
;; Org babel para Rust
|
||||
(use-package ob-rust
|
||||
:defer t
|
||||
:ensure t)
|
||||
(use-package ob-rust)
|
||||
|
||||
;; Org babel para traducciones (mediante google translate)
|
||||
(use-package ob-translate
|
||||
:defer t
|
||||
:ensure t)
|
||||
(use-package ob-translate)
|
||||
|
||||
;; Org mode en modo presentación
|
||||
(use-package org-present
|
||||
:defer t
|
||||
:after (org)
|
||||
:config
|
||||
(add-hook 'org-present-mode-hook
|
||||
@ -316,12 +276,8 @@
|
||||
|
||||
;; Mostrar los caracteres ocultos de org mode al pasar con el cursor.
|
||||
(use-package org-appear
|
||||
:defer t
|
||||
;; :hook (org-mode . org-appear-mode)
|
||||
)
|
||||
|
||||
;; Polymode para org-mode
|
||||
;; (use-package poly-org)
|
||||
|
||||
(provide 'init-org)
|
||||
;;; init-org.el ends here
|
||||
|
78
configs/init-package.el
Normal file
78
configs/init-package.el
Normal file
@ -0,0 +1,78 @@
|
||||
;;; init-package.el --- Initialize package configurations. -*- lexical-binding: t -*-
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Emacs Package management configurations.
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Configuración de repositorios de paquetes
|
||||
|
||||
(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 :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))
|
||||
(build (expand-file-name "elpaca/" elpaca-builds-directory))
|
||||
(order (cdr elpaca-order))
|
||||
(default-directory repo))
|
||||
(add-to-list 'load-path (if (file-exists-p build) build repo))
|
||||
(unless (file-exists-p repo)
|
||||
(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 (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))))
|
||||
(unless (require 'elpaca-autoloads nil t)
|
||||
(require 'elpaca)
|
||||
(elpaca-generate-autoloads "elpaca" repo)
|
||||
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
|
||||
(add-hook 'after-init-hook #'elpaca-process-queues)
|
||||
(elpaca `(,@elpaca-order))
|
||||
|
||||
;; Install use-package support
|
||||
(elpaca elpaca-use-package
|
||||
;; Enable use-package :ensure support for Elpaca.
|
||||
(elpaca-use-package-mode))
|
||||
|
||||
;; Should set before loading `use-package'
|
||||
(setq use-package-always-ensure t
|
||||
use-package-always-defer t
|
||||
use-package-expand-minimally t
|
||||
use-package-enable-imenu-support t)
|
||||
|
||||
;; Required by `use-package'
|
||||
(use-package diminish :ensure t)
|
||||
|
||||
;; Update GPG keyring for GNU ELPA
|
||||
(use-package gnu-elpa-keyring-update)
|
||||
|
||||
;; Update packages
|
||||
(unless (fboundp 'package-upgrade-all)
|
||||
(use-package auto-package-update
|
||||
:init
|
||||
(setq auto-package-update-delete-old-versions t
|
||||
auto-package-update-hide-results t)
|
||||
(defalias 'package-upgrade-all #'auto-package-update-now)))
|
||||
|
||||
|
||||
(provide 'init-package)
|
||||
;;; init-package.el ends here
|
@ -1,413 +0,0 @@
|
||||
;;; init-packages.el --- Extensiones/paquetes instalados y su configuración -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Aquí se encuentran los paquetes de uso general.
|
||||
;;
|
||||
;; Aquellos de uso más específico, por ejemplo, los que
|
||||
;; pertenecen a un lenguaje de programación en específico
|
||||
;; estarán en el respectivo archivo de configuración
|
||||
;; para dicho uso específico.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Mejora del reemplazo
|
||||
(use-package anzu
|
||||
:defer t
|
||||
:bind (([remap query-replace] . anzu-query-replace)
|
||||
([remap query-replace-regexp] . anzu-query-replace-regexp)))
|
||||
|
||||
;; Intercamiar buffers de lugar
|
||||
(use-package buffer-move
|
||||
:defer 2
|
||||
:bind (("M-S-<up>" . buf-move-up)
|
||||
("M-S-<down>" . buf-move-down)
|
||||
("M-S-<left>" . buf-move-left)
|
||||
("M-S-<right>" . buf-move-right))
|
||||
)
|
||||
|
||||
;; Mostrar la ayuda de eldoc/documentación en un childframe
|
||||
(use-package eldoc-box
|
||||
:defer t
|
||||
:bind ("<f1>" . eldoc-box-help-at-point))
|
||||
|
||||
;; 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)
|
||||
("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))
|
||||
)
|
||||
|
||||
;; Visor de documentos de emacs (soporta de todo: epub, pdf, odt, docx, cbz, etc.)
|
||||
(use-package doc-view
|
||||
:defer t
|
||||
:hook
|
||||
(doc-view-mode . (lambda ()
|
||||
(display-line-numbers-mode 0)))
|
||||
:ensure nil)
|
||||
|
||||
;; Un bonito y sencillo panel de inicio
|
||||
(use-package dashboard
|
||||
:defer t
|
||||
:config
|
||||
(setq dashboard-set-file-icons t
|
||||
dashboard-set-heading-icons t
|
||||
dashboard-set-file-icons t
|
||||
dashboard-week-agenda nil
|
||||
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 '(
|
||||
;; (recents . 10)
|
||||
(agenda . 10)
|
||||
))
|
||||
)
|
||||
|
||||
;; Coloca en emacs la documentacón distribuída por devdocs.io
|
||||
(use-package devdocs
|
||||
:defer 2)
|
||||
|
||||
;; Sidebar a la derecha con los archivos
|
||||
(use-package dired-sidebar
|
||||
:defer t
|
||||
:hook (dired-mode . hl-line-mode)
|
||||
:bind ([f9] . dired-sidebar-toggle-sidebar)
|
||||
:commands (dired-sidebar-toggle-sidebar)
|
||||
:config
|
||||
(setq dired-sidebar-theme 'nerd
|
||||
;; dired-sidebar-should-follow-file t
|
||||
;; dired-sidebar-follow-file-idle-delay 0.5
|
||||
))
|
||||
|
||||
;; La línea bonita esa de abajo
|
||||
(use-package doom-modeline
|
||||
:after emacs
|
||||
:ensure t
|
||||
: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
|
||||
doom-modeline-buffer-modification-icon t
|
||||
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
|
||||
:defer t
|
||||
:config
|
||||
;; Suelo tener podman siempre en lugar de docker, así que lo definimos como el comando a usar
|
||||
(setq dockerfile-mode-command "podman"))
|
||||
|
||||
;; Mover líneas o regiones
|
||||
(use-package drag-stuff
|
||||
: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
|
||||
;; :config
|
||||
;; (electric-pair-mode)
|
||||
;; (setq electric-pair-delete-adjacent-pairs nil))
|
||||
|
||||
;; Cargar las variables de entorno desde la configuración del usuario
|
||||
(use-package exec-path-from-shell
|
||||
:config
|
||||
(exec-path-from-shell-initialize))
|
||||
|
||||
;; Resalta los escapes de secuencia
|
||||
(use-package highlight-escape-sequences
|
||||
:defer t
|
||||
:hook (prog-mode . hes-mode)
|
||||
:config
|
||||
(setq hes-mode-alist
|
||||
`((c-mode . ,hes-c/c++/objc-escape-sequence-re)
|
||||
(c++-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)
|
||||
(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)
|
||||
(clojure-mode . ,hes-java-escape-sequence-re)
|
||||
(js-mode . ,hes-js-escape-sequence-re)
|
||||
(js2-mode . ,hes-js-escape-sequence-re)
|
||||
(ruby-mode . ,hes-ruby-escape-sequence-keywords)
|
||||
(lisp-mode . ,hes-elisp-escape-sequence-re)
|
||||
(lisp-interaction-mode . ,hes-elisp-escape-sequence-re)
|
||||
(emacs-lisp-mode . ,hes-elisp-escape-sequence-re))
|
||||
)
|
||||
)
|
||||
|
||||
;; Resaltar palabras clave como TODO, FIXME, etc. en comentarios del código.
|
||||
(use-package hl-todo
|
||||
:ensure (hl-todo :version (lambda (_) "3.6.0"))
|
||||
:defer t
|
||||
:hook (prog-mode . hl-todo-mode)
|
||||
:config
|
||||
(add-to-list 'hl-todo-keyword-faces '("BUG" . "#d99600")))
|
||||
|
||||
;; Paquete para exportar buffers de emacs a HTML
|
||||
(use-package htmlize
|
||||
:defer t
|
||||
:ensure t)
|
||||
|
||||
;; Permite crear conjuntos de atajos.
|
||||
(use-package hydra
|
||||
:defer t)
|
||||
|
||||
;; Mostrar lo que se está presionando en pantalla
|
||||
(use-package keypression
|
||||
:defer t
|
||||
:config
|
||||
(setq keypression-use-child-frame t
|
||||
keypression-fade-out-delay 1.0
|
||||
keypression-frame-justify 'keypression-left-justified
|
||||
keypression-cast-command-name t
|
||||
keypression-cast-command-name-format "%s %s"
|
||||
keypression-combine-same-keystrokes t
|
||||
keypression-x-offset 50
|
||||
keypression-y-offset 100
|
||||
keypression-font-face-attribute '(:width normal :height 180 :weight bold))
|
||||
)
|
||||
|
||||
;; Modo markdown
|
||||
(use-package markdown-mode
|
||||
:defer t)
|
||||
|
||||
;; 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)
|
||||
("C-x tp" . multi-vterm-project)
|
||||
;;("<tab>" . vterm-send-tab)
|
||||
)
|
||||
:ensure t)
|
||||
|
||||
;; Iconos bonitos para varias cosas
|
||||
(use-package nerd-icons
|
||||
:defer t)
|
||||
|
||||
;; 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
|
||||
(use-package nginx-mode
|
||||
:defer t)
|
||||
|
||||
;; Múltiples modos en un mismo buffer
|
||||
;; (use-package polymode
|
||||
;; :defer t)
|
||||
|
||||
;; Des-minifica / ordena el código
|
||||
(use-package prettier
|
||||
:defer t)
|
||||
|
||||
(use-package project
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
;; Colocamos un título del frame más bonito y útil que el por defecto
|
||||
(setq frame-title-format
|
||||
'(
|
||||
(:eval
|
||||
(let ((project-name (kj/project-name)))
|
||||
(unless (null project-name)
|
||||
(format "[%s] " project-name))))
|
||||
"%b"
|
||||
" - Emacs")
|
||||
)
|
||||
)
|
||||
|
||||
;; Correr el código desde el buffer de emacs
|
||||
(use-package quickrun
|
||||
:defer t
|
||||
:ensure t
|
||||
:bind (:map prog-mode-map
|
||||
("C-c C-r" . quickrun)
|
||||
("C-c r f" . quickrun)
|
||||
("C-c r r" . quickrun-region)
|
||||
("C-c r R" . quickrun-replace-region)
|
||||
)
|
||||
)
|
||||
|
||||
;; Recentf - Guarda registro de los archivos abiertos recientemente
|
||||
(use-package recentf
|
||||
:defer t
|
||||
:ensure nil
|
||||
:bind ("C-x C-r" . recentf-open-files)
|
||||
:hook (after-load-theme . recentf-mode)
|
||||
:config
|
||||
(setq recentf-save-file
|
||||
(recentf-expand-file-name (concat temp-dir "/recentf"))
|
||||
recentf-auto-cleanup 'never
|
||||
recentf-keep '(file-remote-p file-readable-p)
|
||||
recentf-max-saved-items 1000
|
||||
recentf-max-menu-items 500))
|
||||
|
||||
;; Busqueda rápida con ripgrep
|
||||
(use-package rg
|
||||
:defer t
|
||||
;; :hook (elpaca-after-init . rg-enable-default-bindings)
|
||||
:bind (:map rg-global-map
|
||||
("c" . rg-dwim-current-dir)
|
||||
("f" . rg-dwim-current-file)
|
||||
("m" . rg-menu))
|
||||
:config
|
||||
(setq rg-group-result t
|
||||
rg-show-columns t)
|
||||
(cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases))
|
||||
|
||||
;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
|
||||
(use-package saveplace
|
||||
:ensure nil
|
||||
:defer t
|
||||
:hook
|
||||
(elpaca-after-init . (lambda()
|
||||
(setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))
|
||||
(save-place-mode 1)
|
||||
))
|
||||
)
|
||||
|
||||
;; Mejorando el scroll
|
||||
(use-package smooth-scrolling
|
||||
:defer t
|
||||
: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)
|
||||
)
|
||||
|
||||
;; Ayuda a manipular los archivos con líneas demasiado largas
|
||||
(use-package so-long
|
||||
:defer t
|
||||
:ensure nil
|
||||
:bind (:map so-long-mode-map
|
||||
("C-s" . isearch-forward)
|
||||
("C-r" . isearch-backward))
|
||||
:config
|
||||
(setq so-long-variable-overrides
|
||||
'((bidi-inhibit-bpa . t)
|
||||
(bidi-paragraph-direction . left-to-right)
|
||||
(buffer-read-only . nil)
|
||||
(global-hl-line-mode . nil)
|
||||
(line-move-visual . t)
|
||||
(show-paren-mode . nil)
|
||||
(truncate-lines . nil)
|
||||
(which-func-mode . nil)))
|
||||
)
|
||||
|
||||
;; Mecanografía
|
||||
(use-package speed-type
|
||||
: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 15725 24536)
|
||||
speed-type-min-chars 300
|
||||
speed-type-max-chars 600))
|
||||
|
||||
;; Tree-sitter :)
|
||||
(use-package treesit
|
||||
:defer t
|
||||
:ensure nil
|
||||
:commands (treesit-install-language-grammar nf/treesit-install-all-languages)
|
||||
:config
|
||||
(setq treesit-language-source-alist
|
||||
'((bash . ("https://github.com/tree-sitter/tree-sitter-bash"))
|
||||
(c . ("https://github.com/tree-sitter/tree-sitter-c"))
|
||||
(cpp . ("https://github.com/tree-sitter/tree-sitter-cpp"))
|
||||
(css . ("https://github.com/tree-sitter/tree-sitter-css"))
|
||||
(go . ("https://github.com/tree-sitter/tree-sitter-go"))
|
||||
(haskell . ("https://github.com/tree-sitter/tree-sitter-haskell"))
|
||||
(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'."
|
||||
(interactive)
|
||||
(let ((languages (mapcar 'car treesit-language-source-alist)))
|
||||
(dolist (lang languages)
|
||||
(treesit-install-language-grammar lang)
|
||||
(message "`%s' parser was installed." lang)
|
||||
(sit-for 0.75)))))
|
||||
|
||||
;; Terminal
|
||||
(use-package vterm
|
||||
:defer 1
|
||||
:config
|
||||
(setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto
|
||||
(setq vterm-tramp-shells '(("ssh" "/bin/bash")
|
||||
("sshx" "/bin/bash")
|
||||
("docker" "/bin/bash")
|
||||
("podman" "/bin/bash"))) ;; Tanto docker como podman usarán bash cuado se contecte mediante tramp
|
||||
)
|
||||
|
||||
;; Cuando inicias un atajo de teclas te muestra las posibilidades
|
||||
(use-package which-key
|
||||
:defer t
|
||||
: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
|
||||
:config
|
||||
(winner-mode))
|
||||
|
||||
;; Emacs Start Up Profiler
|
||||
;; (use-package esup
|
||||
;; :defer t)
|
||||
|
||||
(provide 'init-packages)
|
||||
;;; init-packages.el ends here
|
228
configs/init-prog.el
Normal file
228
configs/init-prog.el
Normal file
@ -0,0 +1,228 @@
|
||||
;; init-prog.el --- Initialize programming configurations. -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; General programming configurations.
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Show function arglist or variable docstring
|
||||
(use-package eldoc
|
||||
:ensure nil
|
||||
:diminish
|
||||
:config
|
||||
(when (childframe-workable-p)
|
||||
;; Mostrar la ayuda de eldoc/documentación en un childframe
|
||||
(use-package eldoc-box
|
||||
:diminish (eldoc-box-hover-mode eldoc-box-hover-at-point-mode)
|
||||
:bind ("<f1>" . eldoc-box-help-at-point)
|
||||
:custom
|
||||
(eldoc-box-lighter nil)
|
||||
(eldoc-box-only-multi-line t)
|
||||
(eldoc-box-clear-with-C-g t)
|
||||
:custom-face
|
||||
(eldoc-box-border ((t (:inherit posframe-border :background unspecified))))
|
||||
(eldoc-box-body ((t (:inherit tooltip))))
|
||||
:hook ((eglot-managed-mode . eldoc-box-hover-at-point-mode))
|
||||
:config
|
||||
;; Prettify `eldoc-box' frame
|
||||
(setf (alist-get 'left-fringe eldoc-box-frame-parameters) 8
|
||||
(alist-get 'right-fringe eldoc-box-frame-parameters) 8))))
|
||||
|
||||
;; Code folding indicators using Tree-sitter
|
||||
(use-package treesit-fold-indicators
|
||||
:ensure treesit-fold
|
||||
:hook (after-init . global-treesit-fold-indicators-mode)
|
||||
:init (setq treesit-fold-indicators-priority -1))
|
||||
|
||||
;; Cross-referencing commands
|
||||
(use-package xref
|
||||
:autoload xref-show-definitions-completing-read
|
||||
:bind (("M-g ." . xref-find-definitions)
|
||||
("M-g ," . xref-go-back))
|
||||
:init
|
||||
;; Use faster search tool
|
||||
(when (executable-find "rg")
|
||||
(setq xref-search-program 'ripgrep))
|
||||
|
||||
;; Select from xref candidates in minibuffer
|
||||
(setq xref-show-definitions-function #'xref-show-definitions-completing-read
|
||||
xref-show-xrefs-function #'xref-show-definitions-completing-read))
|
||||
|
||||
;; Code styles
|
||||
(use-package editorconfig
|
||||
:diminish
|
||||
:hook (elpaca-after-init . editorconfig-mode))
|
||||
|
||||
;; Correr el código desde el buffer de emacs
|
||||
(use-package quickrun
|
||||
:bind (("C-<f5>" . quickrun)
|
||||
("C-S-<f5>" . quickrun-region)))
|
||||
|
||||
;; Busqueda rápida con ripgrep
|
||||
(use-package rg
|
||||
:bind (:map rg-global-map
|
||||
("c" . rg-dwim-current-dir)
|
||||
("f" . rg-dwim-current-file)
|
||||
("m" . rg-menu))
|
||||
:config
|
||||
(setq rg-group-result t
|
||||
rg-show-columns t)
|
||||
(cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases))
|
||||
|
||||
;; Tree-sitter :)
|
||||
(use-package treesit
|
||||
:ensure nil
|
||||
:commands (treesit-install-language-grammar nf/treesit-install-all-languages)
|
||||
:config
|
||||
(setq treesit-language-source-alist
|
||||
'((bash . ("https://github.com/tree-sitter/tree-sitter-bash"))
|
||||
(c . ("https://github.com/tree-sitter/tree-sitter-c"))
|
||||
(cpp . ("https://github.com/tree-sitter/tree-sitter-cpp"))
|
||||
(css . ("https://github.com/tree-sitter/tree-sitter-css"))
|
||||
(go . ("https://github.com/tree-sitter/tree-sitter-go"))
|
||||
(haskell . ("https://github.com/tree-sitter/tree-sitter-haskell"))
|
||||
(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'."
|
||||
(interactive)
|
||||
(let ((languages (mapcar 'car treesit-language-source-alist)))
|
||||
(dolist (lang languages)
|
||||
(treesit-install-language-grammar lang)
|
||||
(message "`%s' parser was installed." lang)
|
||||
(sit-for 0.75)))))
|
||||
|
||||
;; Browse devdocs.io documents using EWW
|
||||
(use-package devdocs
|
||||
:autoload (devdocs--installed-docs devdocs--available-docs)
|
||||
:commands (devdocs-install devdocs-lookup)
|
||||
:bind (:map prog-mode-map
|
||||
("M-<f1>" . devdocs-dwim)
|
||||
("C-h D" . devdocs-dwim))
|
||||
:init
|
||||
(defconst devdocs-major-mode-docs-alist
|
||||
'((c-mode . ("c"))
|
||||
(c++-mode . ("cpp"))
|
||||
(python-mode . ("python~3.10" "python~2.7"))
|
||||
(ruby-mode . ("ruby~3.1"))
|
||||
(rustic-mode . ("rust"))
|
||||
(css-mode . ("css"))
|
||||
(html-mode . ("html"))
|
||||
(julia-mode . ("julia~1.8"))
|
||||
(js-mode . ("javascript" "jquery"))
|
||||
(emacs-lisp-mode . ("elisp")))
|
||||
"Alist of major-mode and docs.")
|
||||
|
||||
(mapc
|
||||
(lambda (mode)
|
||||
(add-hook (intern (format "%s-hook" (car mode)))
|
||||
(lambda ()
|
||||
(setq-local devdocs-current-docs (cdr mode)))))
|
||||
devdocs-major-mode-docs-alist)
|
||||
|
||||
(setq devdocs-data-dir (expand-file-name "devdocs" user-emacs-directory))
|
||||
|
||||
(defun devdocs-dwim()
|
||||
"Look up a DevDocs documentation entry.
|
||||
|
||||
Install the doc if it's not installed."
|
||||
(interactive)
|
||||
;; Install the doc if it's not installed
|
||||
(mapc
|
||||
(lambda (slug)
|
||||
(unless (member slug (let ((default-directory devdocs-data-dir))
|
||||
(seq-filter #'file-directory-p
|
||||
(when (file-directory-p devdocs-data-dir)
|
||||
(directory-files "." nil "^[^.]")))))
|
||||
(mapc
|
||||
(lambda (doc)
|
||||
(when (string= (alist-get 'slug doc) slug)
|
||||
(devdocs-install doc)))
|
||||
(devdocs--available-docs))))
|
||||
(alist-get major-mode devdocs-major-mode-docs-alist))
|
||||
|
||||
;; Lookup the symbol at point
|
||||
(devdocs-lookup nil (thing-at-point 'symbol t))))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Miscellaneous Programming Modes
|
||||
;; ---------------------------------------------------------------------------
|
||||
(use-package csv-mode)
|
||||
(unless emacs/>=29p
|
||||
(use-package csharp-mode))
|
||||
(use-package cask-mode)
|
||||
(use-package cmake-mode)
|
||||
(use-package dart-mode)
|
||||
(use-package julia-mode)
|
||||
(use-package lua-mode)
|
||||
(use-package mermaid-mode)
|
||||
(use-package powershell)
|
||||
(use-package scala-mode)
|
||||
(use-package swift-mode)
|
||||
(use-package v-mode)
|
||||
(use-package vimrc-mode)
|
||||
(use-package yaml-mode) ; Modo yaml
|
||||
(use-package nginx-mode) ; Modo para leer archivos de configuración de nginx
|
||||
|
||||
;; Major mode para archivos CSV
|
||||
(use-package csv-mode
|
||||
;; :hook ((csv-mode . csv-align-mode)
|
||||
;; (csv-mode . csv-header-line))
|
||||
)
|
||||
|
||||
;; Modo markdown
|
||||
(use-package markdown-mode)
|
||||
|
||||
;; Modo para edición de arc docker compose
|
||||
(use-package docker-compose-mode)
|
||||
|
||||
;; Modo para la edición de archivos Dockerfile (y building desde emacs)
|
||||
(use-package dockerfile-mode
|
||||
:config
|
||||
;; Suelo tener podman siempre en lugar de docker, así que lo definimos como el comando a usar
|
||||
(setq dockerfile-mode-command "podman"))
|
||||
|
||||
;; Configuración para project.el
|
||||
(use-package project
|
||||
:ensure nil
|
||||
:config
|
||||
;; Colocamos un título del frame más bonito y útil que el por defecto
|
||||
(setq frame-title-format
|
||||
'(
|
||||
(:eval
|
||||
(let ((project-name (kj/project-name)))
|
||||
(unless (null project-name)
|
||||
(format "[%s] " project-name))))
|
||||
"%b"
|
||||
" - Emacs")
|
||||
)
|
||||
)
|
||||
|
||||
(use-package prettier
|
||||
:diminish
|
||||
:defines prettier-pre-warm
|
||||
:hook ((js-base-mode css-mode sgml-mode web-mode) . prettier-mode)
|
||||
:init (setq prettier-pre-warm 'none))
|
||||
|
||||
;;; init-prog.el ends here
|
@ -12,23 +12,18 @@
|
||||
;;; Code:
|
||||
|
||||
;; Theme dracula (https://draculatheme.com/) // aún lo tengo en l config porque a Ney le gusta
|
||||
(use-package dracula-theme
|
||||
:defer t)
|
||||
(use-package dracula-theme)
|
||||
|
||||
;; El theme más cercano a adwaita dark que he encontrado
|
||||
(use-package adwaita-dark-theme
|
||||
:defer t)
|
||||
(use-package adwaita-dark-theme)
|
||||
|
||||
;; Themes modus, vienen integrado en emacs en master (~v30)
|
||||
(use-package modus-themes
|
||||
:defer t)
|
||||
(use-package modus-themes)
|
||||
|
||||
;; Themes ef
|
||||
(use-package ef-themes
|
||||
:defer t)
|
||||
|
||||
;; Prendemos el theme que elijamos
|
||||
(add-hook 'elpaca-after-init-hook #'(lambda() (load-theme 'ef-dream t)))
|
||||
:init
|
||||
(load-theme 'ef-dream t))
|
||||
|
||||
;; Los themes que recomiendo:
|
||||
;; Oscuros: adwaita-dark y ef-dream
|
||||
|
148
configs/init-ui.el
Normal file
148
configs/init-ui.el
Normal file
@ -0,0 +1,148 @@
|
||||
;; init-ui.el --- Better lookings and appearances. -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Visual (UI) configurations for better lookings and appearances.
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Optimization
|
||||
(setq idle-update-delay 1.0)
|
||||
|
||||
(setq-default cursor-in-non-selected-windows nil)
|
||||
(setq highlight-nonselected-windows nil)
|
||||
|
||||
(setq fast-but-imprecise-scrolling t)
|
||||
(setq redisplay-skip-fontification-on-input t)
|
||||
|
||||
;; Sidebar a la derecha con los archivos
|
||||
(use-package dired-sidebar
|
||||
:hook (dired-mode . hl-line-mode)
|
||||
:bind ([f9] . dired-sidebar-toggle-sidebar)
|
||||
:commands (dired-sidebar-toggle-sidebar)
|
||||
:config
|
||||
(setq dired-sidebar-theme 'nerd
|
||||
;; dired-sidebar-should-follow-file t
|
||||
;; dired-sidebar-follow-file-idle-delay 0.5
|
||||
))
|
||||
|
||||
|
||||
;; Show line numbers
|
||||
(use-package display-line-numbers
|
||||
:ensure nil
|
||||
:hook ((prog-mode
|
||||
conf-mode toml-ts-mode
|
||||
yaml-mode yaml-ts-mode)
|
||||
. display-line-numbers-mode)
|
||||
:init (setq display-line-numbers-width-start t))
|
||||
|
||||
;; Suppress GUI features
|
||||
(setq use-file-dialog nil
|
||||
use-dialog-box nil
|
||||
inhibit-startup-screen t
|
||||
inhibit-startup-echo-area-message user-login-name
|
||||
inhibit-default-init t
|
||||
initial-scratch-message nil)
|
||||
(unless (daemonp)
|
||||
(advice-add #'display-startup-echo-area-message :override #'ignore))
|
||||
|
||||
;; Display dividers between windows
|
||||
(setq window-divider-default-places t
|
||||
window-divider-default-bottom-width 1
|
||||
window-divider-default-right-width 1)
|
||||
(add-hook 'window-setup-hook #'window-divider-mode)
|
||||
|
||||
|
||||
;; Mouse & Smooth Scroll
|
||||
;; Scroll one line at a time (less "jumpy" than defaults)
|
||||
(when (display-graphic-p)
|
||||
(setq mouse-wheel-scroll-amount '(1 ((shift) . hscroll))
|
||||
mouse-wheel-scroll-amount-horizontal 1
|
||||
mouse-wheel-progressive-speed nil))
|
||||
(setq scroll-step 1
|
||||
scroll-margin 0
|
||||
scroll-conservatively 100000
|
||||
auto-window-vscroll nil
|
||||
scroll-preserve-screen-position t)
|
||||
|
||||
;; Smooth scrolling
|
||||
(use-package ultra-scroll
|
||||
:hook (elpaca-after-init . ultra-scroll-mode))
|
||||
|
||||
;; Use fixed pitch where it's sensible
|
||||
(use-package mixed-pitch
|
||||
:diminish)
|
||||
|
||||
;; Display ugly ^L page breaks as tidy horizontal lines
|
||||
(use-package page-break-lines
|
||||
:diminish
|
||||
:hook (elpaca-after-init . global-page-break-lines-mode)
|
||||
:config (dolist (mode '(dashboard-mode emacs-news-mode))
|
||||
(add-to-list 'page-break-lines-modes mode)))
|
||||
|
||||
;; Transient
|
||||
(when (childframe-workable-p)
|
||||
;; Display transient in child frame
|
||||
(use-package transient-posframe
|
||||
:diminish
|
||||
:defines posframe-border-width
|
||||
:custom-face
|
||||
(transient-posframe ((t (:inherit tooltip))))
|
||||
(transient-posframe-border ((t (:inherit posframe-border :background unspecified))))
|
||||
:hook (after-init . transient-posframe-mode)
|
||||
:init (setq transient-mode-line-format nil
|
||||
transient-posframe-border-width posframe-border-width
|
||||
transient-posframe-poshandler 'posframe-poshandler-frame-center
|
||||
transient-posframe-parameters '((left-fringe . 8)
|
||||
(right-fringe . 8)))))
|
||||
|
||||
;; La línea bonita esa de abajo
|
||||
(use-package doom-modeline
|
||||
:init
|
||||
(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
|
||||
doom-modeline-buffer-modification-icon t
|
||||
doom-modeline-indent-info nil
|
||||
doom-modeline-persp-name t))
|
||||
|
||||
(use-package hide-mode-line
|
||||
:autoload turn-off-hide-mode-line-mode
|
||||
:hook (((eat-mode
|
||||
eshell-mode shell-mode
|
||||
term-mode vterm-mode
|
||||
embark-collect-mode lsp-ui-imenu-mode
|
||||
pdf-annot-list-mode) . turn-on-hide-mode-line-mode)))
|
||||
|
||||
;; A minor-mode menu for mode-line
|
||||
(use-package minions
|
||||
:hook (elpaca-after-init . minions-mode))
|
||||
|
||||
;; Iconos bonitos para varias cosas
|
||||
(use-package nerd-icons
|
||||
:commands nerd-icons-install-fonts
|
||||
:functions font-installed-p
|
||||
:config
|
||||
(unless (font-installed-p nerd-icons-font-family)
|
||||
(nerd-icons-install-fonts t)))
|
||||
|
||||
;; nerd-icons en ibuffer
|
||||
(use-package nerd-icons-ibuffer
|
||||
:hook (ibuffer-mode . nerd-icons-ibuffer-mode))
|
||||
|
||||
;; Nerd icons para vertico
|
||||
(use-package nerd-icons-completion
|
||||
:hook (vertico-mode . nerd-icons-completion-mode))
|
||||
|
||||
;; Usar nerd-icons en dired
|
||||
(use-package nerd-icons-dired
|
||||
:after nerd-icons
|
||||
:hook (dired-mode . nerd-icons-dired-mode))
|
||||
|
||||
(provide 'init-ui)
|
||||
;;; init-ui.el ends here
|
241
configs/init-utils.el
Normal file
241
configs/init-utils.el
Normal file
@ -0,0 +1,241 @@
|
||||
;; init-utils.el --- Initialize ultilities. -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Some usefule Utilities.
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Mejora del reemplazo
|
||||
(use-package anzu
|
||||
:bind (([remap query-replace] . anzu-query-replace)
|
||||
([remap query-replace-regexp] . anzu-query-replace-regexp)))
|
||||
|
||||
;; Intercamiar buffers de lugar
|
||||
(use-package buffer-move
|
||||
:bind (("M-S-<up>" . buf-move-up)
|
||||
("M-S-<down>" . buf-move-down)
|
||||
("M-S-<left>" . buf-move-left)
|
||||
("M-S-<right>" . buf-move-right))
|
||||
)
|
||||
|
||||
;; Cuando inicias un atajo de teclas te muestra las posibilidades
|
||||
(use-package which-key
|
||||
:diminish
|
||||
:init (setq which-key-max-description-length 30
|
||||
which-key-lighter nil
|
||||
which-key-show-remaining-keys t)
|
||||
:autoload which-key-posframe-mode
|
||||
:hook ( elpaca-after-init . which-key-mode))
|
||||
|
||||
;; Muestra which-key en un frame en el centro en lugar de abajo
|
||||
(when (childframe-workable-p)
|
||||
(use-package which-key-posframe
|
||||
:diminish
|
||||
:defines posframe-border-width
|
||||
:functions posframe-poshandler-frame-center-near-bottom
|
||||
:custom-face
|
||||
(which-key-posframe ((t (:inherit tooltip))))
|
||||
(which-key-posframe-border ((t (:inherit posframe-border :background unspecified))))
|
||||
:init
|
||||
(setq which-key-posframe-border-width posframe-border-width
|
||||
which-key-posframe-poshandler #'posframe-poshandler-frame-center-near-bottom
|
||||
which-key-posframe-parameters '((left-fringe . 8)
|
||||
(right-fringe . 8)))
|
||||
(which-key-posframe-mode 1)))
|
||||
|
||||
;; Fast search tool `ripgrep'
|
||||
(use-package rg
|
||||
: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-show-columns t)
|
||||
:config (add-to-list 'rg-custom-type-aliases '("tmpl" . "*.tmpl")))
|
||||
|
||||
;; Process
|
||||
(use-package proced
|
||||
:ensure nil
|
||||
:init
|
||||
(setq-default proced-format 'verbose)
|
||||
(setq proced-auto-update-flag t
|
||||
proced-auto-update-interval 3
|
||||
proced-enable-color-flag t))
|
||||
|
||||
;; Paquete para exportar buffers de emacs a HTML
|
||||
(use-package htmlize)
|
||||
|
||||
;; eww
|
||||
(use-package eww
|
||||
:ensure nil
|
||||
:init
|
||||
;; Install: npm install -g readability-cli
|
||||
(when (executable-find "readable")
|
||||
(setq eww-retrieve-command '("readable"))))
|
||||
|
||||
;; Restaurar el estado de los frames
|
||||
(use-package winner
|
||||
:ensure nil
|
||||
:config
|
||||
(winner-mode))
|
||||
|
||||
;; Terminal
|
||||
(use-package vterm
|
||||
:config
|
||||
(setq tramp-histfile-override nil) ;; Dejamos que se use el history por defecto del servidor remoto
|
||||
(setq vterm-tramp-shells '(("ssh" "/bin/bash")
|
||||
("sshx" "/bin/bash")
|
||||
("docker" "/bin/bash")
|
||||
("podman" "/bin/bash"))) ;; Tanto docker como podman usarán bash cuado se contecte mediante tramp
|
||||
)
|
||||
|
||||
;; Multiple vterm
|
||||
(use-package multi-vterm
|
||||
:after vterm
|
||||
:bind* (("<f5>" . multi-vterm-dedicated-toggle)
|
||||
("C-x tt" . multi-vterm-dedicated-toggle)
|
||||
("C-x tf" . multi-vterm)
|
||||
("C-x tp" . multi-vterm-project)
|
||||
;;("<tab>" . vterm-send-tab)
|
||||
))
|
||||
|
||||
;; Mecanografía
|
||||
(use-package speed-type
|
||||
: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 15725 24536)
|
||||
speed-type-min-chars 300
|
||||
speed-type-max-chars 600))
|
||||
|
||||
;; Mostrar lo que se está presionando en pantalla
|
||||
(use-package keypression
|
||||
:config
|
||||
(setq keypression-use-child-frame t
|
||||
keypression-fade-out-delay 1.0
|
||||
keypression-frame-justify 'keypression-left-justified
|
||||
keypression-cast-command-name t
|
||||
keypression-cast-command-name-format "%s %s"
|
||||
keypression-combine-same-keystrokes t
|
||||
keypression-x-offset 50
|
||||
keypression-y-offset 100
|
||||
keypression-font-face-attribute '(:width normal :height 180 :weight bold))
|
||||
)
|
||||
|
||||
;; Un bonito y sencillo panel de inicio
|
||||
(use-package dashboard
|
||||
;; :init
|
||||
;; (dashboard-setup-startup-hook)
|
||||
:diminish dashboard-mode
|
||||
:custom-face
|
||||
(dashboard-heading ((t (:inherit (font-lock-string-face bold)))))
|
||||
(dashboard-items-face ((t (:weight normal))))
|
||||
(dashboard-no-items-face ((t (:weight normal))))
|
||||
:config
|
||||
(setq dashboard-set-file-icons t
|
||||
dashboard-set-heading-icons t
|
||||
dashboard-set-file-icons t
|
||||
dashboard-week-agenda nil
|
||||
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 '(
|
||||
;; (recents . 10)
|
||||
(agenda . 10)
|
||||
))
|
||||
)
|
||||
|
||||
;; Hydra - Permite crear conjuntos de atajos.
|
||||
(use-package hydra
|
||||
:defines posframe-border-width
|
||||
:functions childframe-workable-p
|
||||
:hook (emacs-lisp-mode . hydra-add-imenu)
|
||||
:init
|
||||
(when (childframe-workable-p)
|
||||
(setq hydra-hint-display-type 'posframe)
|
||||
(with-no-warnings
|
||||
(defun hydra-set-posframe-show-params ()
|
||||
"Set hydra-posframe style."
|
||||
(setq hydra-posframe-show-params
|
||||
`(:left-fringe 8
|
||||
:right-fringe 8
|
||||
:internal-border-width ,posframe-border-width
|
||||
:internal-border-color ,(face-background 'posframe-border nil t)
|
||||
:background-color ,(face-background 'tooltip nil t)
|
||||
:foreground-color ,(face-foreground 'tooltip nil t)
|
||||
:lines-truncate t
|
||||
:poshandler posframe-poshandler-frame-center)))
|
||||
(hydra-set-posframe-show-params)
|
||||
(add-hook 'after-load-theme-hook #'hydra-set-posframe-show-params t))))
|
||||
|
||||
;; Pretty-Hydra - Su nombre ya indica lo que hace
|
||||
(use-package pretty-hydra
|
||||
:bind ("<f6>" . toggles-hydra/body)
|
||||
:hook (emacs-lisp-mode . (lambda ()
|
||||
(add-to-list
|
||||
'imenu-generic-expression
|
||||
'("Hydras"
|
||||
"^.*(\\(pretty-hydra-define\\) \\([a-zA-Z-]+\\)"
|
||||
2))))
|
||||
:init
|
||||
(cl-defun pretty-hydra-title (title &optional icon-type icon-name
|
||||
&key face height v-adjust)
|
||||
"Add an icon in the hydra title."
|
||||
(let ((face (or face 'mode-line-emphasis))
|
||||
(height (or height 1.2))
|
||||
(v-adjust (or v-adjust 0.0)))
|
||||
(concat
|
||||
(when (and icon-type icon-name)
|
||||
(let ((f (intern (format "nerd-icons-%s" icon-type))))
|
||||
(when (fboundp f)
|
||||
(concat
|
||||
(apply f (list icon-name :face face :height height :v-adjust v-adjust))
|
||||
" "))))
|
||||
(propertize title 'face face))))
|
||||
|
||||
;; Global toggles
|
||||
(with-no-warnings
|
||||
(pretty-hydra-define toggles-hydra (:title (pretty-hydra-title "Toggles" 'faicon "nf-fa-toggle_on")
|
||||
:color pink :quit-key ("q" "C-g"))
|
||||
("Basic"
|
||||
(("n" (cond ((fboundp 'display-line-numbers-mode)
|
||||
(display-line-numbers-mode (if display-line-numbers-mode -1 1)))
|
||||
((fboundp 'gblobal-linum-mode)
|
||||
(global-linum-mode (if global-linum-mode -1 1))))
|
||||
"line number"
|
||||
:toggle (or (bound-and-true-p display-line-numbers-mode)
|
||||
(bound-and-true-p global-linum-mode)))
|
||||
("a" global-aggressive-indent-mode "aggressive indent" :toggle t)
|
||||
("d" global-hungry-delete-mode "hungry delete" :toggle t)
|
||||
("e" electric-pair-mode "electric pair" :toggle t)
|
||||
("s" prettify-symbols-mode "pretty symbol" :toggle t)
|
||||
("h" display-time-mode "time" :toggle t)
|
||||
("i" indent-bars-mode "indent bars" :toggle t))
|
||||
"Highlight"
|
||||
(("l" global-hl-line-mode "line" :toggle t)
|
||||
("p" show-paren-mode "brackets pairs" :toggle t)
|
||||
("r" rainbow-delimiters-mode "rainbow brackets" :toggle t)
|
||||
("w" global-display-fill-column-indicator-mode "fill column indicator" :toggle t)
|
||||
("t" global-hl-todo-mode "todo" :toggle t))
|
||||
"Program"
|
||||
(("f" flymake-mode "flymake" :toggle t)
|
||||
("c" flyspell-mode "spell check" :toggle t)
|
||||
("u" subword-mode "subword" :toggle t)
|
||||
("v" global-diff-hl-mode "gutter" :toggle t)
|
||||
("V" diff-hl-flydiff-mode "live gutter" :toggle t)
|
||||
("M" diff-hl-margin-mode "margin gutter" :toggle t)
|
||||
("D" diff-hl-dired-mode "dired gutter" :toggle t))
|
||||
))))
|
||||
|
||||
(provide 'init-utils)
|
||||
;;; init-utils.el ends here
|
@ -15,7 +15,6 @@
|
||||
|
||||
;; Resolver diferencias entre 2 archivos o versiones del mismo.
|
||||
(use-package ediff
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
(setq ediff-diff-options "")
|
||||
@ -23,48 +22,84 @@
|
||||
(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
|
||||
;; Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
|
||||
(use-package diff-hl
|
||||
:custom (diff-hl-draw-borders nil)
|
||||
:autoload diff-hl-flydiff-mode
|
||||
:custom-face
|
||||
(diff-hl-change ((t (:inherit custom-changed :foreground unspecified :background unspecified))))
|
||||
(diff-hl-insert ((t (:inherit diff-added :background unspecified))))
|
||||
(diff-hl-delete ((t (:inherit diff-removed :background unspecified))))
|
||||
:bind (:map diff-hl-command-map
|
||||
("SPC" . diff-hl-mark-hunk))
|
||||
:hook ((elpaca-after-init . global-diff-hl-mode)
|
||||
(elpaca-after-init . global-diff-hl-show-hunk-mouse-mode)
|
||||
(dired-mode . diff-hl-dired-mode))
|
||||
: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))
|
||||
)
|
||||
;; Highlight on-the-fly
|
||||
(diff-hl-flydiff-mode 1)
|
||||
|
||||
;; Set fringe style
|
||||
(setq-default fringes-outside-margins t)
|
||||
|
||||
(with-no-warnings
|
||||
(unless (display-graphic-p)
|
||||
;; Fall back to the display margin since the fringe is unavailable in tty
|
||||
(diff-hl-margin-mode 1)
|
||||
;; Avoid restoring `diff-hl-margin-mode'
|
||||
(with-eval-after-load 'desktop
|
||||
(add-to-list 'desktop-minor-mode-table
|
||||
'(diff-hl-margin-mode nil))))
|
||||
|
||||
;; Integration with magit
|
||||
(with-eval-after-load 'magit
|
||||
(add-hook 'magit-pre-refresh-hook #'diff-hl-magit-pre-refresh)
|
||||
(add-hook 'magit-post-refresh-hook #'diff-hl-magit-post-refresh))))
|
||||
|
||||
;; Visitar rápidamente viejas versiones de un archivo rápidamente
|
||||
(use-package git-timemachine
|
||||
:defer t)
|
||||
:custom-face
|
||||
(git-timemachine-minibuffer-author-face ((t (:inherit success :foreground unspecified))))
|
||||
(git-timemachine-minibuffer-detail-face ((t (:inherit warning :foreground unspecified))))
|
||||
:bind (:map vc-prefix-map
|
||||
("t" . git-timemachine))
|
||||
:hook ((git-timemachine-mode . (lambda ()
|
||||
"Improve `git-timemachine' buffers."
|
||||
;; Display different colors in mode-line
|
||||
(if (facep 'mode-line-active)
|
||||
(face-remap-add-relative 'mode-line-active 'custom-state)
|
||||
(face-remap-add-relative 'mode-line 'custom-state))
|
||||
|
||||
;; Highlight symbols in elisp
|
||||
(and (derived-mode-p 'emacs-lisp-mode)
|
||||
(fboundp 'highlight-defined-mode)
|
||||
(highlight-defined-mode t))
|
||||
|
||||
;; Display line numbers
|
||||
(and (derived-mode-p 'prog-mode 'yaml-mode)
|
||||
(fboundp 'display-line-numbers-mode)
|
||||
(display-line-numbers-mode t))))
|
||||
(before-revert . (lambda ()
|
||||
(when (bound-and-true-p git-timemachine-mode)
|
||||
(user-error "Cannot revert the timemachine buffer"))))))
|
||||
|
||||
;; Generador automatizado de archivos de licencia
|
||||
(use-package license-templates
|
||||
:defer t)
|
||||
(use-package license-templates)
|
||||
|
||||
;; Magia para git
|
||||
(use-package magit
|
||||
:defer t)
|
||||
(use-package magit)
|
||||
|
||||
;; Todolist en magit de todos los archivos del projecto.
|
||||
(use-package magit-todos
|
||||
:defer t
|
||||
:config (magit-todos-mode 1))
|
||||
:after magit-status
|
||||
:commands magit-todos-mode
|
||||
:init
|
||||
(setq magit-todos-nice (if (executable-find "nice") t nil))
|
||||
(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)
|
||||
@ -96,14 +131,11 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
|
||||
("q" nil "cancel" :color blue))
|
||||
)
|
||||
|
||||
(use-package transient
|
||||
:defer t)
|
||||
(use-package transient)
|
||||
|
||||
;; 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))
|
||||
:bind (("C-c C-v" . vc-msg-show))
|
||||
)
|
||||
|
||||
|
||||
|
@ -9,8 +9,7 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(use-package go-mode
|
||||
:defer t)
|
||||
(use-package go-mode)
|
||||
|
||||
(provide 'lang-go)
|
||||
;;; lang-go.el ends here
|
||||
|
@ -10,7 +10,6 @@
|
||||
;;; Code:
|
||||
|
||||
(use-package web-mode
|
||||
:defer t
|
||||
:config
|
||||
(setq web-mode-markup-indent-offset 2
|
||||
web-mode-css-indent-offset 2
|
||||
@ -21,15 +20,12 @@
|
||||
)
|
||||
|
||||
(use-package css-mode
|
||||
:defer t
|
||||
:ensure nil
|
||||
:config
|
||||
(setq css-indent-offset 2))
|
||||
|
||||
(use-package auto-rename-tag
|
||||
:ensure (:host github :repo "jcs-elpa/auto-rename-tag")
|
||||
:defer t
|
||||
)
|
||||
:ensure (:host github :repo "jcs-elpa/auto-rename-tag"))
|
||||
|
||||
(provide 'lang-html)
|
||||
;;; lang-html.el ends here
|
||||
|
@ -10,7 +10,6 @@
|
||||
;;; Code:
|
||||
|
||||
(use-package js
|
||||
:defer t
|
||||
:ensure nil
|
||||
:mode
|
||||
("\\.js$" . js-mode)
|
||||
@ -22,8 +21,6 @@
|
||||
|
||||
;; json-mode
|
||||
(use-package json-mode
|
||||
:defer t
|
||||
:ensure t
|
||||
:mode
|
||||
("\\.json$" . json-mode)
|
||||
:config
|
||||
|
@ -10,16 +10,10 @@
|
||||
;;; Code:
|
||||
|
||||
(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)
|
||||
|
||||
;; (use-package php-mode
|
||||
;; :defer t
|
||||
;; :ensure t)
|
||||
(use-package php-mode)
|
||||
|
||||
(use-package php-doc-block
|
||||
:after php-ts-mode
|
||||
|
@ -10,8 +10,6 @@
|
||||
;;; Code:
|
||||
|
||||
(use-package rust-mode
|
||||
:defer t
|
||||
:ensure t
|
||||
:init
|
||||
(setq rust-mode-treesitter-derive t)
|
||||
:config
|
||||
|
@ -20,23 +20,29 @@
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
;; Disable GC during init
|
||||
(put 'gc-cons-percentage 'original-value-before-init gc-cons-percentage)
|
||||
(put 'gc-cons-percentage 'value-during-init 0.6)
|
||||
(defun restore-gc-cons-percentage-after-init ()
|
||||
"Restaura el garbaje collection luego de iniciar."
|
||||
(let ((expected-value (get 'gc-cons-percentage 'value-during-init))
|
||||
(value-to-restore (get 'gc-cons-percentage 'original-value-before-init)))
|
||||
(when (and value-to-restore (equal gc-cons-percentage expected-value))
|
||||
(message "Setting `gc-cons-percentage' back to starting value %s" value-to-restore)
|
||||
(setq gc-cons-percentage value-to-restore))))
|
||||
(add-hook 'after-init-hook #'restore-gc-cons-percentage-after-init)
|
||||
(setq gc-cons-percentage (get 'gc-cons-percentage 'value-during-init))
|
||||
;; Defer garbage collection further back in the startup process
|
||||
(setq gc-cons-threshold most-positive-fixnum)
|
||||
|
||||
;; Color de fondo similar al theme para evitar que se vea blanco al iniciar
|
||||
;; (add-to-list 'default-frame-alist '(background-color . "#282a36"))
|
||||
;; Prevent unwanted runtime compilation for gccemacs (native-comp) users;
|
||||
;; packages are compiled ahead-of-time when they are installed and site files
|
||||
;; are compiled when gccemacs is installed.
|
||||
(setq native-comp-deferred-compilation nil ;; obsolete since 29.1
|
||||
native-comp-jit-compilation nil)
|
||||
|
||||
;; Permitir solo la búsqueda de archivos a cargar en la config en case sensitive.
|
||||
;; 'use-package' is builtin since 29.
|
||||
;; It must be set before loading 'use-package'.
|
||||
(setq use-package-enable-imenu-support t)
|
||||
|
||||
;; In noninteractive sessions, prioritize non-byte-compiled source files to
|
||||
;; prevent the use of stale byte-code. Otherwise, it saves us a little IO time
|
||||
;; to skip the mtime checks on every *.elc file.
|
||||
(setq load-prefer-newer noninteractive)
|
||||
|
||||
;; Explicitly set the prefered coding systems to avoid annoying prompt
|
||||
;; from emacs (especially on Microsoft Windows)
|
||||
(prefer-coding-system 'utf-8)
|
||||
|
||||
;; Permitir solo la búsqueda de archivos a cargar en la carpeta config case sensitive.
|
||||
(setq auto-mode-case-fold nil)
|
||||
|
||||
;; Definimos que la shell por defecto será bash
|
||||
@ -45,6 +51,12 @@
|
||||
;; 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.
|
||||
(push '(vertical-scroll-bars) default-frame-alist)
|
||||
(when (featurep 'ns)
|
||||
(push '(ns-transparent-titlebar . t) default-frame-alist))
|
||||
|
||||
;; Prevent flash of unstyled mode line
|
||||
(setq mode-line-format nil)
|
||||
|
||||
;; Iniciar emacs maximizado
|
||||
;; (add-hook 'window-setup-hook 'toggle-frame-maximized t) ; Hacerlo mediante window-setup-hook (se maximiza al terminar de cargar la ventana)
|
||||
|
40
init.el
40
init.el
@ -9,21 +9,47 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Cargar configuraciones
|
||||
;; Optimize Garbage Collection for Startup
|
||||
(setq gc-cons-threshold most-positive-fixnum)
|
||||
|
||||
(add-to-list 'load-path (concat user-emacs-directory "configs"))
|
||||
;; Optimize `auto-mode-alist`
|
||||
(setq auto-mode-case-fold nil)
|
||||
|
||||
(unless (or (daemonp) noninteractive init-file-debug)
|
||||
;; Temporarily suppress file-handler processing to speed up startup
|
||||
(let ((default-handlers file-name-handler-alist))
|
||||
(setq file-name-handler-alist nil)
|
||||
;; Recover handlers after startup
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
(setq file-name-handler-alist
|
||||
(delete-dups (append file-name-handler-alist default-handlers))))
|
||||
101)))
|
||||
|
||||
;; Función para añadir 'config' a la ruta de carga código elisp de emacs
|
||||
(defun update-load-path (&rest _)
|
||||
"Update the `load-path` to prioritize personal configurations."
|
||||
(push (expand-file-name "configs" user-emacs-directory) load-path))
|
||||
|
||||
;; Nos aseguramos de que ejecute 'update-load-path' antes de 'package-initialize'
|
||||
(advice-add #'package-initialize :after #'update-load-path)
|
||||
|
||||
;; Ahora lo corremos implícitamente
|
||||
(update-load-path)
|
||||
|
||||
;; Paquetes base
|
||||
(require 'init-package)
|
||||
(require 'init-base)
|
||||
(require 'init-utils)
|
||||
(require 'init-ui)
|
||||
(require 'init-editor)
|
||||
(require 'init-highlight)
|
||||
(require 'init-theme)
|
||||
(require 'init-packages)
|
||||
(require 'init-functions)
|
||||
(require 'init-ai)
|
||||
(require 'init-vc)
|
||||
(require 'init-org)
|
||||
(require 'init-eglot)
|
||||
(require 'init-corfu)
|
||||
;; (require 'init-ctags)
|
||||
(require 'init-lsp)
|
||||
(require 'init-completion)
|
||||
(require 'init-minibuffer)
|
||||
;; (require 'init-evil)
|
||||
(require 'init-keys)
|
||||
|
@ -41,7 +41,6 @@ Como ayuda lo más que puedo dar es que en las distros basadas en Debian puedes
|
||||
|
||||
Normalmente no es usual el tener dependencias reales para que emacs funcione, pero para el funcionamiendo adecuado y sin errores, lo mejor es tener instalado:
|
||||
|
||||
- El font de firacode
|
||||
- cmake
|
||||
- libvterm
|
||||
|
||||
@ -53,7 +52,7 @@ Finalmente, recomiendo instalar [[https://github.com/blahgeek/emacs-lsp-booster]
|
||||
|
||||
* Atajos de teclas personalizados
|
||||
|
||||
Tengo varios atajos reconfigurados, por lo que recomiento revisar primero que nada el archivo [[./configs/init-keys.el][init-keys.el]] el resto de configuraciones está principalmente en los archivos [[./configs/init-minibuffer.el][init-minibuffer.el]] e [[./configs/init-packages.el][init-packages.el]], dudo que las uses todas y yo mismo no las uso, por lo que con el tiempo las voy eliminando y a veces agrego alguna extra. Con que revises el primer archivo y sepas que =consult-project= está en =C-x p= ya estás servido.
|
||||
Tengo varios atajos reconfigurados, por lo que recomiento revisar primero que nada el archivo [[./configs/init-keys.el][init-keys.el]] el resto de configuraciones está principalmente en los archivos [[./configs/init-minibuffer.el][init-minibuffer.el]] e [[file:configs/init-editor.el][init-editor.el]], dudo que las uses todas y yo mismo no las uso, por lo que con el tiempo las voy eliminando y a veces agrego alguna extra. Con que revises el primer archivo y sepas que =consult-project= está en =C-x p= ya estás servido.
|
||||
|
||||
* Contacto
|
||||
|
||||
|
Reference in New Issue
Block a user