Compare commits
	
		
			46 Commits
		
	
	
		
			evil
			...
			6dbf0e9746
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6dbf0e9746 | |||
| f8b5174274 | |||
| 553694530e | |||
| 42ff8f3cbd | |||
| 8fa7bc9ed7 | |||
| f38ca8a4c9 | |||
| a7045d3b30 | |||
| 7ee9bd4492 | |||
| fb890c4ceb | |||
| 98174ef392 | |||
| 2baff92bf0 | |||
| 52a7058da6 | |||
| 290243835f | |||
| f75b9eda35 | |||
| e98d12e7e8 | |||
| 0411b624da | |||
| 97ec0558dd | |||
| cfb3279f52 | |||
| 1ade083d25 | |||
| 18a43a404c | |||
| f654c2889b | |||
| 28e1e3d4b1 | |||
| 935cb9e70b | |||
| 97c7ea774b | |||
| 87c61ac6e9 | |||
| e7750197c9 | |||
| 19750d202d | |||
| 9166630294 | |||
| d1c00e505c | |||
| 9cddf59c1d | |||
| 0aed1d01a2 | |||
| d39a050a04 | |||
| 38b36468f8 | |||
| aced36ad35 | |||
| 7b0757f128 | |||
| 0522d5085f | |||
| 0e48c679ef | |||
| fe386ce0d8 | |||
| 25e4d3ec05 | |||
| 52f8c664e6 | |||
| b4e1c001ab | |||
| 1678f7b283 | |||
| 5536818ec3 | |||
| 9125667700 | |||
| 6598b63079 | |||
| b7bd232410 | 
							
								
								
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,17 @@
 | 
				
			|||||||
elpa
 | 
					elpa
 | 
				
			||||||
transient
 | 
					transient
 | 
				
			||||||
eln-cache
 | 
					eln-cache
 | 
				
			||||||
private/.*
 | 
					private/
 | 
				
			||||||
private/cache
 | 
					 | 
				
			||||||
