Compare commits

..

42 Commits

Author SHA1 Message Date
kj
eb14dff0cd Add macher package 2025-09-08 10:24:01 -03:00
kj
58bb81edeb enable global subword mode by default. 2025-09-08 09:45:54 -03:00
kj
f689d2afe1 disable automatic PHP CS Fixer on save 2025-09-08 09:21:24 -03:00
kj
ed547bce34 add LanguageTool package for spell and grammar checking 2025-09-08 09:20:38 -03:00
kj
bf2bf01252 Change gptel conversation prefixes and remove my custom directives 2025-09-08 09:17:58 -03:00
kj
6c39aee1d0 feat(ai): Integrate gptel-magit
Integrates `gptel-magit` to provide AI assistance directly within
Magit. Disables `gptel-include-reasoning` as a temporary workaround
for an upstream issue (ragnard/gptel-magit#8).
2025-09-08 09:16:13 -03:00
kj
d1ddd81282 Add default config for php-cs-fixer and a hook to run it on save. 2025-09-05 20:47:34 -03:00
kj
96b0ccf056 Add custom config file. 2025-09-05 14:17:37 -03:00
kj
7289832288 Add php-cs-fixer package. 2025-09-04 10:14:54 -03:00
kj
03ee657182 Disable flymake in favor of flycheck. 2025-09-04 10:13:43 -03:00
kj
0b6c2058ed Refactor and add methods for filename insert and copy. 2025-09-04 10:13:03 -03:00
kj
d50d5228cf Add bwtest abbrev. 2025-09-01 15:24:54 -03:00
kj
b0ebfce668 Add new window/frame related shortcuts. 2025-09-01 15:21:50 -03:00
kj
99c6b012e5 Remove hook for ediff-quit. 2025-09-01 15:20:55 -03:00
kj
5ee6db55e0 Remove copilot toggle.
It is easy to remember in order to run it on M-x.
2025-09-01 12:43:25 -03:00
kj
709ca7fe27 Improvements to autocompletion with eglot.
Add a function to toggle autocompletion and improve the
competion-at-point-functions when eglot is rinning using cape-capf-super.
2025-09-01 12:35:10 -03:00
kj
a6b197b6a4 Add copilot toggle to hydra Toggles. 2025-09-01 11:56:03 -03:00
kj
021e19fb3c Add copilot package.
It is disabled by default but can be enabled if necessary.
2025-09-01 11:53:00 -03:00
kj
56141976e9 Add composer, phpunit and psysh 2025-08-30 11:24:19 -03:00
kj
7c4fea3b60 Add function to sort lines by length. 2025-08-29 18:09:21 -03:00
kj
b7168fd349 Change read-this-file to autofill with the current filename. 2025-08-29 18:06:53 -03:00
kj
87dc0ab99a Use intelephense as the php lsp. 2025-08-28 15:10:36 -03:00
kj
9b7635e69e Add string-inflection package. 2025-08-28 14:55:40 -03:00
kj
cadc7a3a7c Allow resize dired-sidebar. 2025-08-28 14:14:13 -03:00
kj
80e693caba Enable magit diff word granularity. 2025-08-26 16:15:54 -03:00
kj
1f31bf736b Add functions+shortcuts to insert the filename into the buffer. 2025-08-26 15:26:00 -03:00
kj
5b6f53fe4f Add "git blamer" into "Toggles" hydra menu. 2025-08-26 13:35:54 -03:00
kj
04f64eda5e Add blamer package
Actually there is vc-msg, vc-anotate, vc-region-history, etc. that do similar
things, but i will add this also.
2025-08-26 13:25:36 -03:00
kj
8f4e9f9fb8 Fix: always delete trailing whitespaces at save. 2025-08-20 15:04:48 -03:00
kj
5ffc4df914 Remove posframe package and other related.
It is more fancy but sometimes is buggy for me and I like mor the normal way of
emacs that shows all at the bottom.
2025-08-13 02:12:08 -03:00
kj
9727ed4949 Improve devdocs config and re-enable it. 2025-08-07 23:07:48 -03:00
kj
fac74ab714 Disable editorconfig and devdocs.
I barely need that. I will enable it when I need it.
2025-08-07 21:40:34 -03:00
kj
ecbb0e7fe9 Simplify the config for eldoc-box. 2025-08-07 09:28:32 -03:00
kj
fb3747f81d Add sql interactive config. 2025-08-06 23:30:58 -03:00
kj
c11add9cab Add corg package. 2025-08-06 23:28:58 -03:00
kj
aa024c234c Enable SQL Babel in ORG mode. 2025-08-06 20:12:11 -03:00
kj
236311a98d Enable init-prog. 2025-08-05 17:06:15 -03:00
kj
cb6ac8aa7c Remove duplicated package rg. 2025-08-05 17:05:53 -03:00
kj
7fc4f9ec7d Reduce devdocs keybinding to one. 2025-08-05 17:04:34 -03:00
kj
45d9a4927a Remove packages that are not needed now. 2025-08-05 17:01:57 -03:00
kj
d2496a736a Add necessary the "provide". 2025-08-05 17:01:06 -03:00
kj
9b62080f21 Remove unnecesarry git-gutter package related function. 2025-08-05 16:59:44 -03:00
17 changed files with 292 additions and 260 deletions

1
.gitignore vendored
View File

@ -36,3 +36,4 @@ workspace/
/intelephense/
/auto-save-list/
/*.eld
/.custom.el

View File

@ -1,4 +1,4 @@
;;-*-coding: utf-8;-*-
;; -*- coding: utf-8; lexical-binding: t -*-
(define-abbrev-table 'mhtml-mode-abbrev-table
'(
("doc" "<!DOCTYPE html>
@ -14,6 +14,34 @@
("doctype" "<!DOCTYPE html>" nil :count 0)
))
(define-abbrev-table 'php-ts-mode-abbrev-table
'(
("bwtest" "use Tests\\TestCase;
class Test extends TestCase
{
/**
* @group
* @group
* @test
*/
public function Service()
{
/**
* Preparing
*/
/**
* Actions
*/
/**
* Asserts
*/
}
}" nil :count 6)
))
(define-abbrev-table 'web-mode-abbrev-table
'(
("doc" "<!DOCTYPE html>
@ -25,7 +53,7 @@
</head>
<body>
</body>
</html>" nil :count 9)
("doctype" "<!DOCTYPE html>" nil :count 1)
</html>" nil :count 10)
("doctype" "<!DOCTYPE html>" nil :count 2)
))