bookmarks
 | 
					bookmarks
 | 
				
			||||||
 | 
					.lsp-session*
 | 
				
			||||||
 | 
					projectile-bookmarks.eld
 | 
				
			||||||
 | 
					.org-id-locations
 | 
				
			||||||
 | 
					org-roam.db
 | 
				
			||||||
 | 
					lsp-cache/
 | 
				
			||||||
 | 
					.cache/
 | 
				
			||||||
 | 
					url/
 | 
				
			||||||
 | 
					straight/
 | 
				
			||||||
 | 
					amx-items
 | 
				
			||||||
 | 
					projects
 | 
				
			||||||
 | 
					speed-type/
 | 
				
			||||||
 | 
					var/
 | 
				
			||||||
							
								
								
									
										350
									
								
								configs/base-company.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										350
									
								
								configs/base-company.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,350 @@
 | 
				
			|||||||
 | 
					;;; base-company.el --- Autocompletado con company-mode  -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package company
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :defines (company-dabbrev-ignore-case company-dabbrev-downcase)
 | 
				
			||||||
 | 
					  :custom-face
 | 
				
			||||||
 | 
					  (company-tooltip-annotation ((t (:inherit completions-annotations :foreground nil))))
 | 
				
			||||||
 | 
					  (company-box-selection ((t (:inherit company-tooltip :weight semibold :extend t))))
 | 
				
			||||||
 | 
					  :hook (after-init . global-company-mode)
 | 
				
			||||||
 | 
					  :bind (
 | 
				
			||||||
 | 
					         :map company-active-map
 | 
				
			||||||
 | 
					         ("<tab>" . company-indent-or-complete-common) ; Completar con tab como en la terminal de linux
 | 
				
			||||||
 | 
					         ("<escape>" . company-abort) ; Cerrar company con ESC
 | 
				
			||||||
 | 
					         )
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					  (setq company-tooltip-align-annotations t
 | 
				
			||||||
 | 
					        company-tooltip-limit 12
 | 
				
			||||||
 | 
					        company-idle-delay 0               ; mostrar autocompletado lo más rápido posible
 | 
				
			||||||
 | 
					        company-echo-delay (if (display-graphic-p) nil 0)
 | 
				
			||||||
 | 
					        company-minimum-prefix-length 1    ; mostrar autocompletado desde que se coloca la primera letra.
 | 
				
			||||||
 | 
					        company-icon-margin 3
 | 
				
			||||||
 | 
					        company-require-match nil
 | 
				
			||||||
 | 
					        company-dabbrev-ignore-case nil
 | 
				
			||||||
 | 
					        company-dabbrev-downcase nil      ; autocompletado case-sensitive.
 | 
				
			||||||
 | 
					        company-global-modes '(not erc-mode message-mode help-mode
 | 
				
			||||||
 | 
					                                   gud-mode eshell-mode shell-mode)
 | 
				
			||||||
 | 
					        company-backends '((company-capf :with company-yasnippet)
 | 
				
			||||||
 | 
					                           (company-dabbrev-code company-keywords company-files)
 | 
				
			||||||
 | 
					                           company-dabbrev))
 | 
				
			||||||
 | 
					   :config
 | 
				
			||||||
 | 
					   (with-no-warnings
 | 
				
			||||||
 | 
					    ;; Company anywhere
 | 
				
			||||||
 | 
					    ;; @see https://github.com/zk-phi/company-anywhere
 | 
				
			||||||
 | 
					    (defun company-anywhere-after-finish (completion)
 | 
				
			||||||
 | 
					      (when (and (stringp completion)
 | 
				
			||||||
 | 
					                 (looking-at "\\(?:\\sw\\|\\s_\\)+")
 | 
				
			||||||
 | 
					                 (save-match-data
 | 
				
			||||||
 | 
					                   (string-match (regexp-quote (match-string 0)) completion)))
 | 
				
			||||||
 | 
					        (delete-region (match-beginning 0) (match-end 0))))
 | 
				
			||||||
 | 
					    (add-hook 'company-after-completion-hook 'company-anywhere-after-finish)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun company-anywhere-grab-word (_)
 | 
				
			||||||
 | 
					      (buffer-substring (point) (save-excursion (skip-syntax-backward "w") (point))))
 | 
				
			||||||
 | 
					    (advice-add 'company-grab-word :around 'company-anywhere-grab-word)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun company-anywhere-grab-symbol (_)
 | 
				
			||||||
 | 
					      (buffer-substring (point) (save-excursion (skip-syntax-backward "w_") (point))))
 | 
				
			||||||
 | 
					    (advice-add 'company-grab-symbol :around 'company-anywhere-grab-symbol)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun company-anywhere-dabbrev-prefix (_)
 | 
				
			||||||
 | 
					      (company-grab-line (format "\\(?:^\\| \\)[^ ]*?\\(\\(?:%s\\)*\\)" company-dabbrev-char-regexp) 1))
 | 
				
			||||||
 | 
					    (advice-add 'company-dabbrev--prefix :around 'company-anywhere-dabbrev-prefix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun company-anywhere-capf (fn command &rest args)
 | 
				
			||||||
 | 
					      (if (eq command 'prefix)
 | 
				
			||||||
 | 
					          (let ((res (company--capf-data)))
 | 
				
			||||||
 | 
					            (when res
 | 
				
			||||||
 | 
					              (let ((length (plist-get (nthcdr 4 res) :company-prefix-length))
 | 
				
			||||||
 | 
					                    (prefix (buffer-substring-no-properties (nth 1 res) (point))))
 | 
				
			||||||
 | 
					                (cond
 | 
				
			||||||
 | 
					                 (length (cons prefix length))
 | 
				
			||||||
 | 
					                 (t prefix)))))
 | 
				
			||||||
 | 
					        (apply fn command args)))
 | 
				
			||||||
 | 
					    (advice-add 'company-capf :around 'company-anywhere-capf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun company-anywhere-preview-show-at-point (pos completion)
 | 
				
			||||||
 | 
					      (when (and (save-excursion
 | 
				
			||||||
 | 
					                   (goto-char pos)
 | 
				
			||||||
 | 
					                   (looking-at "\\(?:\\sw\\|\\s_\\)+"))
 | 
				
			||||||
 | 
					                 (save-match-data
 | 
				
			||||||
 | 
					                   (string-match (regexp-quote (match-string 0)) completion)))
 | 
				
			||||||
 | 
					        (move-overlay company-preview-overlay (overlay-start company-preview-overlay) (match-end 0))
 | 
				
			||||||
 | 
					        (let ((after-string (overlay-get company-preview-overlay 'after-string)))
 | 
				
			||||||
 | 
					          (when after-string
 | 
				
			||||||
 | 
					            (overlay-put company-preview-overlay 'display after-string)
 | 
				
			||||||
 | 
					            (overlay-put company-preview-overlay 'after-string nil)))))
 | 
				
			||||||
 | 
					    (advice-add 'company-preview-show-at-point :after 'company-anywhere-preview-show-at-point)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; `yasnippet' integration
 | 
				
			||||||
 | 
					    (with-eval-after-load 'yasnippet
 | 
				
			||||||
 | 
					      (defun my-company-yasnippet ()
 | 
				
			||||||
 | 
					        "Hide the current completeions and show snippets."
 | 
				
			||||||
 | 
					        (interactive)
 | 
				
			||||||
 | 
					        (company-cancel)
 | 
				
			||||||
 | 
					        (call-interactively 'company-yasnippet))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (defun company-backend-with-yas (backend)
 | 
				
			||||||
 | 
					        "Add `yasnippet' to company backend."
 | 
				
			||||||
 | 
					        (if (and (listp backend) (member 'company-yasnippet backend))
 | 
				
			||||||
 | 
					            backend
 | 
				
			||||||
 | 
					          (append (if (consp backend) backend (list backend))
 | 
				
			||||||
 | 
					                  '(:with company-yasnippet))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (defun my-company-enbale-yas (&rest _)
 | 
				
			||||||
 | 
					        "Enable `yasnippet' in `company'."
 | 
				
			||||||
 | 
					        (setq company-backends (mapcar #'company-backend-with-yas company-backends)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (defun my-lsp-fix-company-capf ()
 | 
				
			||||||
 | 
					        "Remove redundant `comapny-capf'."
 | 
				
			||||||
 | 
					        (setq company-backends
 | 
				
			||||||
 | 
					              (remove 'company-backends (remq 'company-capf company-backends))))
 | 
				
			||||||
 | 
					      (advice-add #'lsp-completion--enable :after #'my-lsp-fix-company-capf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (defun my-company-yasnippet-disable-inline (fn cmd &optional arg &rest _ignore)
 | 
				
			||||||
 | 
					        "Enable yasnippet but disable it inline."
 | 
				
			||||||
 | 
					        (if (eq cmd  'prefix)
 | 
				
			||||||
 | 
					            (when-let ((prefix (funcall fn 'prefix)))
 | 
				
			||||||
 | 
					              (unless (memq (char-before (- (point) (length prefix)))
 | 
				
			||||||
 | 
					                            '(?. ?< ?> ?\( ?\) ?\[ ?{ ?} ?\" ?' ?`))
 | 
				
			||||||
 | 
					                prefix))
 | 
				
			||||||
 | 
					          (progn
 | 
				
			||||||
 | 
					            (when (and (bound-and-true-p lsp-mode)
 | 
				
			||||||
 | 
					                       arg (not (get-text-property 0 'yas-annotation-patch arg)))
 | 
				
			||||||
 | 
					              (let* ((name (get-text-property 0 'yas-annotation arg))
 | 
				
			||||||
 | 
					                     (snip (format "%s (Snippet)" name))
 | 
				
			||||||
 | 
					                     (len (length arg)))
 | 
				
			||||||
 | 
					                (put-text-property 0 len 'yas-annotation snip arg)
 | 
				
			||||||
 | 
					                (put-text-property 0 len 'yas-annotation-patch t arg)))
 | 
				
			||||||
 | 
					            (funcall fn cmd arg))))
 | 
				
			||||||
 | 
					      (advice-add #'company-yasnippet :around #'my-company-yasnippet-disable-inline))
 | 
				
			||||||
 | 
					    ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Better sorting
 | 
				
			||||||
 | 
					(use-package prescient
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :commands prescient-persist-mode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package company-prescient
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . company-prescient-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Hacer que el autocompletado se vea más bonito con íconos
 | 
				
			||||||
 | 
					(use-package company-box
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :diminish
 | 
				
			||||||
 | 
					  :defines company-box-icons-all-the-icons
 | 
				
			||||||
 | 
					  :hook (company-mode . company-box-mode)
 | 
				
			||||||
 | 
					  :init (setq company-box-backends-colors nil
 | 
				
			||||||
 | 
					              company-box-doc-delay 0.1
 | 
				
			||||||
 | 
					              company-box-scrollbar 'right)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (with-no-warnings
 | 
				
			||||||
 | 
					    ;; Prettify icons
 | 
				
			||||||
 | 
					    (defun my-company-box-icons--elisp (candidate)
 | 
				
			||||||
 | 
					      (when (or (derived-mode-p 'emacs-lisp-mode) (derived-mode-p 'lisp-mode))
 | 
				
			||||||
 | 
					        (let ((sym (intern candidate)))
 | 
				
			||||||
 | 
					          (cond ((fboundp sym) 'Function)
 | 
				
			||||||
 | 
					                ((featurep sym) 'Module)
 | 
				
			||||||
 | 
					                ((facep sym) 'Color)
 | 
				
			||||||
 | 
					                ((boundp sym) 'Variable)
 | 
				
			||||||
 | 
					                ((symbolp sym) 'Text)
 | 
				
			||||||
 | 
					                (t . nil)))))
 | 
				
			||||||
 | 
					    (advice-add #'company-box-icons--elisp :override #'my-company-box-icons--elisp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; Display borders and optimize performance
 | 
				
			||||||
 | 
					    (defun my-company-box--display (string on-update)
 | 
				
			||||||
 | 
					      "Display the completions."
 | 
				
			||||||
 | 
					      (company-box--render-buffer string on-update)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (let ((frame (company-box--get-frame))
 | 
				
			||||||
 | 
					            (border-color (face-foreground 'font-lock-comment-face nil t)))
 | 
				
			||||||
 | 
					        (unless frame
 | 
				
			||||||
 | 
					          (setq frame (company-box--make-frame))
 | 
				
			||||||
 | 
					          (company-box--set-frame frame))
 | 
				
			||||||
 | 
					        (company-box--compute-frame-position frame)
 | 
				
			||||||
 | 
					        (company-box--move-selection t)
 | 
				
			||||||
 | 
					        (company-box--update-frame-position frame)
 | 
				
			||||||
 | 
					        (unless (frame-visible-p frame)
 | 
				
			||||||
 | 
					          (make-frame-visible frame))
 | 
				
			||||||
 | 
					        (company-box--update-scrollbar frame t)
 | 
				
			||||||
 | 
					        (set-face-background 'internal-border border-color frame)
 | 
				
			||||||
 | 
					        (when (facep 'child-frame-border)
 | 
				
			||||||
 | 
					          (set-face-background 'child-frame-border border-color frame)))
 | 
				
			||||||
 | 
					      (with-current-buffer (company-box--get-buffer)
 | 
				
			||||||
 | 
					        (company-box--maybe-move-number (or company-box--last-start 1))))
 | 
				
			||||||
 | 
					    (advice-add #'company-box--display :override #'my-company-box--display)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (setq company-box-doc-frame-parameters '((vertical-scroll-bars . nil)
 | 
				
			||||||
 | 
					                                             (horizontal-scroll-bars . nil)
 | 
				
			||||||
 | 
					                                             (internal-border-width . 1)
 | 
				
			||||||
 | 
					                                             (left-fringe . 8)
 | 
				
			||||||
 | 
					                                             (right-fringe . 8)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-company-box-doc--make-buffer (object)
 | 
				
			||||||
 | 
					      (let* ((buffer-list-update-hook nil)
 | 
				
			||||||
 | 
					             (inhibit-modification-hooks t)
 | 
				
			||||||
 | 
					             (string (cond ((stringp object) object)
 | 
				
			||||||
 | 
					                           ((bufferp object) (with-current-buffer object (buffer-string))))))
 | 
				
			||||||
 | 
					        (when (and string (> (length (string-trim string)) 0))
 | 
				
			||||||
 | 
					          (with-current-buffer (company-box--get-buffer "doc")
 | 
				
			||||||
 | 
					            (erase-buffer)
 | 
				
			||||||
 | 
					            (insert (propertize "\n" 'face '(:height 0.5)))
 | 
				
			||||||
 | 
					            (insert string)
 | 
				
			||||||
 | 
					            (insert (propertize "\n\n" 'face '(:height 0.5)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ;; Handle hr lines of markdown
 | 
				
			||||||
 | 
					            ;; @see `lsp-ui-doc--handle-hr-lines'
 | 
				
			||||||
 | 
					            (let (bolp next before after)
 | 
				
			||||||
 | 
					              (goto-char 1)
 | 
				
			||||||
 | 
					              (while (setq next (next-single-property-change (or next 1) 'markdown-hr))
 | 
				
			||||||
 | 
					                (when (get-text-property next 'markdown-hr)
 | 
				
			||||||
 | 
					                  (goto-char next)
 | 
				
			||||||
 | 
					                  (setq bolp (bolp)
 | 
				
			||||||
 | 
					                        before (char-before))
 | 
				
			||||||
 | 
					                  (delete-region (point) (save-excursion (forward-visible-line 1) (point)))
 | 
				
			||||||
 | 
					                  (setq after (char-after (1+ (point))))
 | 
				
			||||||
 | 
					                  (insert
 | 
				
			||||||
 | 
					                   (concat
 | 
				
			||||||
 | 
					                    (and bolp (not (equal before ?\n)) (propertize "\n" 'face '(:height 0.5)))
 | 
				
			||||||
 | 
					                    (propertize "\n" 'face '(:height 0.5))
 | 
				
			||||||
 | 
					                    (propertize " "
 | 
				
			||||||
 | 
					                                'display '(space :height (1))
 | 
				
			||||||
 | 
					                                'company-box-doc--replace-hr t
 | 
				
			||||||
 | 
					                                'face `(:background ,(face-foreground 'font-lock-comment-face)))
 | 
				
			||||||
 | 
					                    (propertize " " 'display '(space :height (1)))
 | 
				
			||||||
 | 
					                    (and (not (equal after ?\n)) (propertize " \n" 'face '(:height 0.5))))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            (setq mode-line-format nil
 | 
				
			||||||
 | 
					                  display-line-numbers nil
 | 
				
			||||||
 | 
					                  header-line-format nil
 | 
				
			||||||
 | 
					                  show-trailing-whitespace nil
 | 
				
			||||||
 | 
					                  cursor-in-non-selected-windows nil)
 | 
				
			||||||
 | 
					            (current-buffer)))))
 | 
				
			||||||
 | 
					    (advice-add #'company-box-doc--make-buffer :override #'my-company-box-doc--make-buffer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; Display the border and fix the markdown header properties
 | 
				
			||||||
 | 
					    (defun my-company-box-doc--show (selection frame)
 | 
				
			||||||
 | 
					      (cl-letf (((symbol-function 'completing-read) #'company-box-completing-read)
 | 
				
			||||||
 | 
					                (window-configuration-change-hook nil)
 | 
				
			||||||
 | 
					                (inhibit-redisplay t)
 | 
				
			||||||
 | 
					                (display-buffer-alist nil)
 | 
				
			||||||
 | 
					                (buffer-list-update-hook nil))
 | 
				
			||||||
 | 
					        (-when-let* ((valid-state (and (eq (selected-frame) frame)
 | 
				
			||||||
 | 
					                                       company-box--bottom
 | 
				
			||||||
 | 
					                                       company-selection
 | 
				
			||||||
 | 
					                                       (company-box--get-frame)
 | 
				
			||||||
 | 
					                                       (frame-visible-p (company-box--get-frame))))
 | 
				
			||||||
 | 
					                     (candidate (nth selection company-candidates))
 | 
				
			||||||
 | 
					                     (doc (or (company-call-backend 'quickhelp-string candidate)
 | 
				
			||||||
 | 
					                              (company-box-doc--fetch-doc-buffer candidate)))
 | 
				
			||||||
 | 
					                     (doc (company-box-doc--make-buffer doc)))
 | 
				
			||||||
 | 
					          (let ((frame (frame-local-getq company-box-doc-frame))
 | 
				
			||||||
 | 
					                (border-color (face-foreground 'font-lock-comment-face nil t)))
 | 
				
			||||||
 | 
					            (unless (frame-live-p frame)
 | 
				
			||||||
 | 
					              (setq frame (company-box-doc--make-frame doc))
 | 
				
			||||||
 | 
					              (frame-local-setq company-box-doc-frame frame))
 | 
				
			||||||
 | 
					            (set-face-background 'internal-border border-color frame)
 | 
				
			||||||
 | 
					            (when (facep 'child-frame-border)
 | 
				
			||||||
 | 
					              (set-face-background 'child-frame-border border-color frame))
 | 
				
			||||||
 | 
					            (company-box-doc--set-frame-position frame)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ;; Fix hr props. @see `lsp-ui-doc--fix-hr-props'
 | 
				
			||||||
 | 
					            (with-current-buffer (company-box--get-buffer "doc")
 | 
				
			||||||
 | 
					              (let (next)
 | 
				
			||||||
 | 
					                (while (setq next (next-single-property-change (or next 1) 'company-box-doc--replace-hr))
 | 
				
			||||||
 | 
					                  (when (get-text-property next 'company-box-doc--replace-hr)
 | 
				
			||||||
 | 
					                    (put-text-property next (1+ next) 'display
 | 
				
			||||||
 | 
					                                       '(space :align-to (- right-fringe 1) :height (1)))
 | 
				
			||||||
 | 
					                    (put-text-property (1+ next) (+ next 2) 'display
 | 
				
			||||||
 | 
					                                       '(space :align-to right-fringe :height (1)))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            (unless (frame-visible-p frame)
 | 
				
			||||||
 | 
					              (make-frame-visible frame))))))
 | 
				
			||||||
 | 
					    (advice-add #'company-box-doc--show :override #'my-company-box-doc--show)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-company-box-doc--set-frame-position (frame)
 | 
				
			||||||
 | 
					      (-let* ((frame-resize-pixelwise t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              (box-frame (company-box--get-frame))
 | 
				
			||||||
 | 
					              (box-position (frame-position box-frame))
 | 
				
			||||||
 | 
					              (box-width (frame-pixel-width box-frame))
 | 
				
			||||||
 | 
					              (box-height (frame-pixel-height box-frame))
 | 
				
			||||||
 | 
					              (box-border-width (frame-border-width box-frame))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              (window (frame-root-window frame))
 | 
				
			||||||
 | 
					              ((text-width . text-height) (window-text-pixel-size window nil nil
 | 
				
			||||||
 | 
					                                                                  (/ (frame-pixel-width) 2)
 | 
				
			||||||
 | 
					                                                                  (/ (frame-pixel-height) 2)))
 | 
				
			||||||
 | 
					              (border-width (or (alist-get 'internal-border-width company-box-doc-frame-parameters) 0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              (x (- (+ (car box-position) box-width) border-width))
 | 
				
			||||||
 | 
					              (space-right (- (frame-pixel-width) x))
 | 
				
			||||||
 | 
					              (space-left (car box-position))
 | 
				
			||||||
 | 
					              (fringe-left (or (alist-get 'left-fringe company-box-doc-frame-parameters) 0))
 | 
				
			||||||
 | 
					              (fringe-right (or (alist-get 'right-fringe company-box-doc-frame-parameters) 0))
 | 
				
			||||||
 | 
					              (width (+ text-width border-width fringe-left fringe-right))
 | 
				
			||||||
 | 
					              (x (if (> width space-right)
 | 
				
			||||||
 | 
					                     (if (> space-left width)
 | 
				
			||||||
 | 
					                         (- space-left width)
 | 
				
			||||||
 | 
					                       space-left)
 | 
				
			||||||
 | 
					                   x))
 | 
				
			||||||
 | 
					              (y (cdr box-position))
 | 
				
			||||||
 | 
					              (bottom (+ company-box--bottom (frame-border-width)))
 | 
				
			||||||
 | 
					              (height (+ text-height (* 2 border-width)))
 | 
				
			||||||
 | 
					              (y (cond ((= x space-left)
 | 
				
			||||||
 | 
					                        (if (> (+ y box-height height) bottom)
 | 
				
			||||||
 | 
					                            (+ (- y height) border-width)
 | 
				
			||||||
 | 
					                          (- (+ y box-height) border-width)))
 | 
				
			||||||
 | 
					                       ((> (+ y height) bottom)
 | 
				
			||||||
 | 
					                        (- (+ y box-height) height))
 | 
				
			||||||
 | 
					                       (t y))))
 | 
				
			||||||
 | 
					        (set-frame-position frame (max x 0) (max y 0))
 | 
				
			||||||
 | 
					        (set-frame-size frame text-width text-height t)))
 | 
				
			||||||
 | 
					    (advice-add #'company-box-doc--set-frame-position :override #'my-company-box-doc--set-frame-position)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (when (icon-displayable-p)
 | 
				
			||||||
 | 
					      (setq company-box-icons-all-the-icons
 | 
				
			||||||
 | 
					            `((Unknown . ,(all-the-icons-material "find_in_page" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Text . ,(all-the-icons-faicon "text-width" :height 1.0 :v-adjust -0.02))
 | 
				
			||||||
 | 
					              (Method . ,(all-the-icons-faicon "cube" :height 1.0 :v-adjust -0.02 :face 'all-the-icons-purple))
 | 
				
			||||||
 | 
					              (Function . ,(all-the-icons-faicon "cube" :height 1.0 :v-adjust -0.02 :face 'all-the-icons-purple))
 | 
				
			||||||
 | 
					              (Constructor . ,(all-the-icons-faicon "cube" :height 1.0 :v-adjust -0.02 :face 'all-the-icons-purple))
 | 
				
			||||||
 | 
					              (Field . ,(all-the-icons-octicon "tag" :height 1.1 :v-adjust 0 :face 'all-the-icons-lblue))
 | 
				
			||||||
 | 
					              (Variable . ,(all-the-icons-octicon "tag" :height 1.1 :v-adjust 0 :face 'all-the-icons-lblue))
 | 
				
			||||||
 | 
					              (Class . ,(all-the-icons-material "settings_input_component" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-orange))
 | 
				
			||||||
 | 
					              (Interface . ,(all-the-icons-material "share" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-lblue))
 | 
				
			||||||
 | 
					              (Module . ,(all-the-icons-material "view_module" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-lblue))
 | 
				
			||||||
 | 
					              (Property . ,(all-the-icons-faicon "wrench" :height 1.0 :v-adjust -0.02))
 | 
				
			||||||
 | 
					              (Unit . ,(all-the-icons-material "settings_system_daydream" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Value . ,(all-the-icons-material "format_align_right" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-lblue))
 | 
				
			||||||
 | 
					              (Enum . ,(all-the-icons-material "storage" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-orange))
 | 
				
			||||||
 | 
					              (Keyword . ,(all-the-icons-material "filter_center_focus" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Snippet . ,(all-the-icons-material "format_align_center" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Color . ,(all-the-icons-material "palette" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (File . ,(all-the-icons-faicon "file-o" :height 1.0 :v-adjust -0.02))
 | 
				
			||||||
 | 
					              (Reference . ,(all-the-icons-material "collections_bookmark" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Folder . ,(all-the-icons-faicon "folder-open" :height 1.0 :v-adjust -0.02))
 | 
				
			||||||
 | 
					              (EnumMember . ,(all-the-icons-material "format_align_right" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (Constant . ,(all-the-icons-faicon "square-o" :height 1.0 :v-adjust -0.1))
 | 
				
			||||||
 | 
					              (Struct . ,(all-the-icons-material "settings_input_component" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-orange))
 | 
				
			||||||
 | 
					              (Event . ,(all-the-icons-octicon "zap" :height 1.0 :v-adjust 0 :face 'all-the-icons-orange))
 | 
				
			||||||
 | 
					              (Operator . ,(all-the-icons-material "control_point" :height 1.0 :v-adjust -0.2))
 | 
				
			||||||
 | 
					              (TypeParameter . ,(all-the-icons-faicon "arrows" :height 1.0 :v-adjust -0.02))
 | 
				
			||||||
 | 
					              (Template . ,(all-the-icons-material "format_align_left" :height 1.0 :v-adjust -0.2)))
 | 
				
			||||||
 | 
					            company-box-icons-alist 'company-box-icons-all-the-icons))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'base-company)
 | 
				
			||||||
 | 
					;;; base-company.el ends here
 | 
				
			||||||
							
								
								
									
										66
									
								
								configs/base-ctags.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								configs/base-ctags.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					;;; base-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:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Ctags IDE on the True Editor
 | 
				
			||||||
 | 
					;; @see https://github.com/universal-ctags/citre#quick-start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package citre
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :diminish
 | 
				
			||||||
 | 
					  :bind (("C-x c j" . citre-jump+)
 | 
				
			||||||
 | 
					         ("C-x c k" . 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
 | 
				
			||||||
 | 
					  (require 'citre-config)
 | 
				
			||||||
 | 
					  (setq citre-auto-enable-citre-mode-modes '(prog-mode))
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (with-no-warnings
 | 
				
			||||||
 | 
					    (with-eval-after-load 'projectile
 | 
				
			||||||
 | 
					      (setq citre-project-root-function #'projectile-project-root))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; 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 (pcase centaur-lsp
 | 
				
			||||||
 | 
					                          ('lsp-mode
 | 
				
			||||||
 | 
					                           (and (fboundp #'lsp-completion-at-point)
 | 
				
			||||||
 | 
					                                (lsp-completion-at-point)))
 | 
				
			||||||
 | 
					                          ('eglot
 | 
				
			||||||
 | 
					                           (and (fboundp #'eglot-completion-at-point)
 | 
				
			||||||
 | 
					                                (eglot-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 'base-ctags)
 | 
				
			||||||
 | 
					;;; base-ctags.el ends here
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; base-extensions.el --- Extenciones/paquetes instalados y su configuración
 | 
					;;; base-extensions.el --- Extensiones/paquetes instalados y su configuración 	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -7,468 +7,193 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(setq evil-want-keybinding nil)
 | 
					 | 
				
			||||||
;; use-package - No necesita presentación
 | 
					 | 
				
			||||||
(use-package use-package
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (setq use-package-always-ensure t) ; auto-instalar extenciones que no lo estén
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Auto-actualizar los paquetes
 | 
					 | 
				
			||||||
(use-package auto-package-update
 | 
					 | 
				
			||||||
  :custom
 | 
					 | 
				
			||||||
  (auto-package-update-interval 7)
 | 
					 | 
				
			||||||
  (auto-package-update-prompt-before-update t)
 | 
					 | 
				
			||||||
  (auto-package-update-hide-results t)
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (auto-package-update-maybe)
 | 
					 | 
				
			||||||
  (auto-package-update-at-time "06:00")
 | 
					 | 
				
			||||||
  :init
 | 
					 | 
				
			||||||
  (setq
 | 
					 | 
				
			||||||
   auto-package-update-last-update-day-filename
 | 
					 | 
				
			||||||
   (expand-file-name ".last-package-update-day" private-dir)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Iconos principalmente para ser usados por neotree
 | 
					;; Iconos principalmente para ser usados por neotree
 | 
				
			||||||
(use-package all-the-icons :defer t)
 | 
					(use-package all-the-icons
 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Terminal
 | 
					 | 
				
			||||||
(use-package vterm :ensure t :defer t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Multiple vterm
 | 
					 | 
				
			||||||
(use-package multi-vterm :ensure t :defer t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Highlight en los números.
 | 
					 | 
				
			||||||
(use-package highlight-numbers
 | 
					 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Reemplazar mejorado
 | 
				
			||||||
 | 
					(use-package anzu
 | 
				
			||||||
 | 
					  :defer
 | 
				
			||||||
  :ensure t
 | 
					  :ensure t
 | 
				
			||||||
  :hook
 | 
					  :straight t
 | 
				
			||||||
  (prog-mode . highlight-numbers-mode))
 | 
					  :hook (after-init . global-anzu-mode)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (global-set-key [remap query-replace] 'anzu-query-replace)
 | 
				
			||||||
 | 
					  (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Un bonito y sencillo panel de inicio
 | 
				
			||||||
 | 
					(use-package dashboard
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . dashboard-setup-startup-hook)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq dashboard-set-file-icons t)
 | 
				
			||||||
 | 
					  (setq dashboard-set-heading-icons t)
 | 
				
			||||||
 | 
					  (setq dashboard-set-file-icons t)
 | 
				
			||||||
 | 
					  (setq dashboard-startup-banner
 | 
				
			||||||
 | 
					        (expand-file-name "duck-small.png" user-emacs-directory))
 | 
				
			||||||
 | 
					  (setq dashboard-items '(
 | 
				
			||||||
 | 
					                          (agenda . 10)
 | 
				
			||||||
 | 
					                          ;;(recents . 10)
 | 
				
			||||||
 | 
					                          ))
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Mover líneas o regiones
 | 
					;; Mover líneas o regiones
 | 
				
			||||||
(use-package drag-stuff
 | 
					(use-package drag-stuff
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook
 | 
				
			||||||
 | 
					  (after-init . drag-stuff-global-mode)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (drag-stuff-global-mode 1)
 | 
					 | 
				
			||||||
  (drag-stuff-define-keys))
 | 
					  (drag-stuff-define-keys))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Recentf - Guarda registro de los archivos abiertos recientemente
 | 
					;; La línea bonita esa de abajo
 | 
				
			||||||
(use-package recentf
 | 
					(use-package doom-modeline
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :hook (after-init . doom-modeline-mode)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (setq recentf-save-file
 | 
					  (setq doom-modeline-project-detection 'auto
 | 
				
			||||||
        (recentf-expand-file-name (concat temp-dir "/recentf")))
 | 
					        doom-modeline-buffer-file-name-style 'relative-from-project
 | 
				
			||||||
  (recentf-mode 1))
 | 
					        doom-modeline-major-mode-color-icon t
 | 
				
			||||||
 | 
					        doom-modeline-buffer-modification-icon t
 | 
				
			||||||
 | 
					        doom-modeline-indent-info nil
 | 
				
			||||||
;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
 | 
					        doom-modeline-persp-name t))
 | 
				
			||||||
(use-package saveplace
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (save-place-mode 1)
 | 
					 | 
				
			||||||
  (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places"))))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás)
 | 
					;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás)
 | 
				
			||||||
(use-package emmet-mode
 | 
					(use-package emmet-mode
 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes
 | 
					 | 
				
			||||||
  (add-hook 'html-mode-hook 'emmet-mode)
 | 
					 | 
				
			||||||
  (add-hook 'css-mode-hook  'emmet-mode)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Modo markdown
 | 
					 | 
				
			||||||
(use-package markdown-mode :defer t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
 | 
					 | 
				
			||||||
(use-package git-gutter
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (global-git-gutter-mode +1)                  ; Habilitar git gutter de manera global
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Mejorando el scroll
 | 
					 | 
				
			||||||
(use-package smooth-scrolling
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (smooth-scrolling-mode 1)                    ; Cambia el salto de líneas cuando el cursor llega al final.
 | 
					 | 
				
			||||||
  (setq mouse-wheel-scroll-amount
 | 
					 | 
				
			||||||
        '(8 ((shift) . 1) ((control) . nil)))    ; Cambia el scroll a 8 líneas a la vez, 1 cuando se preciona SHIFT y saltos de página cuando presionas CTRL
 | 
					 | 
				
			||||||
  (setq mouse-wheel-progressive-speed nil)     ; Deshabilita la velocidad progresiva del scroll (mientras más scroll haces, mas rápido va)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Esa línea bonita de abajo del editor que dice cosas xD
 | 
					 | 
				
			||||||
(use-package telephone-line
 | 
					 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
  :custom
 | 
					  :straight t
 | 
				
			||||||
  (telephone-line-primary-left-separator 'telephone-line-cubed-left)
 | 
					  :hook (html-mode . emmet-mode))
 | 
				
			||||||
  (telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left)
 | 
					 | 
				
			||||||
  (telephone-line-primary-right-separator 'telephone-line-cubed-right)
 | 
					 | 
				
			||||||
  (telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right)
 | 
					 | 
				
			||||||
  (telephone-line-evil-use-short-tag t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (setq telephone-line-lhs
 | 
					 | 
				
			||||||
        '((evil   . (telephone-line-evil-tag-segment))
 | 
					 | 
				
			||||||
          (accent . (telephone-line-vc-segment
 | 
					 | 
				
			||||||
                     telephone-line-erc-modified-channels-segment
 | 
					 | 
				
			||||||
                     telephone-line-process-segment))
 | 
					 | 
				
			||||||
          (nil    . (;telephone-line-minor-mode-segment
 | 
					 | 
				
			||||||
                     telephone-line-buffer-segment))))
 | 
					 | 
				
			||||||
  (setq telephone-line-rhs
 | 
					 | 
				
			||||||
        '((nil    . (telephone-line-misc-info-segment))
 | 
					 | 
				
			||||||
          (accent . (telephone-line-major-mode-segment))
 | 
					 | 
				
			||||||
          (evil   . (telephone-line-airline-position-segment))))
 | 
					 | 
				
			||||||
  (telephone-line-mode t)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Hacer uso de Emacs con las ventajas de vim.
 | 
					 | 
				
			||||||
(use-package evil
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :init
 | 
					 | 
				
			||||||
  (evil-mode 1)
 | 
					 | 
				
			||||||
  (setq evil-want-keybinding nil)
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (setq evil-want-integration t)
 | 
					 | 
				
			||||||
  (setq evil-want-keybinding nil)
 | 
					 | 
				
			||||||
  (setq evil-want-C-u-scroll t)
 | 
					 | 
				
			||||||
  (setq evil-want-C-i-jump nil)
 | 
					 | 
				
			||||||
  (setq evil-want-fine-undo t)
 | 
					 | 
				
			||||||
  (setq evil-respect-visual-line-mode t)
 | 
					 | 
				
			||||||
  (setq evil-toggle-key "C-'") ; Cambiar toggle-key cambiar entre evil states y emacs.
 | 
					 | 
				
			||||||
  ;;  (setq evil-default-state 'emacs) ; Modo por defecto en emacs mode
 | 
					 | 
				
			||||||
  (define-key evil-normal-state-map (kbd "g b") 'evil-jump-backward)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Seleccionar todo con C-a en insert mode
 | 
					 | 
				
			||||||
  (evil-global-set-key 'insert (kbd "C-a") 'mark-whole-buffer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; **
 | 
					 | 
				
			||||||
  ;; Atajos personalizados con leader key
 | 
					 | 
				
			||||||
  ;; **
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Definiendo la leader key
 | 
					 | 
				
			||||||
  (evil-set-leader 'normal (kbd "SPC"))
 | 
					 | 
				
			||||||
  (evil-set-leader 'visual (kbd "SPC"))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Atajos para counsel-projectile y switch buffer con leader key
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>b") 'ivy-switch-buffer)
 | 
					 | 
				
			||||||
  (evil-define-key 'visual 'global (kbd "<leader>b") 'ivy-switch-buffer)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>v") 'counsel-projectile)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>cp") 'projectile-switch-project)
 | 
					 | 
				
			||||||
  (evil-define-key 'visual 'global (kbd "<leader>v") 'counsel-projectile)
 | 
					 | 
				
			||||||
  (evil-define-key 'visual 'global (kbd "<leader>cp") 'projectile-switch-project)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>ff") 'counsel-find-file)
 | 
					 | 
				
			||||||
  (evil-define-key 'visual 'global (kbd "<leader>ff") 'counsel-find-file)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Atajos windmove con leader key
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wh") 'windmove-left)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wj") 'windmove-down)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wk") 'windmove-up)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wl") 'windmove-right)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Atajos con leader key para frames
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>0") 'delete-window)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>1") 'delete-other-windows)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>2") 'split-window-below)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>3") 'split-window-right)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>kb") 'kill-buffer)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wb") 'winner-undo)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>wr") 'winner-redo)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Atajos para cambiar entre major modes
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>mh") 'html-mode)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>mj") 'js-mode)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>mp") 'php-mode)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Atajo para abrir vterm
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>tt") 'multi-vterm-dedicated-toggle)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>tf") 'multi-vterm)
 | 
					 | 
				
			||||||
  (evil-define-key 'normal 'global (kbd "<leader>tp") 'multi-vterm-project)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Cambiar el cursor según el estado
 | 
					 | 
				
			||||||
  (setq evil-emacs-state-cursor 'bar)
 | 
					 | 
				
			||||||
  (setq evil-motion-state-cursor 'bar)
 | 
					 | 
				
			||||||
  (setq evil-normal-state-cursor 'box)
 | 
					 | 
				
			||||||
  (setq evil-visual-state-cursor 'box)
 | 
					 | 
				
			||||||
  (setq evil-insert-state-cursor 'bar)
 | 
					 | 
				
			||||||
  (setq evil-replace-state-cursor 'hollow)
 | 
					 | 
				
			||||||
  (setq evil-operator-state-cursor 'hollow)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Establecer modos por defecto en algunos modos
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'shell-mode 'insert)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'vterm-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'term-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'help-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'helm-grep-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'grep-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'dired-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'Buffer-menu-mode 'emacs)
 | 
					 | 
				
			||||||
  (evil-set-initial-state 'wdired-mode 'normal)
 | 
					 | 
				
			||||||
  ;; Por defecto usar emcas mode.
 | 
					 | 
				
			||||||
  ;;(setq evil-default-state 'emacs)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Edición múltiple con evil (Atajos por defecto: C-d y C-D)
 | 
					 | 
				
			||||||
(use-package evil-multiedit
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (evil-multiedit-default-keybinds)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; evil keybinding
 | 
					 | 
				
			||||||
(use-package evil-collection
 | 
					 | 
				
			||||||
  :custom (evil-collection-setup-minibuffer t)
 | 
					 | 
				
			||||||
  :init (evil-collection-init))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Barra lateral de archivos
 | 
					 | 
				
			||||||
(use-package treemacs
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :hook (treemacs-mode . (lambda() (display-line-numbers-mode -1)))
 | 
					 | 
				
			||||||
  :bind ([mouse-1] . treemacs-single-click-expand-action)
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (progn
 | 
					 | 
				
			||||||
    (setq treemacs-collapse-dirs                   (if treemacs-python-executable 3 0)
 | 
					 | 
				
			||||||
          treemacs-deferred-git-apply-delay        0.5
 | 
					 | 
				
			||||||
          treemacs-directory-name-transformer      #'identity
 | 
					 | 
				
			||||||
          treemacs-display-in-side-window          t
 | 
					 | 
				
			||||||
          treemacs-eldoc-display                   'simple
 | 
					 | 
				
			||||||
          treemacs-file-event-delay                5000
 | 
					 | 
				
			||||||
          treemacs-file-extension-regex            treemacs-last-period-regex-value
 | 
					 | 
				
			||||||
          treemacs-file-follow-delay               0.2
 | 
					 | 
				
			||||||
          treemacs-file-name-transformer           #'identity
 | 
					 | 
				
			||||||
          treemacs-follow-after-init               t
 | 
					 | 
				
			||||||
          treemacs-expand-after-init               t
 | 
					 | 
				
			||||||
          treemacs-find-workspace-method           'find-for-file-or-pick-first
 | 
					 | 
				
			||||||
          treemacs-git-command-pipe                ""
 | 
					 | 
				
			||||||
          treemacs-goto-tag-strategy               'refetch-index
 | 
					 | 
				
			||||||
          treemacs-indentation                     2
 | 
					 | 
				
			||||||
          treemacs-indentation-string              " "
 | 
					 | 
				
			||||||
          treemacs-is-never-other-window           nil
 | 
					 | 
				
			||||||
          treemacs-max-git-entries                 5000
 | 
					 | 
				
			||||||
          treemacs-missing-project-action          'ask
 | 
					 | 
				
			||||||
          treemacs-move-forward-on-expand          nil
 | 
					 | 
				
			||||||
          treemacs-no-png-images                   nil
 | 
					 | 
				
			||||||
          treemacs-no-delete-other-windows         t
 | 
					 | 
				
			||||||
          treemacs-project-follow-cleanup          nil
 | 
					 | 
				
			||||||
          treemacs-persist-file                    (expand-file-name "cache/treemacs-persist" private-dir)
 | 
					 | 
				
			||||||
          treemacs-position                        'left
 | 
					 | 
				
			||||||
          treemacs-read-string-input               'from-child-frame
 | 
					 | 
				
			||||||
          treemacs-recenter-distance               0.1
 | 
					 | 
				
			||||||
          treemacs-recenter-after-file-follow      nil
 | 
					 | 
				
			||||||
          treemacs-recenter-after-tag-follow       nil
 | 
					 | 
				
			||||||
          treemacs-recenter-after-project-jump     'always
 | 
					 | 
				
			||||||
          treemacs-recenter-after-project-expand   'on-distance
 | 
					 | 
				
			||||||
          treemacs-litter-directories              '("/node_modules" "/.venv" "/.cask")
 | 
					 | 
				
			||||||
          treemacs-show-cursor                     nil
 | 
					 | 
				
			||||||
          treemacs-show-hidden-files               t
 | 
					 | 
				
			||||||
          treemacs-silent-filewatch                nil
 | 
					 | 
				
			||||||
          treemacs-silent-refresh                  nil
 | 
					 | 
				
			||||||
          treemacs-sorting                         'alphabetic-asc
 | 
					 | 
				
			||||||
          treemacs-select-when-already-in-treemacs 'move-back
 | 
					 | 
				
			||||||
          treemacs-space-between-root-nodes        t
 | 
					 | 
				
			||||||
          treemacs-tag-follow-cleanup              t
 | 
					 | 
				
			||||||
          treemacs-tag-follow-delay                1.5
 | 
					 | 
				
			||||||
          treemacs-text-scale                      nil
 | 
					 | 
				
			||||||
          treemacs-user-mode-line-format           nil
 | 
					 | 
				
			||||||
          treemacs-user-header-line-format         nil
 | 
					 | 
				
			||||||
          treemacs-wide-toggle-width               70
 | 
					 | 
				
			||||||
          treemacs-width                           35
 | 
					 | 
				
			||||||
          treemacs-width-increment                 1
 | 
					 | 
				
			||||||
          treemacs-width-is-initially-locked       t
 | 
					 | 
				
			||||||
          treemacs-workspace-switch-cleanup        nil)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ;; The default width and height of the icons is 22 pixels. If you are
 | 
					 | 
				
			||||||
    ;; using a Hi-DPI display, uncomment this to double the icon size.
 | 
					 | 
				
			||||||
    ;;(treemacs-resize-icons 44)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (treemacs-follow-mode t)
 | 
					 | 
				
			||||||
    (treemacs-filewatch-mode t)
 | 
					 | 
				
			||||||
    (treemacs-fringe-indicator-mode 'always)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (pcase (cons (not (null (executable-find "git")))
 | 
					 | 
				
			||||||
                 (not (null treemacs-python-executable)))
 | 
					 | 
				
			||||||
      (`(t . t)
 | 
					 | 
				
			||||||
       (treemacs-git-mode 'deferred))
 | 
					 | 
				
			||||||
      (`(t . _)
 | 
					 | 
				
			||||||
       (treemacs-git-mode 'simple)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (treemacs-hide-gitignored-files-mode nil))
 | 
					 | 
				
			||||||
  :bind
 | 
					 | 
				
			||||||
  (:map global-map
 | 
					 | 
				
			||||||
        ("M-0"       . treemacs-select-window)
 | 
					 | 
				
			||||||
        ("C-x t 1"   . treemacs-delete-other-windows)
 | 
					 | 
				
			||||||
        ("<f9>"      . treemacs)
 | 
					 | 
				
			||||||
        ("<f8>"      . treemacs-display-current-project-exclusively)
 | 
					 | 
				
			||||||
        ("<f7>"      . treemacs-add-and-display-current-project)
 | 
					 | 
				
			||||||
        ("C-x t d"   . treemacs-select-directory)
 | 
					 | 
				
			||||||
        ("C-x t B"   . treemacs-bookmark)
 | 
					 | 
				
			||||||
        ("C-x t C-t" . treemacs-find-file)
 | 
					 | 
				
			||||||
        ("C-x t M-t" . treemacs-find-tag)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package treemacs-evil
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :after (treemacs evil)
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  ;; Atajos de tecla con leader key de evil-mode.
 | 
					 | 
				
			||||||
  (evil-set-leader 'treemacs (kbd "SPC"))
 | 
					 | 
				
			||||||
  (evil-define-key 'treemacs 'global (kbd "<leader>b") 'ivy-switch-buffer)
 | 
					 | 
				
			||||||
  (evil-define-key 'treemacs 'global (kbd "<leader>v") 'counsel-projectile)
 | 
					 | 
				
			||||||
  (evil-define-key 'treemacs 'global (kbd "<leader>p") 'counsel-projectile)
 | 
					 | 
				
			||||||
  (evil-define-key 'treemacs 'global (kbd "<leader>cp") 'treemacs-projectile)
 | 
					 | 
				
			||||||
  (evil-define-key 'treemacs 'global (kbd "<leader>d") 'treemacs-remove-project-from-workspace))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package treemacs-projectile
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :after (treemacs projectile)
 | 
					 | 
				
			||||||
  :ensure t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package treemacs-icons-dired
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :hook (dired-mode . treemacs-icons-dired-enable-once)
 | 
					 | 
				
			||||||
  :ensure t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :after (treemacs persp-mode) ;;or perspective vs. persp-mode
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :config (treemacs-set-scope-type 'Perspectives))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :after (treemacs)
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :config (treemacs-set-scope-type 'Tabs))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Code Folding
 | 
					 | 
				
			||||||
(use-package origami
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (global-origami-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Automcompletado
 | 
					 | 
				
			||||||
(use-package company
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :bind (:map company-active-map
 | 
					 | 
				
			||||||
              ("<tab>" . company-indent-or-complete-common)) ; autocompletar con tab como se haría en bash-competition en la terminal de linux
 | 
					 | 
				
			||||||
  (:map company-active-map
 | 
					 | 
				
			||||||
        ("<escape>" . company-abort)) ; cerrar las sugerencias de autocompletado precionando escape.
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (global-company-mode)
 | 
					 | 
				
			||||||
  (setq company-dabbrev-downcase nil)    ; autocompletado case-sensitive.
 | 
					 | 
				
			||||||
  (setq company-idle-delay 0)            ; mostrar autocompletado lo más rápido posible
 | 
					 | 
				
			||||||
  (setq company-minimum-prefix-length 1) ; mostrar autocompletado desde que se coloca la primera letra.
 | 
					 | 
				
			||||||
  (setq company-backends '((company-files :with company-yasnippet)
 | 
					 | 
				
			||||||
                                   (company-capf :with company-yasnippet)
 | 
					 | 
				
			||||||
                                   (company-dabbrev-code company-gtags company-etags company-keywords :with company-yasnippet)
 | 
					 | 
				
			||||||
                                   (company-dabbrev :with company-yasnippet)))
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Poner la info acerca del autocompletado del autocompletado mas rápido
 | 
					 | 
				
			||||||
(use-package company-quickhelp
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :custom
 | 
					 | 
				
			||||||
  (company-quickhelp-delay 2)
 | 
					 | 
				
			||||||
  (company-quickhelp-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Hacer que el autocompletado se vea más bonito con íconos
 | 
					 | 
				
			||||||
(use-package company-box
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :hook (company-mode . company-box-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Usar autocompletado con ctags y company
 | 
					 | 
				
			||||||
(use-package company-ctags
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (add-to-list  'company-backends '(company-ctags))
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Snippets
 | 
					 | 
				
			||||||
(use-package yasnippet
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :custom
 | 
					 | 
				
			||||||
  (yas-prompt-functions '(yas-completing-prompt))
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (yas-reload-all)
 | 
					 | 
				
			||||||
  :hook
 | 
					 | 
				
			||||||
  ((prog-mode feature-mode)  . yas-minor-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Restaurar el estado de los frames
 | 
					 | 
				
			||||||
(use-package winner
 | 
					 | 
				
			||||||
  :init
 | 
					 | 
				
			||||||
  (winner-mode 1))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package lsp-mode
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :hook (js-mode . lsp-deferred)
 | 
					 | 
				
			||||||
  :custom
 | 
					 | 
				
			||||||
  (lsp-headerline-breadcrumb-enable nil))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package lsp-ui)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Revisar sintaxis en vivo
 | 
					;; Revisar sintaxis en vivo
 | 
				
			||||||
(use-package flycheck
 | 
					(use-package flycheck
 | 
				
			||||||
  ;; :diminish flycheck-mode
 | 
					  ;; :diminish flycheck-mode
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :hook (after-init . global-flycheck-mode) ; Habilitar flycheck en todos los modos
 | 
					  :hook (after-init . global-flycheck-mode) ; Habilitar flycheck en todos los modos
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Mostrar los errores de flycheck en un pop up
 | 
					;; Mostrar los errores de flycheck en un pop up
 | 
				
			||||||
(use-package flycheck-popup-tip
 | 
					(use-package flycheck-popup-tip
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :hook (flycheck-mode . flycheck-popup-tip-mode))
 | 
					  :hook (flycheck-mode . flycheck-popup-tip-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Un bonito y sencillo panel de inicio
 | 
					;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit.
 | 
				
			||||||
(use-package dashboard
 | 
					(use-package git-gutter
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook
 | 
				
			||||||
 | 
					  (after-init . global-git-gutter-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Highlight en los números.
 | 
				
			||||||
 | 
					;; (use-package highlight-numbers
 | 
				
			||||||
 | 
					;;   :defer t
 | 
				
			||||||
 | 
					;;   :straight t
 | 
				
			||||||
 | 
					;;   :ensure t
 | 
				
			||||||
 | 
					;;   :hook
 | 
				
			||||||
 | 
					;;   (prog-mode . highlight-numbers-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Magia para git
 | 
				
			||||||
 | 
					(use-package magit
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Modo markdown
 | 
				
			||||||
 | 
					(use-package markdown-mode
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Multiple vterm
 | 
				
			||||||
 | 
					(use-package multi-vterm
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind* (("C-x tt" . multi-vterm-dedicated-toggle)
 | 
				
			||||||
 | 
					          ("C-x tf" . multi-vterm)
 | 
				
			||||||
 | 
					          ("C-x tp" . multi-vterm-project)
 | 
				
			||||||
 | 
					          ;;("<tab>" . vterm-send-tab)
 | 
				
			||||||
 | 
					          )
 | 
				
			||||||
 | 
					  :ensure t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Mecanografía
 | 
				
			||||||
 | 
					(use-package speed-type
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :diminish
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (setq dashboard-set-file-icons t)
 | 
					  (setq speed-type-gb-book-list '(46201 66867 66866 66591 57303 49063 59797)
 | 
				
			||||||
  (setq dashboard-startup-banner
 | 
					        speed-type-min-chars 500
 | 
				
			||||||
        (expand-file-name "duck-small.png" user-emacs-directory))
 | 
					        speed-type-max-chars 600))
 | 
				
			||||||
  (setq dashboard-items '(
 | 
					
 | 
				
			||||||
                          ;;(recents . 5)
 | 
					;; Code Folding
 | 
				
			||||||
                          ;;(projects . 5)
 | 
					(use-package origami
 | 
				
			||||||
                          ))
 | 
					  :defer t
 | 
				
			||||||
  (dashboard-setup-startup-hook)
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind (("C-<tab>" . origami-toggle-node)
 | 
				
			||||||
 | 
					         ("C-<iso-lefttab>" . origami-toggle-all-nodes))
 | 
				
			||||||
 | 
					  :hook
 | 
				
			||||||
 | 
					  (after-init . global-origami-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Pomodoro en emacs :D
 | 
				
			||||||
 | 
					(use-package pomidor
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind ("<f12>" . pomidor)
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					;;  (setq alert-default-style 'mode-line)
 | 
				
			||||||
 | 
					  (setq alert-default-style 'libnotify)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (with-eval-after-load 'all-the-icons
 | 
				
			||||||
 | 
					    (setq alert-severity-faces
 | 
				
			||||||
 | 
					          '((urgent   . all-the-icons-red)
 | 
				
			||||||
 | 
					            (high     . all-the-icons-orange)
 | 
				
			||||||
 | 
					            (moderate . all-the-icons-yellow)
 | 
				
			||||||
 | 
					            (normal   . all-the-icons-green)
 | 
				
			||||||
 | 
					            (low      . all-the-icons-blue)
 | 
				
			||||||
 | 
					            (trivial  . all-the-icons-purple))
 | 
				
			||||||
 | 
					          alert-severity-colors
 | 
				
			||||||
 | 
					          `((urgent   . ,(face-foreground 'all-the-icons-red))
 | 
				
			||||||
 | 
					            (high     . ,(face-foreground 'all-the-icons-orange))
 | 
				
			||||||
 | 
					            (moderate . ,(face-foreground 'all-the-icons-yellow))
 | 
				
			||||||
 | 
					            (normal   . ,(face-foreground 'all-the-icons-green))
 | 
				
			||||||
 | 
					            (low      . ,(face-foreground 'all-the-icons-blue))
 | 
				
			||||||
 | 
					            (trivial  . ,(face-foreground 'all-the-icons-purple)))))
 | 
				
			||||||
 | 
					;;  (setq pomidor-sound-tick nil
 | 
				
			||||||
 | 
					;;        pomidor-sound-tack nil) ; Deshabilitar el sonido de reloj de pomidor
 | 
				
			||||||
 | 
					  (setq pomidor-play-sound-file
 | 
				
			||||||
 | 
					      (lambda (file)
 | 
				
			||||||
 | 
					        (start-process "pomidor-play-sound"
 | 
				
			||||||
 | 
					                       nil
 | 
				
			||||||
 | 
					                       "playsound"
 | 
				
			||||||
 | 
					                       file)))
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Autocompletado para shell scripting.
 | 
					;; Paquete para manejo de proyectos
 | 
				
			||||||
(use-package company-shell
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (add-to-list 'company-backends '(company-shell company-shell-env company-fish-shell))
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Autocompletado para el minibuffer (counsel e ivy)
 | 
					 | 
				
			||||||
(use-package counsel
 | 
					 | 
				
			||||||
  :defer t
 | 
					 | 
				
			||||||
  :bind
 | 
					 | 
				
			||||||
  ("M-x" . counsel-M-x)
 | 
					 | 
				
			||||||
  ("C-x C-m" . counsel-M-x)
 | 
					 | 
				
			||||||
  ("C-x C-f" . counsel-find-file)
 | 
					 | 
				
			||||||
  ("C-x c k" . counsel-yank-pop))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package projectile
 | 
					(use-package projectile
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind ("C-c p" . projectile-command-map)
 | 
				
			||||||
  :diminish projectile-mode
 | 
					  :diminish projectile-mode
 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (projectile-mode)
 | 
					 | 
				
			||||||
  :custom ((projectile-completion-system 'ivy))
 | 
					  :custom ((projectile-completion-system 'ivy))
 | 
				
			||||||
  :bind-keymap
 | 
					  :hook (after-init . projectile-mode)
 | 
				
			||||||
  ("C-c p" . projectile-command-map)
 | 
					 | 
				
			||||||
  :init
 | 
					  :init
 | 
				
			||||||
 | 
					  (setq projectile-mode-line-prefix ""
 | 
				
			||||||
 | 
					        projectile-sort-order 'recentf
 | 
				
			||||||
 | 
					        projectile-use-git-grep t)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
  ;; Rutas de archivos temporales.
 | 
					  ;; Rutas de archivos temporales.
 | 
				
			||||||
  (setq projectile-cache-file (expand-file-name "projectile.cache" temp-dir))
 | 
					  (setq projectile-cache-file (expand-file-name "projectile.cache" temp-dir))
 | 
				
			||||||
  (setq projectile-known-projects-file (expand-file-name
 | 
					  (setq projectile-known-projects-file (expand-file-name
 | 
				
			||||||
                                        "projectile-bookmarks.eld" temp-dir))
 | 
					                                        "projectile-bookmarks.eld" temp-dir))
 | 
				
			||||||
  ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git iniciado).
 | 
					  ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git inicio).
 | 
				
			||||||
  (when (file-directory-p "~/Proyectos")
 | 
					  (when (file-directory-p "~/Proyectos")
 | 
				
			||||||
    (setq projectile-project-search-path '("~/Proyectos")))
 | 
					    (setq projectile-project-search-path '("~/Proyectos")))
 | 
				
			||||||
  (when (file-directory-p "~/Docker/Nginx")
 | 
					  (when (file-directory-p "~/mnt/Nginx")
 | 
				
			||||||
    (setq projectile-project-search-path (append
 | 
					    (setq projectile-project-search-path (append
 | 
				
			||||||
                                          projectile-project-search-path
 | 
					                                          projectile-project-search-path
 | 
				
			||||||
                                          '("~/Docker/Nginx"))))
 | 
					                                          '("~/mnt/Nginx"))))
 | 
				
			||||||
  (when (file-directory-p "~/Docker/Nginx2")
 | 
					 | 
				
			||||||
    (setq projectile-project-search-path (append
 | 
					 | 
				
			||||||
                                          projectile-project-search-path
 | 
					 | 
				
			||||||
                                          '("~/Docker/Nginx2"))))
 | 
					 | 
				
			||||||
  (when (file-directory-p "~/Docker/NginxTwitch")
 | 
					 | 
				
			||||||
    (setq projectile-project-search-path (append
 | 
					 | 
				
			||||||
                                          projectile-project-search-path
 | 
					 | 
				
			||||||
                                          '("~/Docker/NginxTwitch"))))
 | 
					 | 
				
			||||||
  (setq projectile-switch-project-action #'projectile-dired) ; Usar dired cuando se elija un proyecto.
 | 
					  (setq projectile-switch-project-action #'projectile-dired) ; Usar dired cuando se elija un proyecto.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Cambiar el título de la ventana de emacs
 | 
					  ;; Cambiar el título de la ventana de emacs
 | 
				
			||||||
@@ -483,168 +208,106 @@
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
   )
 | 
					   )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Autocompletado de proyectos en counsel (projectile)
 | 
					;; Recentf - Guarda registro de los archivos abiertos recientemente
 | 
				
			||||||
(use-package counsel-projectile
 | 
					(use-package recentf
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind ("C-x C-r" . recentf-open-files)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (global-set-key (kbd "C-x v") 'counsel-projectile)
 | 
					  (setq recentf-save-file
 | 
				
			||||||
  (counsel-projectile-mode))
 | 
					        (recentf-expand-file-name (concat temp-dir "/recentf")))
 | 
				
			||||||
 | 
					  (recentf-mode 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Mostrar info del panel inferior de otra manera
 | 
					;; Busqueda rápida con ripgrep
 | 
				
			||||||
(use-package ivy
 | 
					(use-package rg
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
  :bind
 | 
					  :straight t
 | 
				
			||||||
  ("C-x s" . swiper)
 | 
					  :defines projectile-command-map
 | 
				
			||||||
  ("C-x C-r" . ivy-resume)
 | 
					  :hook (after-init . rg-enable-default-bindings)
 | 
				
			||||||
  ("C-x b" . ivy-switch-buffer)
 | 
					  :bind (:map rg-global-map
 | 
				
			||||||
 | 
					         ("c" . rg-dwim-current-dir)
 | 
				
			||||||
 | 
					         ("f" . rg-dwim-current-file)
 | 
				
			||||||
 | 
					         ("m" . rg-menu))
 | 
				
			||||||
 | 
					  :init (setq rg-group-result t
 | 
				
			||||||
 | 
					              rg-show-columns t)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (ivy-mode 1)
 | 
					  (cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases)
 | 
				
			||||||
  (setq ivy-use-virtual-buffers nil)
 | 
					 | 
				
			||||||
  (define-key ivy-minibuffer-map (kbd "TAB") 'ivy-partial)
 | 
					 | 
				
			||||||
  (define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
 | 
					 | 
				
			||||||
  (define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Iconos en Ivy (allthe icons)
 | 
					  (with-eval-after-load 'projectile
 | 
				
			||||||
(use-package all-the-icons-ivy-rich
 | 
					    (bind-key "s R" #'rg-project projectile-command-map)))
 | 
				
			||||||
  :ensure t
 | 
					
 | 
				
			||||||
  :init (all-the-icons-ivy-rich-mode 1)
 | 
					;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir.
 | 
				
			||||||
 | 
					(use-package saveplace
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . save-place-mode)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (setq all-the-icons-ivy-rich-color-icon t))
 | 
					  (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places"))))
 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package ivy-rich
 | 
					 | 
				
			||||||
  :ensure t
 | 
					 | 
				
			||||||
  :init (ivy-rich-mode 1))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Cuando iniicias un atajo de teclas te muestra las posibilidades
 | 
					 | 
				
			||||||
(use-package which-key
 | 
					 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (which-key-mode))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Autocompletado de parentesis, corchetes, llaves, etc.
 | 
					;; Autocompletado de parentesis, corchetes, llaves, etc.
 | 
				
			||||||
(use-package smartparens
 | 
					(use-package smartparens
 | 
				
			||||||
  :config
 | 
					 | 
				
			||||||
  (smartparens-global-mode t))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Org-Mode
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun efs/org-font-setup ()
 | 
					 | 
				
			||||||
  "ORG font faces setup."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ;; Set faces for heading levels
 | 
					 | 
				
			||||||
  (dolist (face '((org-level-1 . 1.2)
 | 
					 | 
				
			||||||
                  (org-level-2 . 1.1)
 | 
					 | 
				
			||||||
                  (org-level-3 . 1.05)
 | 
					 | 
				
			||||||
                  (org-level-4 . 1.0)
 | 
					 | 
				
			||||||
                  (org-level-5 . 1.1)
 | 
					 | 
				
			||||||
                  (org-level-6 . 1.1)
 | 
					 | 
				
			||||||
                  (org-level-7 . 1.1)
 | 
					 | 
				
			||||||
                  (org-level-8 . 1.1)))
 | 
					 | 
				
			||||||
    (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-block nil    :foreground nil :inherit 'fixed-pitch)
 | 
					 | 
				
			||||||
  (set-face-attribute 'org-table nil    :inherit 'fixed-pitch)
 | 
					 | 
				
			||||||
  (set-face-attribute 'org-formula nil  :inherit 'fixed-pitch)
 | 
					 | 
				
			||||||
  (set-face-attribute 'org-code nil     :inherit '(shadow fixed-pitch))
 | 
					 | 
				
			||||||
  (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 'line-number nil :inherit 'fixed-pitch)
 | 
					 | 
				
			||||||
  (set-face-attribute 'line-number-current-line nil :inherit 'fixed-pitch))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun efs/org-mode-setup ()
 | 
					 | 
				
			||||||
  "Set some configs on 'org-mode'."
 | 
					 | 
				
			||||||
  (display-line-numbers-mode 0)
 | 
					 | 
				
			||||||
  (org-indent-mode)
 | 
					 | 
				
			||||||
  (variable-pitch-mode 1)
 | 
					 | 
				
			||||||
  (visual-line-mode 1)
 | 
					 | 
				
			||||||
  (setq evil-auto-indent nil)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package org
 | 
					 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
  :pin org
 | 
					  :straight t
 | 
				
			||||||
  :hook (org-mode . efs/org-mode-setup)
 | 
					  :hook (after-init . smartparens-global-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Mejorando el scroll
 | 
				
			||||||
 | 
					(use-package smooth-scrolling
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . smooth-scrolling-mode)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (setq org-ellipsis " ▾")
 | 
					  (setq mouse-wheel-scroll-amount
 | 
				
			||||||
  (setq org-hide-emphasis-markers t)
 | 
					        '(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)
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (setq org-agenda-start-with-log-mode t)
 | 
					(use-package tree-sitter
 | 
				
			||||||
  (setq org-log-done 'time)
 | 
					  :defer t
 | 
				
			||||||
  (setq org-log-into-drawer t)
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . global-tree-sitter-mode)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (add-to-list 'tree-sitter-major-mode-language-alist '(rustic-mode . rust))
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package tree-sitter-langs
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :after tree-sitter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Palabras claves del To Do de org-mode
 | 
					;; Terminal
 | 
				
			||||||
  (setq org-todo-keywords
 | 
					(use-package vterm :ensure t :defer t :straight t)
 | 
				
			||||||
        ;;'((sequence "☐" "✔" "⌛" "❌")))
 | 
					 | 
				
			||||||
        '((sequence "TODO(t)" "DOING(n)" "WAITING(w)" "|" "DONE(d!)" "CANCELED(c!)")))
 | 
					 | 
				
			||||||
  (setq org-todo-keyword-faces
 | 
					 | 
				
			||||||
        '(("TODO" . "#ff6464")
 | 
					 | 
				
			||||||
          ("DOING" . "yellow")
 | 
					 | 
				
			||||||
          ("DONE" . "green")
 | 
					 | 
				
			||||||
          ("WAITING" . "orange")
 | 
					 | 
				
			||||||
          ("CANCELED" . "#aaa"))
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Archivos a usarse en org-agenda
 | 
					;; Cuando iniicias un atajo de teclas te muestra las posibilidades
 | 
				
			||||||
  (setq org-agenda-files
 | 
					(use-package which-key
 | 
				
			||||||
        '("~/Proyectos/ORGenda/Ideas.org"
 | 
					  :defer t
 | 
				
			||||||
          "~/Proyectos/ORGenda/IdeasTwitch.org"
 | 
					  :straight t
 | 
				
			||||||
          "~/Proyectos/ORGenda/Proyectos.org"
 | 
					  :hook (after-init . which-key-mode))
 | 
				
			||||||
          "~/Proyectos/ORGenda/Tareas.org")
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Archivos entre los que se moverán las tareas
 | 
					;; Restaurar el estado de los frames
 | 
				
			||||||
  (setq org-refile-targets
 | 
					(use-package winner
 | 
				
			||||||
        '(("Archivo.org" :maxlevel . 1)
 | 
					  :defer t
 | 
				
			||||||
          ("Proyectos.org" :maxlevel . 1)
 | 
					  :straight t
 | 
				
			||||||
          ("IdeasTwitch.org" :maxlevel . 1)
 | 
					  :hook (after-init . winner-mode))
 | 
				
			||||||
          ("Ideas.org" :maxlevel . 1)
 | 
					 | 
				
			||||||
          ("Tareas.org" :maxlevel . 1)))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Guardar los archivos cuando se muevan tareas entre ellos
 | 
					;; Permitir snippets
 | 
				
			||||||
  (advice-add 'org-refile :after 'org-save-all-org-buffers)
 | 
					(use-package yasnippet
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
  (setq org-capture-templates
 | 
					  :straight t
 | 
				
			||||||
        `(("t" "Tareas / Projectos")
 | 
					  :ensure t
 | 
				
			||||||
          ("tt" "Tareas" entry (file+olp "~/Proyectos/ORGenda/Tareas.org")
 | 
					  :custom
 | 
				
			||||||
           "* TODO %?\n  %U\n  %a\n  %i" :empty-lines 1)
 | 
					  (yas-prompt-functions '(yas-completing-prompt))
 | 
				
			||||||
          ("tp" "Proyectos" entry (file+olp "~/Proyectos/ORGenda/Proyectos.org")
 | 
					 | 
				
			||||||
           "* TODO %?\n  %U\n  %a\n  %i" :empty-lines 1)
 | 
					 | 
				
			||||||
          ("i" "Ideas")
 | 
					 | 
				
			||||||
          ("ii" "Ideas General" entry
 | 
					 | 
				
			||||||
           (file+olp "~/Proyectos/ORGenda/ideas.org")
 | 
					 | 
				
			||||||
           "* TODO %?\n   %a\n  %i" :empty-lines 1)
 | 
					 | 
				
			||||||
          ("it" "Ideas Twitch" entry
 | 
					 | 
				
			||||||
           (file+olp "~/Proyectos/ORGenda/IdeasTwitch.org")
 | 
					 | 
				
			||||||
           "* TODO %?\n   %a\n  %i" :empty-lines 1)
 | 
					 | 
				
			||||||
          )
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (efs/org-font-setup))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package org-superstar
 | 
					 | 
				
			||||||
  :hook
 | 
					  :hook
 | 
				
			||||||
  (org-mode . org-superstar-mode)
 | 
					  ((prog-mode feature-mode)  . yas-minor-mode-on)
 | 
				
			||||||
  :config
 | 
					  (html-mode . yas-minor-mode))
 | 
				
			||||||
  (setq org-superstar-special-todo-items t)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defun efs/org-mode-visual-fill ()
 | 
					;; Coleción de snippets
 | 
				
			||||||
  "Visual mode fill columns."
 | 
					(use-package yasnippet-snippets
 | 
				
			||||||
  (visual-fill-column-mode 1))
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-package visual-fill-column
 | 
					(use-package esup
 | 
				
			||||||
  :hook (org-mode . efs/org-mode-visual-fill)
 | 
					  :ensure t
 | 
				
			||||||
  :config
 | 
					  :straight t)
 | 
				
			||||||
  ;; Tamaño de la columna
 | 
					 | 
				
			||||||
  (setq visual-fill-column-width 150)
 | 
					 | 
				
			||||||
  ;; Centrar el texto
 | 
					 | 
				
			||||||
  (setq-default visual-fill-column-center-text t)
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(provide 'base-extensions)
 | 
					(provide 'base-extensions)
 | 
				
			||||||
;;; base-extensions.el ends here
 | 
					;;; base-extensions.el ends here
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,11 @@
 | 
				
			|||||||
(provide 'base-functions)
 | 
					;;; base-functions.el --- Configuración de org-mode	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Buscar el texto actualmente seleccionado
 | 
					;; Buscar el texto actualmente seleccionado
 | 
				
			||||||
(defun kj-isearch-with-region ()
 | 
					(defun kj-isearch-with-region ()
 | 
				
			||||||
@@ -14,21 +21,9 @@
 | 
				
			|||||||
;; Borrar espacios, tabs y saltos de línea innecesarios al guardar
 | 
					;; Borrar espacios, tabs y saltos de línea innecesarios al guardar
 | 
				
			||||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
 | 
					(add-hook 'before-save-hook 'delete-trailing-whitespace)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Generar archivo TAGS
 | 
					 | 
				
			||||||
(defun create-tags (dir-name)
 | 
					 | 
				
			||||||
  "Create tags file."
 | 
					 | 
				
			||||||
  (interactive "DDirectory: ")
 | 
					 | 
				
			||||||
  (shell-command
 | 
					 | 
				
			||||||
   (format "cd '%s' && ctags -f TAGS -e -R --exclude=*.min.js"
 | 
					 | 
				
			||||||
           (directory-file-name (file-truename dir-name))
 | 
					 | 
				
			||||||
           )
 | 
					 | 
				
			||||||
   )
 | 
					 | 
				
			||||||
  (message "Archivo TAGS generado.")
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Hacer emacs transparente (no funciona perfecto, pero sirve)
 | 
					;; Hacer emacs transparente (no funciona perfecto, pero sirve)
 | 
				
			||||||
(defun toggle-transparency ()
 | 
					(defun toggle-transparency ()
 | 
				
			||||||
 | 
					  "Cambia la  transparencia de Emacs (es un poco useless)."
 | 
				
			||||||
  (interactive)
 | 
					  (interactive)
 | 
				
			||||||
  (let ((alpha (frame-parameter nil 'alpha)))
 | 
					  (let ((alpha (frame-parameter nil 'alpha)))
 | 
				
			||||||
    (set-frame-parameter
 | 
					    (set-frame-parameter
 | 
				
			||||||
@@ -41,6 +36,15 @@
 | 
				
			|||||||
         '(60 . 60) '(100 . 100)))))
 | 
					         '(60 . 60) '(100 . 100)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defun transparency (value)
 | 
					(defun transparency (value)
 | 
				
			||||||
  "Sets the transparency of the frame window. 0=transparent/100=opaque"
 | 
					  "Set the transparency VALUE of the frame window.  0=transparent/100=opaque."
 | 
				
			||||||
  (interactive "nTransparency Value 0 - 100 opaque:")
 | 
					  (interactive "nTransparency Value 0 - 100 opaque:")
 | 
				
			||||||
  (set-frame-parameter (selected-frame) 'alpha value))
 | 
					  (set-frame-parameter (selected-frame) 'alpha value))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(defun icon-displayable-p ()
 | 
				
			||||||
 | 
					  "Return non-nil if icons are displayable."
 | 
				
			||||||
 | 
					  (and (display-graphic-p) (daemonp)
 | 
				
			||||||
 | 
					       (or (featurep 'all-the-icons)
 | 
				
			||||||
 | 
					           (require 'all-the-icons nil t))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'base-functions)
 | 
				
			||||||
 | 
					;;; base-functions.el ends here.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										440
									
								
								configs/base-ivy.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										440
									
								
								configs/base-ivy.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,440 @@
 | 
				
			|||||||
 | 
					;;; base-ivy.el --- Ayuditas y autocompletado del minibufer  -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Autocompletado para el minibuffer (counsel e ivy)
 | 
				
			||||||
 | 
					(use-package counsel
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :diminish ivy-mode counsel-mode
 | 
				
			||||||
 | 
					  :bind (("C-s"   . swiper-isearch)
 | 
				
			||||||
 | 
					         ("C-r"   . swiper-isearch-backward)
 | 
				
			||||||
 | 
					         ("s-f"   . swiper)
 | 
				
			||||||
 | 
					         ("C-S-s" . swiper-all)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         ("C-c C-r" . ivy-resume)
 | 
				
			||||||
 | 
					         ("C-c v p" . ivy-push-view)
 | 
				
			||||||
 | 
					         ("C-c v o" . ivy-pop-view)
 | 
				
			||||||
 | 
					         ("C-c v ." . ivy-switch-view)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         :map counsel-mode-map
 | 
				
			||||||
 | 
					         ([remap swiper] . counsel-grep-or-swiper)
 | 
				
			||||||
 | 
					         ([remap swiper-backward] . counsel-grep-or-swiper-backward)
 | 
				
			||||||
 | 
					         ([remap dired] . counsel-dired)
 | 
				
			||||||
 | 
					         ([remap set-variable] . counsel-set-variable)
 | 
				
			||||||
 | 
					         ([remap insert-char] . counsel-unicode-char)
 | 
				
			||||||
 | 
					         ([remap recentf-open-files] . counsel-recentf)
 | 
				
			||||||
 | 
					         ([remap org-capture] . counsel-org-capture)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         ("C-c c B" . counsel-bookmarked-directory)
 | 
				
			||||||
 | 
					         ("C-c c F" . counsel-faces)
 | 
				
			||||||
 | 
					         ("C-c c L" . counsel-load-library)
 | 
				
			||||||
 | 
					         ("C-c c K" . counsel-ace-link)
 | 
				
			||||||
 | 
					         ("C-c c O" . counsel-find-file-extern)
 | 
				
			||||||
 | 
					         ("C-c c P" . counsel-package)
 | 
				
			||||||
 | 
					         ("C-c c R" . counsel-list-processes)
 | 
				
			||||||
 | 
					         ("C-c c a" . counsel-apropos)
 | 
				
			||||||
 | 
					         ("C-c c e" . counsel-colors-emacs)
 | 
				
			||||||
 | 
					         ("C-c c f" . counsel-find-library)
 | 
				
			||||||
 | 
					         ("C-c c g" . counsel-grep)
 | 
				
			||||||
 | 
					         ("C-c c h" . counsel-command-history)
 | 
				
			||||||
 | 
					         ("C-c c i" . counsel-git)
 | 
				
			||||||
 | 
					         ("C-c c j" . counsel-git-grep)
 | 
				
			||||||
 | 
					         ("C-c c l" . counsel-git-log)
 | 
				
			||||||
 | 
					         ("C-c c m" . counsel-minibuffer-history)
 | 
				
			||||||
 | 
					         ("C-c c o" . counsel-outline)
 | 
				
			||||||
 | 
					         ("C-c c p" . counsel-pt)
 | 
				
			||||||
 | 
					         ("C-c c r" . counsel-rg)
 | 
				
			||||||
 | 
					         ("C-c c s" . counsel-ag)
 | 
				
			||||||
 | 
					         ("C-c c t" . counsel-load-theme)
 | 
				
			||||||
 | 
					         ("C-c c u" . counsel-unicode-char)
 | 
				
			||||||
 | 
					         ("C-c c w" . counsel-colors-web)
 | 
				
			||||||
 | 
					         ("C-c c v" . counsel-set-variable)
 | 
				
			||||||
 | 
					         ("C-c c z" . counsel-fzf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         :map ivy-minibuffer-map
 | 
				
			||||||
 | 
					         ("C-w" . ivy-yank-word)
 | 
				
			||||||
 | 
					         ("<tab>" . ivy-partial)
 | 
				
			||||||
 | 
					         ("<escape>" . minibuffer-keyboard-quit)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         :map counsel-find-file-map
 | 
				
			||||||
 | 
					         ("C-h" . counsel-up-directory)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         :map swiper-map
 | 
				
			||||||
 | 
					         ("M-s" . swiper-isearch-toggle)
 | 
				
			||||||
 | 
					         ("M-%" . swiper-query-replace)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         :map isearch-mode-map
 | 
				
			||||||
 | 
					         ("M-s" . swiper-isearch-toggle))
 | 
				
			||||||
 | 
					  :hook ((after-init . ivy-mode)
 | 
				
			||||||
 | 
					         (ivy-mode . counsel-mode))
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					  (setq enable-recursive-minibuffers t) ; Allow commands in minibuffers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (setq ivy-height 12
 | 
				
			||||||
 | 
					        ivy-use-selectable-prompt t
 | 
				
			||||||
 | 
					        ivy-use-virtual-buffers t    ; Enable bookmarks and recentf
 | 
				
			||||||
 | 
					        ivy-fixed-height-minibuffer t
 | 
				
			||||||
 | 
					        ivy-count-format "(%d/%d) "
 | 
				
			||||||
 | 
					        ivy-ignore-buffers '("\\` " "\\`\\*tramp/" "\\`\\*xref" "\\`\\*helpful "
 | 
				
			||||||
 | 
					                             "\\`\\*.+-posframe-buffer\\*" "\\` ?\\*company-.+\\*")
 | 
				
			||||||
 | 
					        ivy-on-del-error-function #'ignore
 | 
				
			||||||
 | 
					        ivy-initial-inputs-alist nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Use orderless regex strategy
 | 
				
			||||||
 | 
					  (setq ivy-re-builders-alist '((t . ivy--regex-ignore-order)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Set minibuffer height for different commands
 | 
				
			||||||
 | 
					  (setq ivy-height-alist '((counsel-evil-registers . 5)
 | 
				
			||||||
 | 
					                           (counsel-yank-pop . 8)
 | 
				
			||||||
 | 
					                           (counsel-git-log . 4)
 | 
				
			||||||
 | 
					                           (swiper . 15)
 | 
				
			||||||
 | 
					                           (counsel-projectile-ag . 15)
 | 
				
			||||||
 | 
					                           (counsel-projectile-rg . 15)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (setq swiper-action-recenter t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (setq counsel-find-file-at-point t
 | 
				
			||||||
 | 
					        counsel-preselect-current-file t
 | 
				
			||||||
 | 
					        counsel-yank-pop-separator "\n────────\n")
 | 
				
			||||||
 | 
					  (add-hook 'counsel-grep-post-action-hook #'recenter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Use the faster search tools
 | 
				
			||||||
 | 
					  (when (executable-find "rg")
 | 
				
			||||||
 | 
					    (setq counsel-grep-base-command "rg -S --no-heading --line-number --color never '%s' '%s'"))
 | 
				
			||||||
 | 
					  (when (executable-find "fd")
 | 
				
			||||||
 | 
					    (setq counsel-fzf-cmd
 | 
				
			||||||
 | 
					          "fd --type f --hidden --follow --exclude .git --color never '%s'"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (with-no-warnings
 | 
				
			||||||
 | 
					    ;; persist views
 | 
				
			||||||
 | 
					    (with-eval-after-load 'savehist
 | 
				
			||||||
 | 
					      (add-to-list 'savehist-additional-variables 'ivy-views))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; Highlight the selected item
 | 
				
			||||||
 | 
					    (defun my-ivy-format-function (cands)
 | 
				
			||||||
 | 
					      "Transform CANDS into a string for minibuffer."
 | 
				
			||||||
 | 
					      (if (display-graphic-p)
 | 
				
			||||||
 | 
					          (ivy-format-function-line cands)
 | 
				
			||||||
 | 
					        (ivy-format-function-arrow cands)))
 | 
				
			||||||
 | 
					    (setf (alist-get 't ivy-format-functions-alist) #'my-ivy-format-function)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; Pre-fill search keywords
 | 
				
			||||||
 | 
					    ;; @see https://www.reddit.com/r/emacs/comments/b7g1px/withemacs_execute_commands_like_marty_mcfly/
 | 
				
			||||||
 | 
					    (defvar my-ivy-fly-commands
 | 
				
			||||||
 | 
					      '(query-replace-regexp
 | 
				
			||||||
 | 
					        flush-lines keep-lines ivy-read
 | 
				
			||||||
 | 
					        swiper swiper-backward swiper-all
 | 
				
			||||||
 | 
					        swiper-isearch swiper-isearch-backward
 | 
				
			||||||
 | 
					        lsp-ivy-workspace-symbol lsp-ivy-global-workspace-symbol
 | 
				
			||||||
 | 
					        counsel-grep-or-swiper counsel-grep-or-swiper-backward
 | 
				
			||||||
 | 
					        counsel-grep counsel-ack counsel-ag counsel-rg counsel-pt))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defvar my-ivy-fly-back-commands
 | 
				
			||||||
 | 
					      '(self-insert-command
 | 
				
			||||||
 | 
					        ivy-forward-char ivy-delete-char delete-forward-char kill-word kill-sexp
 | 
				
			||||||
 | 
					        end-of-line mwim-end-of-line mwim-end-of-code-or-line mwim-end-of-line-or-code
 | 
				
			||||||
 | 
					        yank ivy-yank-word ivy-yank-char ivy-yank-symbol counsel-yank-pop))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defvar-local my-ivy-fly--travel nil)
 | 
				
			||||||
 | 
					    (defun my-ivy-fly-back-to-present ()
 | 
				
			||||||
 | 
					      (cond ((and (memq last-command my-ivy-fly-commands)
 | 
				
			||||||
 | 
					                  (equal (this-command-keys-vector) (kbd "M-p")))
 | 
				
			||||||
 | 
					             ;; repeat one time to get straight to the first history item
 | 
				
			||||||
 | 
					             (setq unread-command-events
 | 
				
			||||||
 | 
					                   (append unread-command-events
 | 
				
			||||||
 | 
					                           (listify-key-sequence (kbd "M-p")))))
 | 
				
			||||||
 | 
					            ((or (memq this-command my-ivy-fly-back-commands)
 | 
				
			||||||
 | 
					                 (equal (this-command-keys-vector) (kbd "M-n")))
 | 
				
			||||||
 | 
					             (unless my-ivy-fly--travel
 | 
				
			||||||
 | 
					               (delete-region (point) (point-max))
 | 
				
			||||||
 | 
					               (when (memq this-command '(ivy-forward-char
 | 
				
			||||||
 | 
					                                          ivy-delete-char delete-forward-char
 | 
				
			||||||
 | 
					                                          kill-word kill-sexp
 | 
				
			||||||
 | 
					                                          end-of-line mwim-end-of-line
 | 
				
			||||||
 | 
					                                          mwim-end-of-code-or-line
 | 
				
			||||||
 | 
					                                          mwim-end-of-line-or-code))
 | 
				
			||||||
 | 
					                 (insert (ivy-cleanup-string ivy-text))
 | 
				
			||||||
 | 
					                 (when (memq this-command '(ivy-delete-char
 | 
				
			||||||
 | 
					                                            delete-forward-char
 | 
				
			||||||
 | 
					                                            kill-word kill-sexp))
 | 
				
			||||||
 | 
					                   (beginning-of-line)))
 | 
				
			||||||
 | 
					               (setq my-ivy-fly--travel t)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-fly-time-travel ()
 | 
				
			||||||
 | 
					      (when (memq this-command my-ivy-fly-commands)
 | 
				
			||||||
 | 
					        (insert (propertize
 | 
				
			||||||
 | 
					                 (save-excursion
 | 
				
			||||||
 | 
							           (set-buffer (window-buffer (minibuffer-selected-window)))
 | 
				
			||||||
 | 
							           (ivy-thing-at-point))
 | 
				
			||||||
 | 
					                 'face 'shadow))
 | 
				
			||||||
 | 
					        (add-hook 'pre-command-hook 'my-ivy-fly-back-to-present nil t)
 | 
				
			||||||
 | 
					        (beginning-of-line)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (add-hook 'minibuffer-setup-hook #'my-ivy-fly-time-travel)
 | 
				
			||||||
 | 
					    (add-hook 'minibuffer-exit-hook
 | 
				
			||||||
 | 
					              (lambda ()
 | 
				
			||||||
 | 
					                (remove-hook 'pre-command-hook 'my-ivy-fly-back-to-present t)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    ;; Improve search experience of `swiper' and `counsel'
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-swiper (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `swiper' with the current input."
 | 
				
			||||||
 | 
					      (swiper ivy-text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-swiper-isearch (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `swiper-isearch' with the current input."
 | 
				
			||||||
 | 
					      (swiper-isearch ivy-text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-swiper-all (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `swiper-all' with the current input."
 | 
				
			||||||
 | 
					      (swiper-all ivy-text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-rg-dwim (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `rg-dwim' with the current input."
 | 
				
			||||||
 | 
					      (ivy-quit-and-run (rg-dwim default-directory)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-counsel-rg (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `counsel-rg' with the current input."
 | 
				
			||||||
 | 
					      (counsel-rg ivy-text default-directory))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-counsel-git-grep (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `counsel-git-grep' with the current input."
 | 
				
			||||||
 | 
					      (counsel-git-grep ivy-text default-directory))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-counsel-find-file (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `counsel-find-file' with the current input."
 | 
				
			||||||
 | 
					      (counsel-find-file ivy-text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-counsel-fzf (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `counsel-fzf' with the current input."
 | 
				
			||||||
 | 
					      (counsel-fzf ivy-text default-directory))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-counsel-git (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `counsel-git' with the current input."
 | 
				
			||||||
 | 
					      (counsel-git ivy-text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-list-bookmarks (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `list-bookmarks'."
 | 
				
			||||||
 | 
					      (ivy-quit-and-run (call-interactively #'list-bookmarks)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-list-colors (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `list-colors-display'."
 | 
				
			||||||
 | 
					      (ivy-quit-and-run (list-colors-display)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-list-packages (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `list-packages'."
 | 
				
			||||||
 | 
					      (ivy-quit-and-run (list-packages)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-switch-to-list-processes (&rest _)
 | 
				
			||||||
 | 
					      "Switch to `list-processes'."
 | 
				
			||||||
 | 
					      (ivy-quit-and-run (list-processes)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-ivy-copy-library-path (lib)
 | 
				
			||||||
 | 
					      "Copy the full path of LIB."
 | 
				
			||||||
 | 
					      (let ((path (find-library-name lib)))
 | 
				
			||||||
 | 
					        (kill-new path)
 | 
				
			||||||
 | 
					        (message "Copied path: \"%s\"." path)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; @see https://emacs-china.org/t/swiper-swiper-isearch/9007/12
 | 
				
			||||||
 | 
					    (defun my-swiper-toggle-counsel-rg ()
 | 
				
			||||||
 | 
					      "Toggle `counsel-rg' and `swiper'/`swiper-isearch' with the current input."
 | 
				
			||||||
 | 
					      (interactive)
 | 
				
			||||||
 | 
					      (ivy-quit-and-run
 | 
				
			||||||
 | 
					        (if (memq (ivy-state-caller ivy-last) '(swiper swiper-isearch))
 | 
				
			||||||
 | 
					            (my-ivy-switch-to-counsel-rg)
 | 
				
			||||||
 | 
					          (my-ivy-switch-to-swiper-isearch))))
 | 
				
			||||||
 | 
					    (bind-key "<C-return>" #'my-swiper-toggle-counsel-rg swiper-map)
 | 
				
			||||||
 | 
					    (bind-key "<C-return>" #'my-swiper-toggle-counsel-rg counsel-ag-map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (with-eval-after-load 'rg
 | 
				
			||||||
 | 
					      (defun my-swiper-toggle-rg-dwim ()
 | 
				
			||||||
 | 
					        "Toggle `rg-dwim' with the current input."
 | 
				
			||||||
 | 
					        (interactive)
 | 
				
			||||||
 | 
					        (ivy-quit-and-run
 | 
				
			||||||
 | 
					          (rg-dwim default-directory)))
 | 
				
			||||||
 | 
					      (bind-key "<M-return>" #'my-swiper-toggle-rg-dwim swiper-map)
 | 
				
			||||||
 | 
					      (bind-key "<M-return>" #'my-swiper-toggle-rg-dwim counsel-ag-map))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-swiper-toggle-swiper-isearch ()
 | 
				
			||||||
 | 
					      "Toggle `swiper' and `swiper-isearch' with the current input."
 | 
				
			||||||
 | 
					      (interactive)
 | 
				
			||||||
 | 
					      (ivy-quit-and-run
 | 
				
			||||||
 | 
					        (if (eq (ivy-state-caller ivy-last) 'swiper-isearch)
 | 
				
			||||||
 | 
					            (swiper ivy-text)
 | 
				
			||||||
 | 
					          (swiper-isearch ivy-text))))
 | 
				
			||||||
 | 
					    (bind-key "<s-return>" #'my-swiper-toggle-swiper-isearch swiper-map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-counsel-find-file-toggle-fzf ()
 | 
				
			||||||
 | 
					      "Toggle `counsel-fzf' with the current `counsel-find-file' input."
 | 
				
			||||||
 | 
					      (interactive)
 | 
				
			||||||
 | 
					      (ivy-quit-and-run
 | 
				
			||||||
 | 
					        (counsel-fzf (or ivy-text "") default-directory)))
 | 
				
			||||||
 | 
					    (bind-key "<C-return>" #'my-counsel-find-file-toggle-fzf counsel-find-file-map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun my-counsel-toggle ()
 | 
				
			||||||
 | 
					      "Toggle `counsel' commands and original commands."
 | 
				
			||||||
 | 
					      (interactive)
 | 
				
			||||||
 | 
					      (pcase (ivy-state-caller ivy-last)
 | 
				
			||||||
 | 
					        ('counsel-bookmark (my-ivy-switch-to-list-bookmarks))
 | 
				
			||||||
 | 
					        ('counsel-colors-emacs (my-ivy-switch-to-list-colors))
 | 
				
			||||||
 | 
					        ('counsel-colors-web (my-ivy-switch-to-list-colors))
 | 
				
			||||||
 | 
					        ('counsel-list-processes (my-ivy-switch-to-list-processes))
 | 
				
			||||||
 | 
					        ('counsel-package (my-ivy-switch-to-list-packages))
 | 
				
			||||||
 | 
					        (_ (ignore))))
 | 
				
			||||||
 | 
					    (bind-key "<C-return>" #'my-counsel-toggle ivy-minibuffer-map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ;; More actions
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'swiper-isearch
 | 
				
			||||||
 | 
					     '(("r" my-ivy-switch-to-counsel-rg "rg")
 | 
				
			||||||
 | 
					       ("d" my-ivy-switch-to-rg-dwim "rg dwim")
 | 
				
			||||||
 | 
					       ("s" my-ivy-switch-to-swiper "swiper")
 | 
				
			||||||
 | 
					       ("a" my-ivy-switch-to-swiper-all "swiper all")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'swiper
 | 
				
			||||||
 | 
					     '(("r" my-ivy-switch-to-counsel-rg "rg")
 | 
				
			||||||
 | 
					       ("d" my-ivy-switch-to-rg-dwim "rg dwim")
 | 
				
			||||||
 | 
					       ("s" my-ivy-switch-to-swiper-isearch "swiper isearch")
 | 
				
			||||||
 | 
					       ("a" my-ivy-switch-to-swiper-all "swiper all")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'swiper-all
 | 
				
			||||||
 | 
					     '(("g" my-ivy-switch-to-counsel-git-grep "git grep")
 | 
				
			||||||
 | 
					       ("r" my-ivy-switch-to-counsel-rg "rg")
 | 
				
			||||||
 | 
					       ("d" my-ivy-switch-to-rg-dwim "rg dwim")
 | 
				
			||||||
 | 
					       ("s" my-swiper-toggle-swiper-isearch "swiper isearch")
 | 
				
			||||||
 | 
					       ("S" my-ivy-switch-to-swiper "swiper")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-rg
 | 
				
			||||||
 | 
					     '(("s" my-ivy-switch-to-swiper-isearch "swiper isearch")
 | 
				
			||||||
 | 
					       ("S" my-ivy-switch-to-swiper "swiper")
 | 
				
			||||||
 | 
					       ("a" my-ivy-switch-to-swiper-all "swiper all")
 | 
				
			||||||
 | 
					       ("d" my-ivy-switch-to-rg-dwim "rg dwim")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-git-grep
 | 
				
			||||||
 | 
					     '(("s" my-ivy-switch-to-swiper-isearch "swiper isearch")
 | 
				
			||||||
 | 
					       ("S" my-ivy-switch-to-swiper "swiper")
 | 
				
			||||||
 | 
					       ("r" my-ivy-switch-to-rg-dwim "rg")
 | 
				
			||||||
 | 
					       ("d" my-ivy-switch-to-rg-dwim "rg dwim")
 | 
				
			||||||
 | 
					       ("a" my-ivy-switch-to-swiper-all "swiper all")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-find-file
 | 
				
			||||||
 | 
					     '(("g" my-ivy-switch-to-counsel-git "git")
 | 
				
			||||||
 | 
					       ("z" my-ivy-switch-to-counsel-fzf "fzf")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-git
 | 
				
			||||||
 | 
					     '(("f" my-ivy-switch-to-counsel-find-file "find file")
 | 
				
			||||||
 | 
					       ("z" my-ivy-switch-to-counsel-fzf "fzf")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     'counsel-fzf
 | 
				
			||||||
 | 
					     '(("f" my-ivy-switch-to-counsel-find-file "find file")
 | 
				
			||||||
 | 
					       ("g" my-ivy-switch-to-counsel-git "git")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     'counsel-find-library
 | 
				
			||||||
 | 
					     '(("p" my-ivy-copy-library-path "copy path")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     'counsel-load-library
 | 
				
			||||||
 | 
					     '(("p" my-ivy-copy-library-path "copy path")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-bookmark
 | 
				
			||||||
 | 
					     '(("l" my-ivy-switch-to-list-bookmarks "list")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-colors-emacs
 | 
				
			||||||
 | 
					     '(("l" my-ivy-switch-to-list-colors "list")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-colors-web
 | 
				
			||||||
 | 
					     '(("l" my-ivy-switch-to-list-colors "list")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-package
 | 
				
			||||||
 | 
					     '(("l" my-ivy-switch-to-list-packages "list packages")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (ivy-add-actions
 | 
				
			||||||
 | 
					     #'counsel-list-processes
 | 
				
			||||||
 | 
					     '(("l" my-ivy-switch-to-list-processes "list")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Autocompletado de proyectos en counsel (projectile)
 | 
				
			||||||
 | 
					(use-package counsel-projectile
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind*
 | 
				
			||||||
 | 
					  ("C-x p" . counsel-projectile)
 | 
				
			||||||
 | 
					  :hook (counsel-mode . counsel-projectile-mode)
 | 
				
			||||||
 | 
					  :init (setq counsel-projectile-grep-initial-input '(ivy-thing-at-point)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Enhance M-x
 | 
				
			||||||
 | 
					(use-package amx
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind (("M-x" . amx)
 | 
				
			||||||
 | 
					         ("<menu>" . amx))
 | 
				
			||||||
 | 
					  :init (setq amx-history-length 20))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Avy integration
 | 
				
			||||||
 | 
					(use-package ivy-avy
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind (:map ivy-minibuffer-map
 | 
				
			||||||
 | 
					              ("C-'" . ivy-avy)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package ivy
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook (after-init . ivy-mode)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq ivy-use-virtual-buffers nil))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package ivy-rich
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :hook ((counsel-projectile-mode . ivy-rich-mode) ; MUST after `counsel-projectile'
 | 
				
			||||||
 | 
					         (ivy-rich-mode . ivy-rich-project-root-cache-mode)
 | 
				
			||||||
 | 
					         (ivy-rich-mode . (lambda ()
 | 
				
			||||||
 | 
					                            "Use abbreviate in `ivy-rich-mode'."
 | 
				
			||||||
 | 
					                            (setq ivy-virtual-abbreviate
 | 
				
			||||||
 | 
					                                  (or (and ivy-rich-mode 'abbreviate) 'name)))))
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					  ;; For better performance
 | 
				
			||||||
 | 
					  (setq ivy-rich-parse-remote-buffer nil))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Iconos en Ivy (allthe icons)
 | 
				
			||||||
 | 
					(use-package all-the-icons-ivy-rich
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :hook (ivy-mode . all-the-icons-ivy-rich-mode)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq all-the-icons-ivy-rich-color-icon t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Integrate yasnippet
 | 
				
			||||||
 | 
					(use-package ivy-yasnippet
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind ("C-c C-y" . ivy-yasnippet))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'base-ivy)
 | 
				
			||||||
 | 
					;;; base-ivy.el ends here
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; base-keys.el --- Archivo de configuración de atajos
 | 
					;;; base-keys.el --- Archivo de configuración de atajos   -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -11,19 +11,31 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-key minibuffer-local-map  (kbd "<escape>")
 | 
					 | 
				
			||||||
  'keyboard-escape-quit)                                  ; Cancelar el minibuffer con un solo ESC.
 | 
					 | 
				
			||||||
(global-set-key (kbd "C-x C-z") nil)                      ; Unbind C-x C-z (don't minimize)
 | 
					(global-set-key (kbd "C-x C-z") nil)                      ; Unbind C-x C-z (don't minimize)
 | 
				
			||||||
(global-set-key (kbd "C-a") 'mark-whole-buffer)           ; Seleccionar todo con CTRL+A.
 | 
					(global-set-key (kbd "C-z") 'undo)                        ; Unbind C-z y hacerlo funcionar para deshacer cambios
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-S-z") 'undo-redo)                 ; Rehacer cambios con C-S-z
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-S-a") 'mark-whole-buffer)         ; Seleccionar todo con CTRL+SHIFT+a.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(global-set-key (kbd "M-c") 'comment-or-uncomment-region) ; Comentar/descomentar en lote
 | 
					(global-set-key (kbd "C-x c c")
 | 
				
			||||||
 | 
					                'comment-or-uncomment-region)             ; Comentar/descomentar en lote
 | 
				
			||||||
(global-set-key (kbd "C-<f6>") 'create-tags)              ; Generar o Regeneral el archivo TAGS
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(global-set-key (kbd "C-<f11>") 'toggle-frame-maximized)  ; Maximizar / restaurar
 | 
					(global-set-key (kbd "C-<f11>") 'toggle-frame-maximized)  ; Maximizar / restaurar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(global-set-key (kbd "C-c a") 'org-agenda)                ; Abrir la agenda.
 | 
					;; Cambios rápidos de major modes
 | 
				
			||||||
(global-set-key (kbd "C-c c") 'org-capture)               ; Abrir la crear una entrada.
 | 
					(global-set-key (kbd "C-x m") nil)                        ; Unbind mail on C-x m
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x mh") 'html-mode)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x mj") 'js-mode)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x mp") 'php-mode)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x mr") 'rust-mode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Atajos de windmove
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x <left>") 'windmove-left)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x <right>") 'windmove-right)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x <up>") 'windmove-up)
 | 
				
			||||||
 | 
					(global-set-key (kbd "C-x <down>") 'windmove-down)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(provide 'base-keys)
 | 
					(provide 'base-keys)
 | 
				
			||||||
;;; base-keys.el ends here
 | 
					;;; base-keys.el ends here
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										110
									
								
								configs/base-lsp.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								configs/base-lsp.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					;;; base-lsp.el --- Languaje server protocol. 	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Performace tuning
 | 
				
			||||||
 | 
					;; @see https://emacs-lsp.github.io/lsp-mode/page/performance/
 | 
				
			||||||
 | 
					(setq read-process-output-max (* 1024 (* 3 1024))) ;; 3MB
 | 
				
			||||||
 | 
					(setenv "LSP_USE_PLISTS" "true")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package lsp-mode
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :diminish
 | 
				
			||||||
 | 
					  :commands (lsp-enable-which-key-integration
 | 
				
			||||||
 | 
					                lsp-format-buffer
 | 
				
			||||||
 | 
					                lsp-organize-imports
 | 
				
			||||||
 | 
					                lsp-install-server)
 | 
				
			||||||
 | 
					  :hook ((prog-mode . (lambda ()
 | 
				
			||||||
 | 
					                        (unless (derived-mode-p 'emacs-lisp-mode 'lisp-mode 'makefile-mode)
 | 
				
			||||||
 | 
					                          (lsp-deferred))))
 | 
				
			||||||
 | 
					         (markdown-mode . lsp-deferred)
 | 
				
			||||||
 | 
					         (lsp-mode . lsp-enable-which-key-integration))
 | 
				
			||||||
 | 
					  :custom
 | 
				
			||||||
 | 
					  (lsp-headerline-breadcrumb-enable nil)
 | 
				
			||||||
 | 
					  :init (setq lsp-keymap-prefix "C-c l"
 | 
				
			||||||
 | 
					              lsp-keep-workspace-alive nil
 | 
				
			||||||
 | 
					              lsp-signature-auto-activate nil
 | 
				
			||||||
 | 
					              lsp-modeline-code-actions-enable nil
 | 
				
			||||||
 | 
					              lsp-modeline-diagnostics-enable nil
 | 
				
			||||||
 | 
					              lsp-modeline-workspace-status-enable nil
 | 
				
			||||||
 | 
					              lsp-headerline-breadcrumb-enable nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              lsp-enable-file-watchers nil
 | 
				
			||||||
 | 
					              lsp-enable-folding nil
 | 
				
			||||||
 | 
					              lsp-enable-symbol-highlighting nil
 | 
				
			||||||
 | 
					              lsp-enable-text-document-color nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              lsp-enable-indentation nil
 | 
				
			||||||
 | 
					              lsp-enable-on-type-formatting nil)
 | 
				
			||||||
 | 
					   :config
 | 
				
			||||||
 | 
					   (with-no-warnings
 | 
				
			||||||
 | 
					       ;; Disable `lsp-mode' in `git-timemachine-mode'
 | 
				
			||||||
 | 
					       (defun my-lsp--init-if-visible (fn &rest args)
 | 
				
			||||||
 | 
					         (unless (bound-and-true-p git-timemachine-mode)
 | 
				
			||||||
 | 
					           (apply fn args)))
 | 
				
			||||||
 | 
					       (advice-add #'lsp--init-if-visible :around #'my-lsp--init-if-visible)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       ;; Enable `lsp-mode' in sh/bash/zsh
 | 
				
			||||||
 | 
					       (defun my-lsp-bash-check-sh-shell (&rest _)
 | 
				
			||||||
 | 
					         (and (eq major-mode 'sh-mode)
 | 
				
			||||||
 | 
					              (memq sh-shell '(sh bash zsh))))
 | 
				
			||||||
 | 
					       (advice-add #'lsp-bash-check-sh-shell :override #'my-lsp-bash-check-sh-shell)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       ;; Only display icons in GUI
 | 
				
			||||||
 | 
					       (defun my-lsp-icons-get-symbol-kind (fn &rest args)
 | 
				
			||||||
 | 
					         (and (icon-displayable-p) (apply fn args)))
 | 
				
			||||||
 | 
					       (advice-add #'lsp-icons-get-by-symbol-kind :around #'my-lsp-icons-get-symbol-kind)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       (defun my-lsp-icons-get-by-file-ext (fn &rest args)
 | 
				
			||||||
 | 
					         (and (icon-displayable-p) (apply fn args)))
 | 
				
			||||||
 | 
					       (advice-add #'lsp-icons-get-by-file-ext :around #'my-lsp-icons-get-by-file-ext)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       (defun my-lsp-icons-all-the-icons-material-icon (icon-name face fallback &optional feature)
 | 
				
			||||||
 | 
					         (if (and (icon-displayable-p)
 | 
				
			||||||
 | 
					                  (lsp-icons--enabled-for-feature feature))
 | 
				
			||||||
 | 
					             (all-the-icons-material icon-name
 | 
				
			||||||
 | 
					                                     :face face)
 | 
				
			||||||
 | 
					           (propertize fallback 'face face)))
 | 
				
			||||||
 | 
					       (advice-add #'lsp-icons-all-the-icons-material-icon
 | 
				
			||||||
 | 
					                   :override #'my-lsp-icons-all-the-icons-material-icon))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Interface para lsp
 | 
				
			||||||
 | 
					(use-package lsp-ui
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :bind (:map lsp-mode-map
 | 
				
			||||||
 | 
					         ("<f1>" . lsp-ui-doc-glance))
 | 
				
			||||||
 | 
					  :hook (lsp-mode . lsp-ui-mode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					  (setq lsp-ui-sideline-show-diagnostics nil
 | 
				
			||||||
 | 
					        lsp-ui-sideline-ignore-duplicate t
 | 
				
			||||||
 | 
					        lsp-ui-doc-show-with-cursor  nil
 | 
				
			||||||
 | 
					        lsp-ui-doc-show-with-mouse nil
 | 
				
			||||||
 | 
					        lsp-ui-doc-position 'at-point
 | 
				
			||||||
 | 
					        lsp-ui-doc-delay 0.1
 | 
				
			||||||
 | 
					        lsp-ui-imenu-colors `(,(face-foreground 'font-lock-keyword-face)
 | 
				
			||||||
 | 
					                              ,(face-foreground 'font-lock-string-face)
 | 
				
			||||||
 | 
					                              ,(face-foreground 'font-lock-constant-face)
 | 
				
			||||||
 | 
					                              ,(face-foreground 'font-lock-variable-name-face)))
 | 
				
			||||||
 | 
					  ;; Set correct color to borders
 | 
				
			||||||
 | 
					  (defun my-lsp-ui-doc-set-border ()
 | 
				
			||||||
 | 
					    "Set the border color of lsp doc."
 | 
				
			||||||
 | 
					    (setq lsp-ui-doc-border
 | 
				
			||||||
 | 
					          (if (facep 'posframe-border)
 | 
				
			||||||
 | 
					              (face-background 'posframe-border nil t)
 | 
				
			||||||
 | 
					            (face-foreground 'shadow nil t))))
 | 
				
			||||||
 | 
					  (my-lsp-ui-doc-set-border)
 | 
				
			||||||
 | 
					  (add-hook 'after-load-theme-hook #'my-lsp-ui-doc-set-border t)
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'base-lsp)
 | 
				
			||||||
 | 
					;;; base-lsp.el ends here
 | 
				
			||||||
							
								
								
									
										168
									
								
								configs/base-org.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								configs/base-org.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,168 @@
 | 
				
			|||||||
 | 
					;;; base-config.el --- Configuración de org-mode   -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					(defun kj/org-hook ()
 | 
				
			||||||
 | 
					  "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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; 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 nil :inherit 'fixed-pitch)
 | 
				
			||||||
 | 
					  (set-face-attribute 'org-code nil   :inherit '(shadow fixed-pitch))
 | 
				
			||||||
 | 
					  (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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Tachar los elementos "DONE"
 | 
				
			||||||
 | 
					  (set-face-attribute 'org-done nil :strike-through t)
 | 
				
			||||||
 | 
					  (set-face-attribute 'org-headline-done nil
 | 
				
			||||||
 | 
					                      :strike-through t
 | 
				
			||||||
 | 
					                      :foreground "light gray")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package org
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :straight (:type built-in)
 | 
				
			||||||
 | 
					  :bind (("C-c a" . org-agenda)
 | 
				
			||||||
 | 
					         ("C-c x" . org-capture))
 | 
				
			||||||
 | 
					  :hook
 | 
				
			||||||
 | 
					  (org-mode . kj/org-hook)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq company-dabbrev-ignore-case nil) ; Hacer el autocompletado case-sensitive.
 | 
				
			||||||
 | 
					  (setq org-ellipsis " ▾")
 | 
				
			||||||
 | 
					  (setq org-hide-emphasis-markers t)
 | 
				
			||||||
 | 
					  (setq org-startup-folded 'content)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (setq org-agenda-start-with-log-mode t)
 | 
				
			||||||
 | 
					  (setq org-log-done 'time)
 | 
				
			||||||
 | 
					  (setq org-log-into-drawer t)
 | 
				
			||||||
 | 
					  (setq org-cycle-separator-lines 2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Identación
 | 
				
			||||||
 | 
					  (setq org-startup-indented t)
 | 
				
			||||||
 | 
					  (setq org-src-preserve-indentation nil)
 | 
				
			||||||
 | 
					  (setq org-edit-src-content-indentation 0)
 | 
				
			||||||
 | 
					  (setq org-src-tab-acts-natively t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Palabras claves del To Do de org-mode
 | 
				
			||||||
 | 
					  (setq org-todo-keywords
 | 
				
			||||||
 | 
					        ;;'((sequence "☐" "✔" "⌛" "❌")))
 | 
				
			||||||
 | 
					        '((sequence "TODO(t)" "DOING(n)" "WAITING(w)" "|" "DONE(d!)" "CANCELED(c!)")))
 | 
				
			||||||
 | 
					  (setq org-todo-keyword-faces
 | 
				
			||||||
 | 
					        '(("TODO" . "#ff6464")
 | 
				
			||||||
 | 
					          ("DOING" . "yellow")
 | 
				
			||||||
 | 
					          ("DONE" . "green")
 | 
				
			||||||
 | 
					          ("WAITING" . "orange")
 | 
				
			||||||
 | 
					          ("CANCELED" . "#aaa"))
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Embellecer los checkbox
 | 
				
			||||||
 | 
					  ;; (add-hook 'org-mode-hook (lambda ()
 | 
				
			||||||
 | 
					  ;; "Beautify Org Checkbox Symbol"
 | 
				
			||||||
 | 
					  ;; (push '("[ ]" . "☐") prettify-symbols-alist)
 | 
				
			||||||
 | 
					  ;; (push '("[X]" . "☑" ) prettify-symbols-alist)
 | 
				
			||||||
 | 
					  ;; (push '("[-]" . "❍" ) prettify-symbols-alist)
 | 
				
			||||||
 | 
					  ;; (prettify-symbols-mode)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Tachar los checkbox marcados como terminados
 | 
				
			||||||
 | 
					  (defface org-checkbox-done-text
 | 
				
			||||||
 | 
					  '((t (:foreground "#71696A" :strike-through t)))
 | 
				
			||||||
 | 
					  "Face for the text part of a checked org-mode checkbox.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (font-lock-add-keywords
 | 
				
			||||||
 | 
					   'org-mode
 | 
				
			||||||
 | 
					   `(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)"
 | 
				
			||||||
 | 
					      1 'org-checkbox-done-text prepend))
 | 
				
			||||||
 | 
					   'append)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Archivos a usarse en org-agenda
 | 
				
			||||||
 | 
					  (setq org-agenda-files
 | 
				
			||||||
 | 
					        '("~/Documentos/ORG/Agenda/Ideas.org"
 | 
				
			||||||
 | 
					          "~/Documentos/ORG/Agenda/IdeasTwitch.org"
 | 
				
			||||||
 | 
					          "~/Documentos/ORG/Agenda/Tareas.org")
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Archivos entre los que se moverán las tareas
 | 
				
			||||||
 | 
					  (setq org-refile-targets
 | 
				
			||||||
 | 
					        '(("Archivo.org" :maxlevel . 1)
 | 
				
			||||||
 | 
					          ("IdeasTwitch.org" :maxlevel . 1)
 | 
				
			||||||
 | 
					          ("Ideas.org" :maxlevel . 1)
 | 
				
			||||||
 | 
					          ("Tareas.org" :maxlevel . 1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ;; Guardar los archivos cuando se muevan tareas entre ellos
 | 
				
			||||||
 | 
					  (advice-add 'org-refile :after 'org-save-all-org-buffers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (setq org-capture-templates
 | 
				
			||||||
 | 
					        `(("t" "Tareas / Projectos")
 | 
				
			||||||
 | 
					          ("tt" "Tareas" entry (file+olp "~/Documentos/ORG/Agenda/Tareas.org")
 | 
				
			||||||
 | 
					           "* TODO %? \n %a\n %i" :empty-lines 1)
 | 
				
			||||||
 | 
					          ("i" "Ideas")
 | 
				
			||||||
 | 
					          ("ii" "Ideas General" entry
 | 
				
			||||||
 | 
					           (file+olp "~/Documentos/ORG/Agenda/ideas.org")
 | 
				
			||||||
 | 
					           "* TODO %? \n %a\n %i" :empty-lines 1)
 | 
				
			||||||
 | 
					          ("it" "Ideas Twitch" entry
 | 
				
			||||||
 | 
					           (file+olp "~/Documentos/ORG/Agenda/IdeasTwitch.org")
 | 
				
			||||||
 | 
					           "* TODO %?  \n %a\n %i" :empty-lines 1)
 | 
				
			||||||
 | 
					          )
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package org-bullets
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :hook
 | 
				
			||||||
 | 
					  (org-mode . org-bullets-mode))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package visual-fill-column
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  ;; Tamaño de la columna
 | 
				
			||||||
 | 
					  (setq-default visual-fill-column-width 150)
 | 
				
			||||||
 | 
					  ;; Centrar el texto
 | 
				
			||||||
 | 
					  (setq-default visual-fill-column-center-text t)
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package org-roam
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :bind (("<f4>" . org-roam-node-insert)
 | 
				
			||||||
 | 
					         ("<f3>" . org-roam-node-find))
 | 
				
			||||||
 | 
					  :init
 | 
				
			||||||
 | 
					  (setq org-roam-v2-ack t)
 | 
				
			||||||
 | 
					  (setq org-roam-completion-system 'ivy)
 | 
				
			||||||
 | 
					  :custom
 | 
				
			||||||
 | 
					  (org-roam-directory "~/Documentos/ORG/Notas")
 | 
				
			||||||
 | 
					  (org-roam-completion-everywhere t)
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (org-roam-setup))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package org-roam-ui
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq org-roam-ui-sync-theme t
 | 
				
			||||||
 | 
					        org-roam-ui-follow t
 | 
				
			||||||
 | 
					        org-roam-ui-update-on-save t
 | 
				
			||||||
 | 
					        org-roam-ui-open-on-start t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'base-org)
 | 
				
			||||||
 | 
					;;; base-org.el ends here
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; base.el --- Configuración base de emacs
 | 
					;;; base.el --- Configuración base de emacs	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -10,46 +10,56 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; The default is 800 kilobytes.  Measured in bytes.
 | 
					 | 
				
			||||||
(setq gc-cons-threshold (* 50 1000 1000))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Native compilation
 | 
					;; Native compilation
 | 
				
			||||||
(when (and (fboundp 'native-comp-available-p)
 | 
					(when (and (fboundp 'native-comp-available-p)
 | 
				
			||||||
           (native-comp-available-p))
 | 
					           (native-comp-available-p))
 | 
				
			||||||
  (progn
 | 
					  (progn
 | 
				
			||||||
    (setq native-comp-async-report-warnings-errors nil)
 | 
					    (setq native-comp-async-report-warnings-errors nil)
 | 
				
			||||||
    (setq comp-deferred-compilation t)
 | 
					    (setq comp-deferred-compilation t)
 | 
				
			||||||
    (add-to-list 'native-comp-eln-load-path (expand-file-name "private/cache/eln-cache/" user-emacs-directory))
 | 
					 | 
				
			||||||
    (setq package-native-compile t)
 | 
					    (setq package-native-compile t)
 | 
				
			||||||
    ))
 | 
					    ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Instalar straight.el (reemplpazando package.el)
 | 
				
			||||||
 | 
					(defvar bootstrap-version)
 | 
				
			||||||
 | 
					(let ((bootstrap-file
 | 
				
			||||||
 | 
					      (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
 | 
				
			||||||
 | 
					      (bootstrap-version 5))
 | 
				
			||||||
 | 
					  (unless (file-exists-p bootstrap-file)
 | 
				
			||||||
 | 
					    (with-current-buffer
 | 
				
			||||||
 | 
					        (url-retrieve-synchronously
 | 
				
			||||||
 | 
					        "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
 | 
				
			||||||
 | 
					        'silent 'inhibit-cookies)
 | 
				
			||||||
 | 
					      (goto-char (point-max))
 | 
				
			||||||
 | 
					      (eval-print-last-sexp)))
 | 
				
			||||||
 | 
					  (load bootstrap-file nil 'nomessage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Initialize package sources
 | 
					;; Initialize package sources
 | 
				
			||||||
(require 'package)
 | 
					;; (require 'package)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
 | 
					;; (setq package-archives '(("melpa" . "https://melpa.org/packages/")
 | 
				
			||||||
                         ("org" . "https://orgmode.org/elpa/")
 | 
					;;                          ("org" . "https://orgmode.org/elpa/")
 | 
				
			||||||
                         ("elpa" . "https://elpa.gnu.org/packages/")))
 | 
					;;                          ("elpa" . "https://elpa.gnu.org/packages/")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(package-initialize)
 | 
					;; (package-initialize)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Actualizar repositorios si aún no esta actualizados
 | 
					;; Actualizar repositorios si aún no esta actualizados
 | 
				
			||||||
(unless package-archive-contents
 | 
					;; (unless package-archive-contents
 | 
				
			||||||
  (package-refresh-contents))
 | 
					;;   (package-refresh-contents))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Instalar use-package si no está instalado
 | 
					;; Instalar use-package si no está instalado
 | 
				
			||||||
(unless (package-installed-p 'use-package)
 | 
					(straight-use-package 'use-package)
 | 
				
			||||||
  (package-install 'use-package))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Theme
 | 
					;; Theme
 | 
				
			||||||
(use-package dracula-theme
 | 
					(use-package dracula-theme
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
  (load-theme 'dracula t)
 | 
					  (load-theme 'dracula t)
 | 
				
			||||||
  (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
 | 
					  (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Instalar use-package en caso de no tenerlo
 | 
					;; Instalar use-package en caso de no tenerlo
 | 
				
			||||||
(unless (package-installed-p 'use-package)
 | 
					;;(unless (package-installed-p 'use-package)
 | 
				
			||||||
  (package-install 'use-package))
 | 
					;;  (package-install 'use-package))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defconst private-dir  (expand-file-name "private" user-emacs-directory))
 | 
					(defconst private-dir  (expand-file-name "private" user-emacs-directory))
 | 
				
			||||||
(defconst temp-dir (format "%s/cache" private-dir)
 | 
					(defconst temp-dir (format "%s/cache" private-dir)
 | 
				
			||||||
@@ -100,8 +110,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;; Configuración cuando es un server
 | 
					;; Configuración cuando es un server
 | 
				
			||||||
(defun setup-daemon ()
 | 
					(defun setup-daemon ()
 | 
				
			||||||
 | 
					  "Carga la configuración del modo daemon."
 | 
				
			||||||
  (message "Corriendo en modo daemon.")
 | 
					  (message "Corriendo en modo daemon.")
 | 
				
			||||||
  (set-face-attribute 'default nil :font "Fira Code Retina")
 | 
					  (set-face-attribute 'default nil :font "Fira Code Retina" :height 112)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Set the fixed pitch face
 | 
					  ;; Set the fixed pitch face
 | 
				
			||||||
  ;;(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina")
 | 
					  ;;(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina")
 | 
				
			||||||
@@ -115,11 +126,9 @@
 | 
				
			|||||||
  ;; Cerrar buffers al cerrar emacsclient
 | 
					  ;; Cerrar buffers al cerrar emacsclient
 | 
				
			||||||
  (add-hook 'delete-frame-functions
 | 
					  (add-hook 'delete-frame-functions
 | 
				
			||||||
            (lambda (frame)
 | 
					            (lambda (frame)
 | 
				
			||||||
              (let* ((window (frame-selected-window frame))
 | 
					              (mapc 'kill-buffer (delq (get-buffer "*dashboard*") (buffer-list)))
 | 
				
			||||||
                     (buffer (and window (window-buffer window))))
 | 
					              ))
 | 
				
			||||||
                (when (and buffer (buffer-file-name buffer))
 | 
					  )
 | 
				
			||||||
                  (kill-buffer buffer)))))
 | 
					 | 
				
			||||||
 )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(if (daemonp)
 | 
					(if (daemonp)
 | 
				
			||||||
    (add-hook 'after-make-frame-functions
 | 
					    (add-hook 'after-make-frame-functions
 | 
				
			||||||
@@ -128,6 +137,7 @@
 | 
				
			|||||||
                  (setup-daemon))))
 | 
					                  (setup-daemon))))
 | 
				
			||||||
  (message "Corriendo en modo normal."))
 | 
					  (message "Corriendo en modo normal."))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;(add-hook 'window-setup-hook 'toggle-frame-maximized t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(load custom-file)
 | 
					(load custom-file)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; lang-go.el --- Configuración para el lenguaje go
 | 
					;;; lang-go.el --- Configuración para el lenguaje go 	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -8,6 +8,7 @@
 | 
				
			|||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-package go-mode
 | 
					(use-package go-mode
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :defer t)
 | 
					  :defer t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(provide 'lang-go)
 | 
					(provide 'lang-go)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; lang-js.el --- Configuración para el lenguaje Javascript
 | 
					;;; lang-js.el --- Configuración para el lenguaje Javascript 	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -9,6 +9,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
(use-package js
 | 
					(use-package js
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :mode
 | 
					  :mode
 | 
				
			||||||
  ("\\.js$" . js-mode)
 | 
					  ("\\.js$" . js-mode)
 | 
				
			||||||
  :config
 | 
					  :config
 | 
				
			||||||
@@ -17,6 +18,7 @@
 | 
				
			|||||||
;; json-mode
 | 
					;; json-mode
 | 
				
			||||||
(use-package json-mode
 | 
					(use-package json-mode
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
  :ensure t
 | 
					  :ensure t
 | 
				
			||||||
  :mode
 | 
					  :mode
 | 
				
			||||||
  ("\\.json$" . json-mode)
 | 
					  ("\\.json$" . json-mode)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; lang-php.el --- Configuración para el lenguaje PHP
 | 
					;;; lang-php.el --- Configuración para el lenguaje PHP 	-*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -7,23 +7,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-package company-php :defer t)
 | 
					 | 
				
			||||||
(use-package ac-php :defer t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(use-package php-mode
 | 
					(use-package php-mode
 | 
				
			||||||
  :defer t
 | 
					  :defer t
 | 
				
			||||||
  :bind ("<C-tab>" . php-doc-block)
 | 
					  :straight t
 | 
				
			||||||
  :config
 | 
					  :hook ((php-mode .  (lambda ()
 | 
				
			||||||
  (add-hook 'php-mode-hook #'(lambda()
 | 
					                       (local-set-key (kbd "C-c d b") 'php-doc-block) ;; atajo para docblock
 | 
				
			||||||
                               (php-enable-default-coding-style)
 | 
					                       (company-mode t) ; habilita company mode
 | 
				
			||||||
                               (company-mode t) ; habilita company mode
 | 
					                       ))
 | 
				
			||||||
                               (ac-php-core-eldoc-setup) ; habilita soporte para ELDoc
 | 
					         ;;(php-mode . lsp)
 | 
				
			||||||
                               (add-to-list 'company-backends 'company-ac-php-backend) ; Agregar ac-php para a company
 | 
					         )
 | 
				
			||||||
                               ))
 | 
					 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-package php-doc-block
 | 
					(use-package php-doc-block
 | 
				
			||||||
  :load-path (lambda() (concat private-dir "/packages/php-doc-block"))
 | 
					  :straight (php-doc-block :type git :host github :repo "moskalyovd/emacs-php-doc-block")
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(provide 'lang-php)
 | 
					(provide 'lang-php)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								configs/lang-rust.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								configs/lang-rust.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					;;; lang-rust.el --- Configuración para el lenguaje PHP  -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package rust-mode
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  (setq rust-format-on-save t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(use-package rustic
 | 
				
			||||||
 | 
					  :defer t
 | 
				
			||||||
 | 
					  :straight t
 | 
				
			||||||
 | 
					  :ensure t
 | 
				
			||||||
 | 
					  :config
 | 
				
			||||||
 | 
					  ;;(setq rustic-lsp-server 'rls)
 | 
				
			||||||
 | 
					  ;;(setq rustic-lsp-client 'lsp)
 | 
				
			||||||
 | 
					  ;;(setq rustic-lsp-client nil)
 | 
				
			||||||
 | 
					  (push 'rustic-clippy flycheck-checkers))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(provide 'lang-rust)
 | 
				
			||||||
 | 
					;;; lang-rust.el ends here
 | 
				
			||||||
							
								
								
									
										40
									
								
								early-init.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								early-init.el
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					;;; early-init.el --- Early startup code -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Copyright (C) 2021 Ryan C. Thompson
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Filename: early-init.el
 | 
				
			||||||
 | 
					;; Author: Ryan C. Thompson
 | 
				
			||||||
 | 
					;; Created: Sat Nov 27 13:40:59 2021 (-0500)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; This file is NOT part of GNU Emacs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
				
			||||||
 | 
					;;
 | 
				
			||||||
 | 
					;;; Commentary:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; This file contains code that must be executed early during Emacs'
 | 
				
			||||||
 | 
					;; startup for proper initialization, as described here:
 | 
				
			||||||
 | 
					;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Early-Init-File.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
				
			||||||
 | 
					;;
 | 
				
			||||||
 | 
					;;; 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 ()
 | 
				
			||||||
 | 
					  (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))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Recommended by
 | 
				
			||||||
 | 
					;; https://github.com/raxod502/straight.el#getting-started to prevent
 | 
				
			||||||
 | 
					;; pacakge.el stepping on straight's toes.
 | 
				
			||||||
 | 
					(setq package-enable-at-startup nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;;; early-init.el ends here
 | 
				
			||||||
							
								
								
									
										37
									
								
								init.el
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								init.el
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
;;; init.el --- Init de emacs ordenado
 | 
					;;; init.el --- Init de emacs ordenado -*- lexical-binding: t -*-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Author: kj <webmaster@outcontrol.net>
 | 
					;; Author: kj <webmaster@outcontrol.net>
 | 
				
			||||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
					;; URL: https://git.kj2.me/kj/confi-emacs-actual
 | 
				
			||||||
@@ -9,16 +9,51 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Mejorar el tiempo de carga
 | 
				
			||||||
 | 
					(setq auto-mode-case-fold nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(unless (or (daemonp) noninteractive)
 | 
				
			||||||
 | 
					  (let ((old-file-name-handler-alist file-name-handler-alist))
 | 
				
			||||||
 | 
					    ;; If `file-name-handler-alist' is nil, no 256 colors in TUI
 | 
				
			||||||
 | 
					    ;; @see https://emacs-china.org/t/spacemacs-centaur-emacs/3802/839
 | 
				
			||||||
 | 
					    (setq file-name-handler-alist
 | 
				
			||||||
 | 
					          (unless (display-graphic-p)
 | 
				
			||||||
 | 
					            '(("\\(?:\\.tzst\\|\\.zst\\|\\.dz\\|\\.txz\\|\\.xz\\|\\.lzma\\|\\.lz\\|\\.g?z\\|\\.\\(?:tgz\\|svgz\\|sifz\\)\\|\\.tbz2?\\|\\.bz2\\|\\.Z\\)\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)?\\'" . jka-compr-handler))))
 | 
				
			||||||
 | 
					    (add-hook 'emacs-startup-hook
 | 
				
			||||||
 | 
					              (lambda ()
 | 
				
			||||||
 | 
					                "Recover file name handlers."
 | 
				
			||||||
 | 
					                (setq file-name-handler-alist
 | 
				
			||||||
 | 
					                      (delete-dups (append file-name-handler-alist
 | 
				
			||||||
 | 
					                                           old-file-name-handler-alist)))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(setq gc-cons-threshold most-positive-fixnum
 | 
				
			||||||
 | 
					      gc-cons-percentage 0.5)
 | 
				
			||||||
 | 
					(add-hook 'emacs-startup-hook
 | 
				
			||||||
 | 
					          (lambda ()
 | 
				
			||||||
 | 
					            "Recover GC values after startup."
 | 
				
			||||||
 | 
					            (setq gc-cons-threshold 800000
 | 
				
			||||||
 | 
					                  gc-cons-percentage 0.1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Cargar configuraciones
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(add-to-list 'load-path (concat user-emacs-directory "configs"))
 | 
					(add-to-list 'load-path (concat user-emacs-directory "configs"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Paquetes base
 | 
				
			||||||
(require 'base)
 | 
					(require 'base)
 | 
				
			||||||
(require 'base-extensions)
 | 
					(require 'base-extensions)
 | 
				
			||||||
(require 'base-functions)
 | 
					(require 'base-functions)
 | 
				
			||||||
 | 
					(require 'base-org)
 | 
				
			||||||
 | 
					(require 'base-lsp)
 | 
				
			||||||
 | 
					(require 'base-company)
 | 
				
			||||||
 | 
					(require 'base-ctags)
 | 
				
			||||||
 | 
					(require 'base-ivy)
 | 
				
			||||||
(require 'base-keys)
 | 
					(require 'base-keys)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Lenguajes
 | 
				
			||||||
(require 'lang-php)
 | 
					(require 'lang-php)
 | 
				
			||||||
(require 'lang-js)
 | 
					(require 'lang-js)
 | 
				
			||||||
(require 'lang-go)
 | 
					(require 'lang-go)
 | 
				
			||||||
 | 
					(require 'lang-rust)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(provide 'init)
 | 
					(provide 'init)
 | 
				
			||||||
;;; init.el ends here
 | 
					;;; init.el ends here
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,120 +0,0 @@
 | 
				
			|||||||
;;; php-doc-block.el --- Php DocBlock generator
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Copyright (C) 2016 Dmitriy Moskalyov
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Author: Dmitriy Moskalyov <moskalyovd@gmail.com>
 | 
					 | 
				
			||||||
;; Keywords: php docblock
 | 
					 | 
				
			||||||
;; Version: 0.0.1
 | 
					 | 
				
			||||||
;; URL: https://github.com/moskalyovd/emacs-php-doc-block
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
;; it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
;; the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
;; (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
;; GNU General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; Commentary:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; This package provides php DocBlock generator.
 | 
					 | 
				
			||||||
;; How to use:
 | 
					 | 
				
			||||||
;; Clone repository from https://github.com/moskalyovd/emacs-php-doc-block
 | 
					 | 
				
			||||||
;; and add to your .emacs(or init.el) file:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; (add-to-list 'load-path "~/.emacs.d/emacs-php-doc-block")
 | 
					 | 
				
			||||||
;; (require 'php-doc-block)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Then bind command 'php-doc-block to any key you like:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; (add-hook 'php-mode-hook
 | 
					 | 
				
			||||||
;;          (lambda ()
 | 
					 | 
				
			||||||
;;              (local-set-key (kbd "<C-tab>") 'php-doc-block)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; Code:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun insert-to-prev-line-and-indent (text)
 | 
					 | 
				
			||||||
  "Insert TEXT to the previous line with indentation."
 | 
					 | 
				
			||||||
  (beginning-of-line)
 | 
					 | 
				
			||||||
  (open-line 1)
 | 
					 | 
				
			||||||
  (insert text)
 | 
					 | 
				
			||||||
  (indent-according-to-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun insert-to-next-line-and-indent (text)
 | 
					 | 
				
			||||||
  "Insert TEXT to the next line with indentation."
 | 
					 | 
				
			||||||
  (end-of-line)
 | 
					 | 
				
			||||||
  (newline-and-indent)
 | 
					 | 
				
			||||||
  (insert text)
 | 
					 | 
				
			||||||
  (indent-according-to-mode))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun php-doc-block-var-or-attr (tag-type type name value is-nullable)
 | 
					 | 
				
			||||||
  "Insert doc block for a property or an attribute"
 | 
					 | 
				
			||||||
  (cond
 | 
					 | 
				
			||||||
   ((and value (= (string-width type) 0))
 | 
					 | 
				
			||||||
    (cond
 | 
					 | 
				
			||||||
     ((string-match "^=\s*\\(array(.*)\\|\\[\.*\]\\)" value) (setq type "array"))
 | 
					 | 
				
			||||||
     ((string-match "^=\s*\[0-9\]*\\.\[0-9\]+$" value)  (setq type "float"))
 | 
					 | 
				
			||||||
     ((string-match "^=\s*\[0-9\]+$" value) (setq type "int"))
 | 
					 | 
				
			||||||
     ((string-match "^=\s*\['\"]" value) (setq type "string"))
 | 
					 | 
				
			||||||
     ((string-match "^=\s*\\(true\\|false\\)" value) (setq type "bool"))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   ((and (= (string-width type) 0) (not value))
 | 
					 | 
				
			||||||
    (setq type "mixed")))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (when (equal is-nullable "?")
 | 
					 | 
				
			||||||
    (setq type (concat type "|null")))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (insert-to-next-line-and-indent (concat "* @" tag-type " " type  " " name)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun php-doc-block-function (name arguments return-type is-return-nullable)
 | 
					 | 
				
			||||||
  "Insert php docblock for function"
 | 
					 | 
				
			||||||
  (insert-to-next-line-and-indent (concat "* " name))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (when (> (string-width arguments) 0)
 | 
					 | 
				
			||||||
    (insert-to-next-line-and-indent "*")
 | 
					 | 
				
			||||||
    (dolist (arg (split-string arguments "\s*,\s*"))
 | 
					 | 
				
			||||||
      (string-match "\s*\\(\[\?\]?\\)\s*\\(\[\\\]?\[a-zA-Z0-9_\]*\\)?\s*\\($\[a-zA-Z0-9_\]+\\)\s*\\(=.*\\)?" arg)
 | 
					 | 
				
			||||||
      (php-doc-block-var-or-attr "param" (match-string 2 arg) (match-string 3 arg) (match-string 4 arg) (match-string 1 arg))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (when (> (string-width return-type) 0)
 | 
					 | 
				
			||||||
    (insert-to-next-line-and-indent "*")
 | 
					 | 
				
			||||||
    (when (equal is-return-nullable "?")
 | 
					 | 
				
			||||||
      (setq return-type (concat return-type "|null")))
 | 
					 | 
				
			||||||
    (insert-to-next-line-and-indent (concat "* @return " return-type))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun php-doc-block-class (type name)
 | 
					 | 
				
			||||||
  "Insert php doc block for class, interface etc."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (insert-to-next-line-and-indent (concat "* " name " " type)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun php-doc-block ()
 | 
					 | 
				
			||||||
  "Insert php docblock."
 | 
					 | 
				
			||||||
  (interactive)
 | 
					 | 
				
			||||||
  (let ((line (thing-at-point 'line)))
 | 
					 | 
				
			||||||
    (insert-to-prev-line-and-indent "/**")
 | 
					 | 
				
			||||||
    (cond
 | 
					 | 
				
			||||||
     ((string-match "function\s*" line)
 | 
					 | 
				
			||||||
      (beginning-of-line)
 | 
					 | 
				
			||||||
      (let ((line (thing-at-point 'line)) (func-defun "") (s-point (point)) (e-point (re-search-forward ";\\|{" nil '(nil))))
 | 
					 | 
				
			||||||
        (goto-char s-point)
 | 
					 | 
				
			||||||
        (if e-point
 | 
					 | 
				
			||||||
            (setq func-defun (replace-regexp-in-string "{\\|\n" "" (buffer-substring s-point e-point)))
 | 
					 | 
				
			||||||
          (progn
 | 
					 | 
				
			||||||
            (end-of-line)
 | 
					 | 
				
			||||||
            (setq func-defun (buffer-substring s-point (point))))
 | 
					 | 
				
			||||||
          )
 | 
					 | 
				
			||||||
        (when (string-match "function\s+\\([A-Za-z0-9_]+\\)\s*(\\(.*\\))\s*:*\s*\\(\[\?\]?\\)\s*\\(\[A-Za-z0-9_\\\]*\\)" func-defun)
 | 
					 | 
				
			||||||
          (php-doc-block-function (match-string 1 func-defun) (match-string 2 func-defun) (match-string 4 func-defun) (match-string 3 func-defun)))))
 | 
					 | 
				
			||||||
     ((string-match "\s*\\([a-zA-Z0-9_]+\\)?\s*\\($\[a-zA-Z0-9_\]+\\)\s*\\(=\[^;\]*\\)?" line)
 | 
					 | 
				
			||||||
      (php-doc-block-var-or-attr "var" "" (match-string 2 line) (match-string 3 line) ""))
 | 
					 | 
				
			||||||
     ((string-match "\\(class\\|interface\\|trait\\|abstract class\\)\s+\\(\[a-zA-Z0-9_\]+\\)" line)
 | 
					 | 
				
			||||||
      (php-doc-block-class (match-string 1 line) (match-string 2 line))))
 | 
					 | 
				
			||||||
    (insert-to-next-line-and-indent "*/")))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(provide 'php-doc-block)
 | 
					 | 
				
			||||||
;;; php-doc-block.el ends here
 | 
					 | 
				
			||||||
							
								
								
									
										12
									
								
								readme.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								readme.md
									
									
									
									
									
								
							@@ -18,9 +18,18 @@ Al igual que la versión anterior, puede ser necesario ejecutar el siguiente com
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Y eso sería todo.
 | 
					Y eso sería todo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Dependencias espefícicas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Algunos lenguajes, ya sea para hacer uso de flycheck, lsp o autocompletado, pueden requerir que instales algunas cosas en específico.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- *Javascript*: Necesita de al menos [deno](https://deno.land/) para LSP y [node](https://nodejs.org/es/) para flycheck, aunque creo que con deno puede bastar para ambos.
 | 
				
			||||||
 | 
					- *PHP*: Requiere instalar php-cli (`apt install php-cli`) para flycheck.
 | 
				
			||||||
 | 
					- *GO*: Necesita etener instalado [go](https://go.dev/) para linter (gofmt) y [gopls](https://github.com/golang/tools/tree/master/gopls) para LSP.
 | 
				
			||||||
 | 
					- *Rust*: Necesita clippy para flycheck y LSP. Pare este útimo igual es posible usar [rust-analyzer](https://rust-analyzer.github.io).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Usar el modo daemon
 | 
					## Usar el modo daemon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
El modo daemon permite a emacs cargar mucho más rápido, puesto que con ello evitas volver a cargar la configuración cada vez que abres un nuevo archivo. Si quieres aprender mas sobre esto, puedes revisarlo en la [dococumentación de emacs](https://www.emacswiki.org/emacs/EmacsAsDaemon).
 | 
					El modo daemon permite a emacs cargar mucho más rápido, puesto que con ello evitas volver a cargar la configuración cada vez que abres un nuevo archivo. Si quieres aprender mas sobre esto, puedes revisarlo en la [documentación de emacs](https://www.emacswiki.org/emacs/EmacsAsDaemon).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Para iniciar el daemon, puedes hacerlo desde la terminal ejecutando:
 | 
					Para iniciar el daemon, puedes hacerlo desde la terminal ejecutando:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +50,6 @@ Finalmente, para abrirlo, es necesaria la usar `emacsclient` en lugar de `emacs`
 | 
				
			|||||||
## Consideraciones
 | 
					## Consideraciones
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Toda la configuración la he realizado en los archivos que están en los archivos de la carpeta config, el archivo `init.el` solo los llama y no guarda nada más aparte de eso.
 | 
					- Toda la configuración la he realizado en los archivos que están en los archivos de la carpeta config, el archivo `init.el` solo los llama y no guarda nada más aparte de eso.
 | 
				
			||||||
- Puede tener activado `evil-mode` (A veces lo activo, pues quiero terminar usándolo siempre), por lo que si no lo quieres tener, recomiendo comentar la línea que lo activa (`(evil-mode 1)`) o directamente toda la sección en `base-extensions.el` que cofigura evil.
 | 
					 | 
				
			||||||
- Se puede activar/desactivar `cua-mode` (`configs/base.el`, línea 49) activado para poder copiar, cortar, pegar y deshacer cambios con las combinaciones típicas en lugar de las de emacs.
 | 
					- Se puede activar/desactivar `cua-mode` (`configs/base.el`, línea 49) activado para poder copiar, cortar, pegar y deshacer cambios con las combinaciones típicas en lugar de las de emacs.
 | 
				
			||||||
- Con F9 puedes abrir y cerrar neotree.
 | 
					- Con F9 puedes abrir y cerrar neotree.
 | 
				
			||||||
- Con C-F11 puedes maximizar/restaurar.
 | 
					- Con C-F11 puedes maximizar/restaurar.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @import
 | 
					 | 
				
			||||||
# key: imp
 | 
					 | 
				
			||||||
# uuid: imp
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@import "`(doom-snippets-text nil t)`$0";
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @import url("//fonts.googleapis...")
 | 
					 | 
				
			||||||
# key: impfont
 | 
					 | 
				
			||||||
# uuid: impfont
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@import url("http://fonts.googleapis.com/css?family=${1:Open+Sans}");
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @import url(...)
 | 
					 | 
				
			||||||
# key: impurl
 | 
					 | 
				
			||||||
# uuid: impurl
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@import url("`(doom-snippets-text nil t)`$0");
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: margin: ...;
 | 
					 | 
				
			||||||
# key: mar
 | 
					 | 
				
			||||||
# uuid: mar
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
margin: ${1:0 auto};
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @media
 | 
					 | 
				
			||||||
# key: med
 | 
					 | 
				
			||||||
# uuid: med
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@media ${1:screen} {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @media (orientation: ?)
 | 
					 | 
				
			||||||
# condition: (looking-back "@media " (line-beginning-position))
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
(orientation: ${1:landscape})
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: @media print { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@media print {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: padding: ...;
 | 
					 | 
				
			||||||
# key: pad
 | 
					 | 
				
			||||||
# uuid: pad
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
padding: ${1:10px};
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: ...: ...;
 | 
					 | 
				
			||||||
# key: :
 | 
					 | 
				
			||||||
# uuid: :
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
${1:prop}: ${2:`%`};
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: append
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
${1:type} = append($1, ${2:elems})
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: ... := ...
 | 
					 | 
				
			||||||
# key: :=
 | 
					 | 
				
			||||||
# uuid: :=
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
${1:x} := ${2:`%`}
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Seong Yong-ju
 | 
					 | 
				
			||||||
# name: const ... = ...
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
const ${1:name}${2: type} = ${3:value}$0
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: ctx context.Context
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
ctx context.Context
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func ...(...) ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func ${1:name}(${2:args})${3: return type} {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func (target) name(args) (results) { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func (${1:target}) ${2:name}(${3:args})${4: return type} {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for $1 {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for key, value := range ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for ${1:key}, ${2:value} := range ${3:target} {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for key, value := range ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for ${1:key}, ${2:value} := range ${3:target} {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for i := 0; i < n; i++ { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for ${1:i} := ${2:0}; $1 < ${3:10}; $1++ {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for $1 {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func ...(...) ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func ${1:name}(${2:args})${3: return type} {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: go
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
go ${1:func}(${2:args})$0
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: go func
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
go func (${1:args}) {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}(${2:values})
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: go func (short)
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
go func (${1:args}) {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}(${2:values})
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Seong Yong-ju
 | 
					 | 
				
			||||||
# name: if ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if ${1:condition} {
 | 
					 | 
				
			||||||
	`%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Seong Yong-ju
 | 
					 | 
				
			||||||
# name: if ... { ... } else { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if ${1:condition} {
 | 
					 | 
				
			||||||
	`%`$2
 | 
					 | 
				
			||||||
} else {
 | 
					 | 
				
			||||||
	$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: if err != nil { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if err != nil {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: import
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
import ${1:package}$0
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: import
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
import ${1:package}$0
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: type ... interface { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
type $1 interface {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func main() { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func main() {
 | 
					 | 
				
			||||||
   $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: map
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
map[${1:KeyType}]${2:ValueType}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func (target) name(args) (results) { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func (${1:target}) ${2:name}(${3:args})${4: return type} {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: package
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
package ${1:`(car (last (split-string (file-name-directory buffer-file-name) "/") 2))`}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: package (short)
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
package ${1:`(car (last (split-string (file-name-directory buffer-file-name) "/") 2))`}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: printf
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
fmt.Printf("$1\n"${2:, ${3:str}})
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: printf
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
fmt.Printf("$1\n"${2:, ${3:str}})
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: println
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
fmt.Println("${1:msg}")$0
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: println (short)
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
fmt.Println("${1:msg}")$0
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: select
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
select {
 | 
					 | 
				
			||||||
      case ${1:cond}:
 | 
					 | 
				
			||||||
      $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: type ... struct { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
type $1 struct {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: switch
 | 
					 | 
				
			||||||
# key: switch
 | 
					 | 
				
			||||||
# uuid: switch
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
switch {
 | 
					 | 
				
			||||||
    case ${1:cond}:
 | 
					 | 
				
			||||||
         $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: func Test...() { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
func Test${1:Name}(${2:t *testing.T}) {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: var
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
var ${1:name} ${2:type} = ${3:value}$0
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name : for ... { ... }
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for $1 {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: http request writer
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
w http.ResponseWriter, r *http.Request
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
 | 
					 | 
				
			||||||
# name: <dd> ... </dd>
 | 
					 | 
				
			||||||
# group: list
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<dd>$1</dd>
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
 | 
					 | 
				
			||||||
# name: <dl> ... </dl>
 | 
					 | 
				
			||||||
# group: list
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<dl>
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
</dl>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: Doctype HTML 5
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: DocType XHTML 1.0 frameset
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: DocType XHTML 1.1
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: DocType XHTML 1.0 Strict
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: DocType XHTML 1.0 Transitional
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
 | 
					 | 
				
			||||||
# name: <dt> ... </dt>
 | 
					 | 
				
			||||||
# group: list
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<dt>$1</dt>
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <form method="..." id="..." action="..."></form>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<form method="$1" id="$2" action="$3">
 | 
					 | 
				
			||||||
  $0
 | 
					 | 
				
			||||||
</form>
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <html>...</html>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<html>
 | 
					 | 
				
			||||||
  $0
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <html xmlns="...">...</html>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${1:en}" lang="${2:en}">
 | 
					 | 
				
			||||||
  $0
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: <link rel="stylesheet" ... />
 | 
					 | 
				
			||||||
# key: link
 | 
					 | 
				
			||||||
# uuid: link
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<link rel="${1:stylesheet}" href="${2:url}" type="${3:text/css}" media="${4:screen}" />
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: <!--[if IE]><link stylesheet="..." /><![endif]-->
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<!--[if IE${1: version}]>
 | 
					 | 
				
			||||||
<link rel="${2:stylesheet}" href="${3:url}" type="${4:text/css}" media="${5:screen}" />
 | 
					 | 
				
			||||||
<![endif]-->
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: <a href="mailto:...@...">...</a>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<a href="mailto:${1:john@doe.com}">`(doom-snippets-format "%n%s%n")`$0</a>
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor : Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# name: <meta name="..." content="..." />
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<meta name="${1:generator}" content="${2:content}" />
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <meta http-equiv="..." content="..." />
 | 
					 | 
				
			||||||
# group: meta
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<meta name="${1:Content-Type}" content="${2:text/html; charset=UTF-8}" />
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: <script type="text/javascript">...</script>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<script type="text/javascript">
 | 
					 | 
				
			||||||
  $0
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: <script type="text/javascript" src="..."></script>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<script type="text/javascript" src="$1"></script>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <textarea ...></textarea>
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<textarea name="$1" id="$2" rows="$3" cols="$4" tabindex="$5"></textarea>
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# contributor: Jimmy Wu <frozenthrone88@gmail.com>
 | 
					 | 
				
			||||||
# name: <th>...</th>
 | 
					 | 
				
			||||||
# group: table
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
<th$1>$2</th>
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: param
 | 
					 | 
				
			||||||
# key: @param
 | 
					 | 
				
			||||||
# uuid: @param
 | 
					 | 
				
			||||||
# condition: (sp-point-in-comment)
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@param ${1:paramater} $0
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: return
 | 
					 | 
				
			||||||
# key: @return
 | 
					 | 
				
			||||||
# uuid: @return
 | 
					 | 
				
			||||||
# condition: (sp-point-in-comment)
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
@return ${1:description}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: apr_assert
 | 
					 | 
				
			||||||
# key: apr_assert
 | 
					 | 
				
			||||||
# uuid: apr_assert
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if (Globals.useAssertions) {
 | 
					 | 
				
			||||||
   ${1:assert ..};
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: class
 | 
					 | 
				
			||||||
# key: class
 | 
					 | 
				
			||||||
# uuid: class
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
${1:public }class ${2:`(f-base buffer-file-name)`} {
 | 
					 | 
				
			||||||
           $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: constructor
 | 
					 | 
				
			||||||
# key: __init__
 | 
					 | 
				
			||||||
# uuid: __init__
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
public ${1:`(f-base buffer-file-name)`}($2) {
 | 
					 | 
				
			||||||
       $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: doc
 | 
					 | 
				
			||||||
# key: /*
 | 
					 | 
				
			||||||
# uuid: /*
 | 
					 | 
				
			||||||
# condition: (not (use-region-p))
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * $0
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: equals
 | 
					 | 
				
			||||||
# key: eq
 | 
					 | 
				
			||||||
# uuid: eq
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
public boolean equals(${1:Class} other) {
 | 
					 | 
				
			||||||
       $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: file_class
 | 
					 | 
				
			||||||
# key: file
 | 
					 | 
				
			||||||
# uuid: file
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
public class ${1:`(file-name-base
 | 
					 | 
				
			||||||
                    (or (buffer-file-name)
 | 
					 | 
				
			||||||
                        (buffer-name)))`} {
 | 
					 | 
				
			||||||
  $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: for
 | 
					 | 
				
			||||||
# key: for
 | 
					 | 
				
			||||||
# uuid: for
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for (${1:int i = 0}; ${2:i < N}; ${3:i++}) {
 | 
					 | 
				
			||||||
    `%`$0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: foreach
 | 
					 | 
				
			||||||
# key: fore
 | 
					 | 
				
			||||||
# uuid: fore
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
for (${1:Object} ${2:var} : ${3:iterator}) {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: if
 | 
					 | 
				
			||||||
# key: if
 | 
					 | 
				
			||||||
# uuid: if
 | 
					 | 
				
			||||||
# condition: (not (sp-point-in-string-or-comment))
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if (${1:true}) {
 | 
					 | 
				
			||||||
   $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: ife
 | 
					 | 
				
			||||||
# key: ife
 | 
					 | 
				
			||||||
# uuid: ife
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
if (${1:true}) {
 | 
					 | 
				
			||||||
    `%`$2
 | 
					 | 
				
			||||||
} else {
 | 
					 | 
				
			||||||
    $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: import
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
import ${1:System.};
 | 
					 | 
				
			||||||
$0
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: interface
 | 
					 | 
				
			||||||
# key: interface
 | 
					 | 
				
			||||||
# uuid: interface
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
interface ${1:`(f-base buffer-file-name)`} {
 | 
					 | 
				
			||||||
          $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: iterator
 | 
					 | 
				
			||||||
# key: iterator
 | 
					 | 
				
			||||||
# uuid: iterator
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
public Iterator<${1:type}> iterator() {
 | 
					 | 
				
			||||||
       $0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
# -*- mode: snippet -*-
 | 
					 | 
				
			||||||
# name: javadoc
 | 
					 | 
				
			||||||
# key: doc
 | 
					 | 
				
			||||||
# uuid: doc
 | 
					 | 
				
			||||||
# --
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * $0
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user