View File

@ -5,7 +5,7 @@
;;; Commentary:
;; Esta configuración para Inteligencia artifical en emacs, principalmente para el uso de chats.
;; Configuración para Inteligencia artifical en Emacs.
;;; Code:
@ -24,22 +24,33 @@
;; "llava:latest"))
gptel-default-mode 'org-mode
gptel-prompt-prefix-alist
'((markdown-mode . "# ")
(org-mode . "* ")
(text-mode . "# "))
'((markdown-mode . "# User\n\n")
(org-mode . "* User\n\n")
(text-mode . "# User\n\n"))
gptel-response-prefix-alist
'((markdown-mode . "# AI\n\n")
(org-mode . "* AI\n\n")
(text-mode . "# AI\n\n"))
gptel-directives
'((default . "Eres un LLM que vive dentro de Emacs. Responde de manera concisa.")
(programming . "Eres un LLM y un programador profesional cuidadoso. Provee el código y solo el código como output sin ningún texto adicional, prompt o nota.")
(programming_tutor . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y realiza sugerencias concisas en español para mejorarlo.")
(programming_explainer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español de manera concisa, su funcionamiento.")
(programming_describer . "Eres un LLM y un programador profesional cuidadoso. Revisa el siguiente código y explica en español su funcionamiento línea a línea.")
(writing . "Eres un LLM y un asistente de escritura. Responde de manera concisa.")
(grammarly . "You are a large language model and professional philologist. Improve grammar and spelling.")
(chat . "Eres un LLM y un compañero de conversación. Responde de manera concisa.")
(traductor . "Eres un traductor profesional. Traduce a español tomando en cuenta los posibles tecnicismos y nombres que no deberían traducirse.")
)
)
'((default . "You are a large language model living in Emacs and a helpful assistant. Respond concisely in Spanish."))
)
(setopt gptel-include-reasoning nil)) ;; Mantener hasta resolver: https://github.com/ragnard/gptel-magit/issues/8
(use-package copilot
:bind (("M-<return>" . copilot-complete)
:map copilot-completion-map
("C-g" . 'copilot-clear-overlay)
("C-<return>" . 'copilot-accept-completion)
("C-<tab>" . 'copilot-accept-completion-by-word)))
(use-package gptel-magit
:ensure t
:hook (magit-mode . gptel-magit-install))
(use-package macher
:ensure (:host github :repo "kmontag/macher")
:custom
(macher-action-buffer-ui 'org))
(provide 'init-ai)
;;; init-ai.el ends here

View File

@ -20,6 +20,9 @@
(setq package-native-compile t)
))
;; Custom configs file
(setq custom-file (concat user-emacs-directory ".custom.el"))
;; Garbage Collector Magic Hack
(use-package gcmh
:diminish
@ -67,6 +70,7 @@
(use-package simple
:ensure nil
:hook ((after-init . size-indication-mode)
(before-save . delete-trailing-whitespace)
(text-mode . visual-line-mode))
:init
(setq column-number-mode t
@ -78,9 +82,8 @@
;; 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)
)
(setq show-trailing-whitespace t))
;; UTF-8 please
(when (fboundp 'set-charset-priority)
@ -126,30 +129,5 @@
(async-bytecomp-package-mode 1)
(dired-async-mode 1))
;; 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)
(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)))))
(provide 'init-base)
;;; init-base.el ends here

View File

@ -66,20 +66,30 @@
))
)
;; Set de funciones de para las sugerencias de corfu.
(use-package cape
:ensure (:host github :repo "minad/cape")
:after corfu
:hook (eglot-managed-mode . (lambda()
(setq completion-at-point-functions
(list (cape-capf-super
#'eglot-completion-at-point
#'cape-abbrev
#'cape-dabbrev
#'cape-history
#'cape-dict
#'cape-file
#'cape-keyword)))))
: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.
;; (add-to-list 'completion-at-point-functions #'cape-tex) ;; Completar Latex (caracteres unicode).
(add-to-list 'completion-at-point-functions #'cape-dict) ;; Completar desde un diccionario (por defecto toma el de linux que está en /usr/share/dict/words).
(add-to-list 'completion-at-point-functions #'cape-dabbrev) ;; Completar desde otras la palabras del buffer.
(add-to-list 'completion-at-point-functions #'cape-abbrev) ;; Completar desde una abreviaciónes configuradas con add-global-abbrev (añadir abreviación global) o add-mode-abbrev (abreviación para el modo actual).
(add-to-list 'completion-at-point-functions #'cape-history) ;; Completar desde el historial de altocompletado
(add-to-list 'completion-at-point-functions #'cape-dict) ;; Completar desde un diccionario (por defecto toma el de linux que está en /usr/share/dict/words).
(add-to-list 'completion-at-point-functions #'cape-file) ;; Completar rutas de archivos.
(add-to-list 'completion-at-point-functions #'cape-keyword) ;; Completar desde keyword del lenguaje.

View File

@ -71,8 +71,7 @@
: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
@ -149,7 +148,19 @@
(truncate-lines . nil)
(which-func-mode . nil))))
;; Generador de texto aleatorio para placeholding
(use-package lorem-ipsum)
;; Corrector ortográfico y de sintaxis avanzado
(use-package languagetool
:ensure t
:defer t
:commands (languagetool-check
languagetool-clear-suggestions
languagetool-correct-at-point
languagetool-correct-buffer
languagetool-set-language
languagetool-server-mode))
(provide 'init-editor)
;;; init-editor.el ends here

View File

@ -43,14 +43,6 @@
(insert current-line)
(decf n)))))
;; Mostrar y ocultar el diff de la línea de git-gutter
(defun git-gutter:toggle-popup-hunk ()
"Toggle 'git-gutter' hunk window."
(interactive)
(if (and (get-buffer "*git-gutter:diff*") (window-live-p (git-gutter:popup-buffer-window)))
(delete-window (git-gutter:popup-buffer-window))
(git-gutter:popup-hunk)))
;; Obtener el nombre del proyecto desde project.el
(defun kj/project-name (&optional project)
"Return the name for PROJECT.
@ -96,7 +88,9 @@ If PROJECT is not specified, assume current project root."
;; 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: ")
(interactive (list (read-string "New name: "
(file-name-nondirectory
(buffer-file-name)))))
(let ((name (buffer-name))
(filename (buffer-file-name)))
(unless filename
@ -108,7 +102,7 @@ If PROJECT is not specified, assume current project root."
(rename-buffer new-name))))
;; Copiar el nombre del archivo actual
(defun copy-file-name ()
(defun copy-filename ()
"Copy the current buffer file name to the clipboard."
(interactive)
(let ((filename (if (equal major-mode 'dired-mode)
@ -120,6 +114,18 @@ If PROJECT is not specified, assume current project root."
(message "Copied '%s'" filename))
(warn "Current buffer is not attached to a file!"))))
(defun copy-basename ()
"Copy the current buffer basename to the clipboard."
(interactive)
(let ((filename (if (equal major-mode 'dired-mode)
default-directory
(file-name-nondirectory (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."
@ -133,5 +139,37 @@ If PROJECT is not specified, assume current project root."
"Check if font with FONT-NAME is available."
(find-font (font-spec :name font-name)))
(defun insert-filename ()
"Insert the full path file name into the current buffer."
(interactive)
(insert (buffer-file-name)))
(defun insert-basename ()
"Insert the filename (without path) into the current buffer."
(interactive)
(insert (file-name-nondirectory (buffer-file-name))))
(defun sort-lines-by-length (reverse beg end)
"Sort lines by length."
(interactive "P\nr")
(save-excursion
(save-restriction
(narrow-to-region beg end)
(goto-char (point-min))
(let ;; To make `end-of-line' and etc. to ignore fields.
((inhibit-field-text-motion t))
(sort-subr reverse 'forward-line 'end-of-line nil nil
(lambda (l1 l2)
(apply #'< (mapcar (lambda (range) (- (cdr range) (car range)))
(list l1 l2)))))))))
(defun corfu-auto-toggle()
"Toggle corfu autocomplete."
(interactive)
(global-corfu-mode 0)
(setq corfu-auto (not corfu-auto))
(global-corfu-mode 1)
)
(provide 'init-functions)
;;; init-functions.el ends here.

View File

@ -30,13 +30,16 @@
(global-set-key (kbd "C-x mp") 'php-ts-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-[" 'backward-paragraph)
(define-key global-map "\M-]" 'forward-paragraph)
;; Insertar nombre del archivo
(global-set-key (kbd "C-c ff") 'insert-filename)
(global-set-key (kbd "C-c fb") 'insert-basename)
(global-set-key (kbd "C-c fcf") 'copy-filename)
(global-set-key (kbd "C-c fcb") 'copy-basename)
;; Deactivar el abrir *messages* al cliquear en el minibuffer
(define-key minibuffer-inactive-mode-map [mouse-1] #'ignore)

View File

@ -39,13 +39,12 @@
(eglot-ensure))))
((markdown-mode yaml-mode yaml-ts-mode) . eglot-ensure))
:init
(setq read-process-output-max (* 1024 1024)) ; 1MB
(setq read-process-output-max (* 4 1024 1024)) ; 4MB
(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
@ -86,17 +85,25 @@
;; Revisar por errores en el código
(use-package flymake
:ensure nil
:hook (prog-mode . (lambda ()
(unless (derived-mode-p 'makefile-mode)
(flymake-mode))))
:config
;; :hook (prog-mode . (lambda ()
;; (unless (derived-mode-p 'makefile-mode)
;; (flymake-mode))))
:init
(remove-hook 'flymake-diagnostic-functions 'flymake-proc-legacy-flymake)
)
;; Mostar los errores de flymake en un popup-tip
(use-package flymake-diagnostic-at-point
:after flymake
:hook (flymake-mode . flymake-diagnostic-at-point-mode))
(use-package flycheck
:init (global-flycheck-mode)
:config
(setq flycheck-indication-mode nil
flycheck-phpcs-standard "PSR12"))
(use-package flycheck-eglot
:after flycheck
:custom
(flycheck-eglot-exclusive nil)
:init
(global-flycheck-eglot-mode 1))
(provide 'init-lsp)
;;; init-lsp.el ends here

View File

@ -121,15 +121,5 @@
completion-ignore-case t)
)
;; Mover el minibufer de vertico al centro de la pantalla.
(use-package vertico-posframe
: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

View File

@ -78,6 +78,7 @@
(rust . t)
(translate . t)
(shell . t)
(sql . t)
)))
;; No solicitar confirmación para evaluar
(setq org-confirm-babel-evaluate nil)
@ -247,6 +248,10 @@
;; Org babel para traducciones (mediante google translate)
(use-package ob-translate)
;; Autocompletado para los headers de los bloques
(use-package corg
:ensure (:host github :repo "isamert/corg.el"))
;; Org mode en modo presentación
(use-package org-present
:after (org)

View File

@ -10,28 +10,13 @@
;;; 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))))
:defer t
:bind ("<f1>" . eldoc-box-help-at-point))
;; Cambiar fácilmente entre naming conventions (camel, pascal, kebab, snake, etc.)
(use-package string-inflection)
;; Code folding indicators using Tree-sitter
(use-package treesit-fold-indicators
@ -54,9 +39,9 @@
xref-show-xrefs-function #'xref-show-definitions-completing-read))
;; Code styles
(use-package editorconfig
:diminish
:hook (elpaca-after-init . editorconfig-mode))
;; (use-package editorconfig
;; :diminish
;; :hook (elpaca-after-init . editorconfig-mode))
;; Correr el código desde el buffer de emacs
(use-package quickrun
@ -118,38 +103,14 @@
: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))
("M-<f1>" . 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
@ -160,7 +121,6 @@ Install the doc if it's not installed."
(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))))
@ -168,23 +128,19 @@ Install the doc if it's not installed."
;; ---------------------------------------------------------------------------
;; 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
(use-package sql
:ensure nil
:hook (sql-interactive-mode . toggle-truncate-lines)
:config
(setq sql-mysql-login-params (append sql-mysql-login-params '(port))) ;; request port also
(setq sql-user "root") ;; user por defecto
(setq sql-server "127.0.0.1") ;; host por defecto
(setq sql-port 3306) ;; puerto por defecto para mysql
)
;; Major mode para archivos CSV
(use-package csv-mode
;; :hook ((csv-mode . csv-align-mode)
@ -225,4 +181,10 @@ Install the doc if it's not installed."
:hook ((js-base-mode css-mode sgml-mode web-mode) . prettier-mode)
:init (setq prettier-pre-warm 'none))
(use-package subword
:ensure nil
:init
(global-subword-mode 1))
(provide 'init-prog)
;;; init-prog.el ends here

View File

@ -26,6 +26,7 @@
:commands (dired-sidebar-toggle-sidebar)
:config
(setq dired-sidebar-theme 'nerd
dired-sidebar-window-fixed nil
;; dired-sidebar-should-follow-file t
;; dired-sidebar-follow-file-idle-delay 0.5
))
@ -84,22 +85,6 @@
: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

View File

@ -29,35 +29,8 @@
: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
@ -81,9 +54,20 @@
;; Restaurar el estado de los frames
(use-package winner
:ensure nil
:bind (("s-u" . winner-undo)
("s-U" . winner-redo))
:config
(winner-mode))
;; Moverme entre frames
(use-package windmove
:ensure nil
:bind (("s-K" . windmove-up)
("s-J" . windmove-down)
("s-H" . windmove-left)
("s-L" . windmove-right)
("s-O" . other-window)))
;; Terminal
(use-package vterm
:config
@ -159,23 +143,7 @@
: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
@ -223,12 +191,13 @@
"Highlight"
(("l" global-hl-line-mode "line" :toggle t)
("p" show-paren-mode "brackets pairs" :toggle t)
("b" global-blamer-mode "Git blamer" :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)
(("F" flymake-mode "flymake" :toggle t)
("f" 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)

View File

@ -13,6 +13,11 @@
;;; Code:
;; Mostrar el commit de la línea actual
(use-package blamer
:ensure t
:bind ("C-c i" . blamer-show-posframe-commit-info))
;; Resolver diferencias entre 2 archivos o versiones del mismo.
(use-package ediff
:ensure nil
@ -87,7 +92,9 @@
(use-package license-templates)
;; Magia para git
(use-package magit)
(use-package magit
:config
(setq magit-diff-refine-hunk 'all))
;; Todolist en magit de todos los archivos del projecto.
(use-package magit-todos

View File

@ -21,5 +21,31 @@
:ensure (:host github :repo "moskalyovd/emacs-php-doc-block")
)
;; Consola REPL para php. Similar a "php -a" pero con extras
(use-package psysh)
;; Composer
(use-package composer)
;; PHPUnit
(use-package phpunit)
(use-package php-cs-fixer
:custom
(php-cs-fixer-rules-level-part-options (list (json-encode '(("@PSR12" . t)
("ordered_imports" . (("sort_algorithm" . "alpha")))
("concat_space" . (("spacing" . "one")))
("whitespace_after_comma_in_array" . t)
("align_multiline_comment" . t)
("no_unused_imports" . t)
("phpdoc_align" . t)
("phpdoc_indent" . t)
("no_useless_return" . t)
("return_assignment" . t)
("trailing_comma_in_multiline" . t)))))
(php-cs-fixer-rules-fixer-part-options '())
;; :hook (before-save . php-cs-fixer-before-save)
)
(provide 'lang-php)
;;; lang-php.el ends here

View File

@ -43,6 +43,7 @@
(require 'init-utils)
(require 'init-ui)
(require 'init-editor)
(require 'init-prog)
(require 'init-highlight)
(require 'init-theme)
(require 'init-ai)