Compare commits
	
		
			71 Commits
		
	
	
		
			evil
			...
			be00c17615
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| be00c17615 | |||
| a6c1c113df | |||
| 23b14da665 | |||
| fb41d46922 | |||
| 9ee088a832 | |||
| a27d677716 | |||
| cf059895f9 | |||
| 5fa858af78 | |||
| ee4c9c351f | |||
| d8f91e3dac | |||
| 88c8049a6f | |||
| cf49ec2618 | |||
| 4aa5217915 | |||
| eea36dbe80 | |||
| fe46f716eb | |||
| cea7e3ace6 | |||
| e6e6c20c9c | |||
| 787e23525c | |||
| 5a889964e7 | |||
| b7873f48de | |||
| 93bee419e8 | |||
| b59e654bbd | |||
| d50f434788 | |||
| ac79a60aee | |||
| cb445f95c0 | |||
| 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 | 
							
								
								
									
										20
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,22 @@ | ||||
| elpa | ||||
| transient | ||||
| eln-cache | ||||
| private/.* | ||||
| private/cache | ||||
| private/ | ||||
| bookmarks | ||||
| .lsp-session* | ||||
| projectile-bookmarks.eld | ||||
| .org-id-locations | ||||
| org-roam.db | ||||
| lsp-cache/ | ||||
| .cache/ | ||||
| url/ | ||||
| straight/ | ||||
| amx-items | ||||
| projects | ||||
| speed-type/ | ||||
| var/ | ||||
| .dap-breakpoints | ||||
| eclipse.jdt.ls/ | ||||
| workspace/ | ||||
| /.extension/ | ||||
| /diary | ||||
|   | ||||
							
								
								
									
										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.5              ; mostrar autocompletado luego de medio segundo mostrar | ||||
|         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 | ||||
							
								
								
									
										68
									
								
								configs/base-ctags.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								configs/base-ctags.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| ;;; 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 | ||||
|     (setq citre-readtags-program "/usr/bin/readtags" | ||||
|           citre-ctags-program "/usr/bin/ctags" | ||||
|           citre-default-create-tags-file-location 'global-cache | ||||
|           citre-use-project-root-when-creating-tags t | ||||
|           citre-prompt-language-for-ctags-command t) | ||||
|  | ||||
|     (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 (if (bound-and-true-p lsp-mode) | ||||
|                             (lsp-completion-at-point)))) | ||||
|         (if (and lsp-result | ||||
|                  (try-completion | ||||
|                   (buffer-substring (nth 0 lsp-result) | ||||
|                                     (nth 1 lsp-result)) | ||||
|                   (nth 2 lsp-result))) | ||||
|             lsp-result | ||||
|           (citre-completion-at-point)))) | ||||
|  | ||||
|     (defun enable-lsp-citre-capf-backend () | ||||
|       "Enable the lsp + Citre capf backend in current buffer." | ||||
|       (add-hook 'completion-at-point-functions #'lsp-citre-capf-function nil t)) | ||||
|  | ||||
|     (add-hook 'citre-mode-hook #'enable-lsp-citre-capf-backend) | ||||
|   )) | ||||
|  | ||||
| (provide '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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -7,468 +7,202 @@ | ||||
|  | ||||
| ;;; 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 | ||||
| (use-package all-the-icons :defer t) | ||||
|  | ||||
| ;; 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 | ||||
| (use-package all-the-icons | ||||
|   :defer t | ||||
|   :straight t) | ||||
|  | ||||
| ;; Reemplazar mejorado | ||||
| (use-package anzu | ||||
|   :defer | ||||
|   :ensure t | ||||
|   :hook | ||||
|   (prog-mode . highlight-numbers-mode)) | ||||
|   :straight t | ||||
|   :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 | ||||
|         dashboard-set-heading-icons t | ||||
|         dashboard-set-file-icons t | ||||
|         dashboard-week-agenda nil | ||||
|         dashboard-agenda-time-string-format "%Y-%m-%d %H:%M") | ||||
|   (setq dashboard-startup-banner | ||||
|         (expand-file-name "duck-small.png" user-emacs-directory)) | ||||
|   (setq dashboard-items '( | ||||
|                           (agenda . 10) | ||||
|                           ;;(recents . 10) | ||||
|                           )) | ||||
|   ) | ||||
|  | ||||
| ;; Mover líneas o regiones | ||||
| (use-package drag-stuff | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook | ||||
|   (after-init . drag-stuff-global-mode) | ||||
|   :config | ||||
|   (drag-stuff-global-mode 1) | ||||
|   (drag-stuff-define-keys)) | ||||
|  | ||||
| ;; Recentf - Guarda registro de los archivos abiertos recientemente | ||||
| (use-package recentf | ||||
| ;; La línea bonita esa de abajo | ||||
| (use-package doom-modeline | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :ensure t | ||||
|   :hook (after-init . doom-modeline-mode) | ||||
|   :config | ||||
|   (setq recentf-save-file | ||||
|         (recentf-expand-file-name (concat temp-dir "/recentf"))) | ||||
|   (recentf-mode 1)) | ||||
|  | ||||
|  | ||||
| ;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir. | ||||
| (use-package saveplace | ||||
|   :config | ||||
|   (save-place-mode 1) | ||||
|   (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))) | ||||
|   (setq doom-modeline-project-detection 'auto | ||||
|         doom-modeline-buffer-file-name-style 'relative-from-project | ||||
|         doom-modeline-major-mode-color-icon t | ||||
|         doom-modeline-buffer-modification-icon t | ||||
|         doom-modeline-indent-info nil | ||||
|         doom-modeline-persp-name t)) | ||||
|  | ||||
| ;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás) | ||||
| (use-package emmet-mode | ||||
|   :config | ||||
|   (add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes | ||||
|   (add-hook 'html-mode-hook 'emmet-mode) | ||||
|   (add-hook 'css-mode-hook  'emmet-mode) | ||||
|   ) | ||||
|  | ||||
| ;; Modo markdown | ||||
| (use-package markdown-mode :defer t) | ||||
|  | ||||
| ;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit. | ||||
| (use-package git-gutter | ||||
|   :config | ||||
|   (global-git-gutter-mode +1)                  ; Habilitar git gutter de manera global | ||||
|   ) | ||||
|  | ||||
| ;; Mejorando el scroll | ||||
| (use-package smooth-scrolling | ||||
|   :config | ||||
|   (smooth-scrolling-mode 1)                    ; Cambia el salto de líneas cuando el cursor llega al final. | ||||
|   (setq mouse-wheel-scroll-amount | ||||
|         '(8 ((shift) . 1) ((control) . nil)))    ; Cambia el scroll a 8 líneas a la vez, 1 cuando se preciona SHIFT y saltos de página cuando presionas CTRL | ||||
|   (setq mouse-wheel-progressive-speed nil)     ; Deshabilita la velocidad progresiva del scroll (mientras más scroll haces, mas rápido va) | ||||
|   ) | ||||
|  | ||||
| ;; Esa línea bonita de abajo del editor que dice cosas xD | ||||
| (use-package telephone-line | ||||
|   :defer t | ||||
|   :custom | ||||
|   (telephone-line-primary-left-separator 'telephone-line-cubed-left) | ||||
|   (telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left) | ||||
|   (telephone-line-primary-right-separator 'telephone-line-cubed-right) | ||||
|   (telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) | ||||
|   (telephone-line-evil-use-short-tag t) | ||||
|  | ||||
|   (setq telephone-line-lhs | ||||
|         '((evil   . (telephone-line-evil-tag-segment)) | ||||
|           (accent . (telephone-line-vc-segment | ||||
|                      telephone-line-erc-modified-channels-segment | ||||
|                      telephone-line-process-segment)) | ||||
|           (nil    . (;telephone-line-minor-mode-segment | ||||
|                      telephone-line-buffer-segment)))) | ||||
|   (setq telephone-line-rhs | ||||
|         '((nil    . (telephone-line-misc-info-segment)) | ||||
|           (accent . (telephone-line-major-mode-segment)) | ||||
|           (evil   . (telephone-line-airline-position-segment)))) | ||||
|   (telephone-line-mode t) | ||||
|   ) | ||||
|  | ||||
| ;; Hacer uso de Emacs con las ventajas de vim. | ||||
| (use-package evil | ||||
|   :defer t | ||||
|   :init | ||||
|   (evil-mode 1) | ||||
|   (setq evil-want-keybinding nil) | ||||
|   :config | ||||
|   (setq evil-want-integration t) | ||||
|   (setq evil-want-keybinding nil) | ||||
|   (setq evil-want-C-u-scroll t) | ||||
|   (setq evil-want-C-i-jump nil) | ||||
|   (setq evil-want-fine-undo t) | ||||
|   (setq evil-respect-visual-line-mode t) | ||||
|   (setq evil-toggle-key "C-'") ; Cambiar toggle-key cambiar entre evil states y emacs. | ||||
|   ;;  (setq evil-default-state 'emacs) ; Modo por defecto en emacs mode | ||||
|   (define-key evil-normal-state-map (kbd "g b") 'evil-jump-backward) | ||||
|  | ||||
|   ;; Seleccionar todo con C-a en insert mode | ||||
|   (evil-global-set-key 'insert (kbd "C-a") 'mark-whole-buffer) | ||||
|  | ||||
|   ;; ** | ||||
|   ;; Atajos personalizados con leader key | ||||
|   ;; ** | ||||
|  | ||||
|   ;; Definiendo la leader key | ||||
|   (evil-set-leader 'normal (kbd "SPC")) | ||||
|   (evil-set-leader 'visual (kbd "SPC")) | ||||
|  | ||||
|   ;; Atajos para counsel-projectile y switch buffer con leader key | ||||
|   (evil-define-key 'normal 'global (kbd "<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) | ||||
|   :straight t | ||||
|   :hook (html-mode . emmet-mode)) | ||||
|  | ||||
| ;; Revisar sintaxis en vivo | ||||
| (use-package flycheck | ||||
|   ;; :diminish flycheck-mode | ||||
|   :defer t | ||||
|   :hook (after-init . global-flycheck-mode) ; Habilitar flycheck en todos los modos | ||||
|   :straight t | ||||
|   :hook (after-init . global-flycheck-mode) ; Habilitar flycheck de manera global | ||||
|   ) | ||||
|  | ||||
| ;; Mostrar los errores de flycheck en un pop up | ||||
| (use-package flycheck-popup-tip | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (flycheck-mode . flycheck-popup-tip-mode)) | ||||
|  | ||||
| ;; Un bonito y sencillo panel de inicio | ||||
| (use-package dashboard | ||||
| ;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit. | ||||
| (use-package git-gutter | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook | ||||
|   (after-init . global-git-gutter-mode)) | ||||
|  | ||||
| (use-package gcmh | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :init | ||||
|   (setq gcmh-high-cons-threshold 100000000) | ||||
|   (gcmh-mode 1)) | ||||
|  | ||||
| ;; 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 | ||||
|   (setq dashboard-set-file-icons t) | ||||
|   (setq dashboard-startup-banner | ||||
|         (expand-file-name "duck-small.png" user-emacs-directory)) | ||||
|   (setq dashboard-items '( | ||||
|                           ;;(recents . 5) | ||||
|                           ;;(projects . 5) | ||||
|                           )) | ||||
|   (dashboard-setup-startup-hook) | ||||
|   (setq speed-type-gb-book-list '(66867 66866 66591 57303) | ||||
|         speed-type-min-chars 500 | ||||
|         speed-type-max-chars 600)) | ||||
|  | ||||
| ;; Code Folding | ||||
| (use-package origami | ||||
|   :defer t | ||||
|   :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. | ||||
| (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)) | ||||
|  | ||||
| ;; Paquete para manejo de proyectos | ||||
| (use-package projectile | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :bind ("C-c p" . projectile-command-map) | ||||
|   :diminish projectile-mode | ||||
|   :config | ||||
|   (projectile-mode) | ||||
|   :custom ((projectile-completion-system 'ivy)) | ||||
|   :bind-keymap | ||||
|   ("C-c p" . projectile-command-map) | ||||
|   :hook (after-init . projectile-mode) | ||||
|   :init | ||||
|   (setq projectile-mode-line-prefix "" | ||||
|         projectile-sort-order 'recentf | ||||
|         projectile-use-git-grep t) | ||||
|   :config | ||||
|   ;; Rutas de archivos temporales. | ||||
|   (setq projectile-cache-file (expand-file-name "projectile.cache" temp-dir)) | ||||
|   (setq projectile-known-projects-file (expand-file-name | ||||
|                                         "projectile-bookmarks.eld" temp-dir)) | ||||
|   ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git iniciado). | ||||
|   ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git inicio). | ||||
|   (when (file-directory-p "~/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 | ||||
|                                           projectile-project-search-path | ||||
|                                           '("~/Docker/Nginx")))) | ||||
|   (when (file-directory-p "~/Docker/Nginx2") | ||||
|     (setq projectile-project-search-path (append | ||||
|                                           projectile-project-search-path | ||||
|                                           '("~/Docker/Nginx2")))) | ||||
|   (when (file-directory-p "~/Docker/NginxTwitch") | ||||
|     (setq projectile-project-search-path (append | ||||
|                                           projectile-project-search-path | ||||
|                                           '("~/Docker/NginxTwitch")))) | ||||
|                                           '("~/mnt/Nginx")))) | ||||
|   (setq projectile-switch-project-action #'projectile-dired) ; Usar dired cuando se elija un proyecto. | ||||
|  | ||||
|   ;; Cambiar el título de la ventana de emacs | ||||
| @@ -483,168 +217,113 @@ | ||||
|         ) | ||||
|    ) | ||||
|  | ||||
| ;; Autocompletado de proyectos en counsel (projectile) | ||||
| (use-package counsel-projectile | ||||
| ;; Recentf - Guarda registro de los archivos abiertos recientemente | ||||
| (use-package recentf | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :bind ("C-x C-r" . recentf-open-files) | ||||
|   :config | ||||
|   (global-set-key (kbd "C-x v") 'counsel-projectile) | ||||
|   (counsel-projectile-mode)) | ||||
|   (setq recentf-save-file | ||||
|         (recentf-expand-file-name (concat temp-dir "/recentf"))) | ||||
|   (recentf-mode 1)) | ||||
|  | ||||
| ;; Mostrar info del panel inferior de otra manera | ||||
| (use-package ivy | ||||
| ;; Busqueda rápida con ripgrep | ||||
| (use-package rg | ||||
|   :defer t | ||||
|   :bind | ||||
|   ("C-x s" . swiper) | ||||
|   ("C-x C-r" . ivy-resume) | ||||
|   ("C-x b" . ivy-switch-buffer) | ||||
|   :straight t | ||||
|   :defines projectile-command-map | ||||
|   :hook (after-init . rg-enable-default-bindings) | ||||
|   :bind (:map rg-global-map | ||||
|          ("c" . rg-dwim-current-dir) | ||||
|          ("f" . rg-dwim-current-file) | ||||
|          ("m" . rg-menu)) | ||||
|   :init (setq rg-group-result t | ||||
|               rg-show-columns t) | ||||
|   :config | ||||
|   (ivy-mode 1) | ||||
|   (setq ivy-use-virtual-buffers nil) | ||||
|   (define-key ivy-minibuffer-map (kbd "TAB") 'ivy-partial) | ||||
|   (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) | ||||
|   (define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit) | ||||
|   ) | ||||
|   (cl-pushnew '("tmpl" . "*.tmpl") rg-custom-type-aliases) | ||||
|  | ||||
| ;; Iconos en Ivy (allthe icons) | ||||
| (use-package all-the-icons-ivy-rich | ||||
|   :ensure t | ||||
|   :init (all-the-icons-ivy-rich-mode 1) | ||||
|   (with-eval-after-load 'projectile | ||||
|     (bind-key "s R" #'rg-project projectile-command-map))) | ||||
|  | ||||
| ;; 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 | ||||
|   (setq all-the-icons-ivy-rich-color-icon t)) | ||||
|  | ||||
| (use-package ivy-rich | ||||
|   :ensure t | ||||
|   :init (ivy-rich-mode 1)) | ||||
|  | ||||
| ;; Cuando iniicias un atajo de teclas te muestra las posibilidades | ||||
| (use-package which-key | ||||
|   :config | ||||
|   (which-key-mode)) | ||||
|   (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))) | ||||
|  | ||||
| ;; Autocompletado de parentesis, corchetes, llaves, etc. | ||||
| (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 | ||||
|   :pin org | ||||
|   :hook (org-mode . efs/org-mode-setup) | ||||
|   :straight t | ||||
|   :hook (after-init . smartparens-global-mode)) | ||||
|  | ||||
| ;; Mejorando el scroll | ||||
| (use-package smooth-scrolling | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (after-init . smooth-scrolling-mode) | ||||
|   :config | ||||
|   (setq org-ellipsis " ▾") | ||||
|   (setq org-hide-emphasis-markers t) | ||||
|   (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) | ||||
|   ) | ||||
|  | ||||
|   (setq org-agenda-start-with-log-mode t) | ||||
|   (setq org-log-done 'time) | ||||
|   (setq org-log-into-drawer t) | ||||
| (use-package silicon | ||||
|   :ensure t | ||||
|   :straight (silicon :type git :host github :repo "iensu/silicon-el")) | ||||
|  | ||||
| (use-package tree-sitter | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (after-init . global-tree-sitter-mode) | ||||
|   :config | ||||
|   (add-to-list 'tree-sitter-major-mode-language-alist '(rustic-mode . rust)) | ||||
|   ) | ||||
|  | ||||
|   ;; 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")) | ||||
|         ) | ||||
| (use-package tree-sitter-langs | ||||
|   :straight t | ||||
|   :after tree-sitter) | ||||
|  | ||||
|   ;; Archivos a usarse en org-agenda | ||||
|   (setq org-agenda-files | ||||
|         '("~/Proyectos/ORGenda/Ideas.org" | ||||
|           "~/Proyectos/ORGenda/IdeasTwitch.org" | ||||
|           "~/Proyectos/ORGenda/Proyectos.org" | ||||
|           "~/Proyectos/ORGenda/Tareas.org") | ||||
|         ) | ||||
| ;; Terminal | ||||
| (use-package vterm :ensure t :defer t :straight t) | ||||
|  | ||||
|   ;; Archivos entre los que se moverán las tareas | ||||
|   (setq org-refile-targets | ||||
|         '(("Archivo.org" :maxlevel . 1) | ||||
|           ("Proyectos.org" :maxlevel . 1) | ||||
|           ("IdeasTwitch.org" :maxlevel . 1) | ||||
|           ("Ideas.org" :maxlevel . 1) | ||||
|           ("Tareas.org" :maxlevel . 1))) | ||||
| ;; Cuando iniicias un atajo de teclas te muestra las posibilidades | ||||
| (use-package which-key | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (after-init . which-key-mode)) | ||||
|  | ||||
|   ;; Guardar los archivos cuando se muevan tareas entre ellos | ||||
|   (advice-add 'org-refile :after 'org-save-all-org-buffers) | ||||
| ;; Restaurar el estado de los frames | ||||
| (use-package winner | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (after-init . winner-mode)) | ||||
|  | ||||
|   (setq org-capture-templates | ||||
|         `(("t" "Tareas / Projectos") | ||||
|           ("tt" "Tareas" entry (file+olp "~/Proyectos/ORGenda/Tareas.org") | ||||
|            "* TODO %?\n  %U\n  %a\n  %i" :empty-lines 1) | ||||
|           ("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 | ||||
| ;; Permitir snippets | ||||
| (use-package yasnippet | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :ensure t | ||||
|   :bind (:map yas-minor-mode-map | ||||
|               ("TAB" . nil) | ||||
|               ("<tab>" . nil)) ;; unbid tab for yasnippets | ||||
|   :custom | ||||
|   (yas-prompt-functions '(yas-completing-prompt)) | ||||
|   :hook | ||||
|   (org-mode . org-superstar-mode) | ||||
|   :config | ||||
|   (setq org-superstar-special-todo-items t) | ||||
|   ) | ||||
|   ((prog-mode feature-mode)  . yas-minor-mode-on) | ||||
|   (html-mode . yas-minor-mode)) | ||||
|  | ||||
| (defun efs/org-mode-visual-fill () | ||||
|   "Visual mode fill columns." | ||||
|   (visual-fill-column-mode 1)) | ||||
| ;; Coleción de snippets | ||||
| (use-package yasnippet-snippets | ||||
|   :ensure t | ||||
|   :defer t | ||||
|   :straight t) | ||||
|  | ||||
| (use-package visual-fill-column | ||||
|   :hook (org-mode . efs/org-mode-visual-fill) | ||||
|   :config | ||||
|   ;; Tamaño de la columna | ||||
|   (setq visual-fill-column-width 150) | ||||
|   ;; Centrar el texto | ||||
|   (setq-default visual-fill-column-center-text t) | ||||
|   ) | ||||
| (use-package esup | ||||
|   :ensure t | ||||
|   :straight t) | ||||
|  | ||||
| (provide 'base-extensions) | ||||
| ;;; base-extensions.el ends here | ||||
|   | ||||
| @@ -1,46 +1,61 @@ | ||||
| (provide 'base-functions) | ||||
| ;;; base-functions.el --- Configuración de org-mode	-*- lexical-binding: t -*- | ||||
|  | ||||
| ;; Buscar el texto actualmente seleccionado | ||||
| (defun kj-isearch-with-region () | ||||
|   "Use region as the isearch text." | ||||
|   (when mark-active | ||||
|     (let ((region (funcall region-extract-function nil))) | ||||
|       (deactivate-mark) | ||||
|       (isearch-push-state) | ||||
|       (isearch-yank-string region)))) | ||||
| ;; Author: kj <webmaster@outcontrol.net> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
|  | ||||
| (add-hook 'isearch-mode-hook #'kj-isearch-with-region) | ||||
| ;;; Commentary: | ||||
|  | ||||
| ;;; Code: | ||||
|  | ||||
| ;; Crear captura SVG del frame atual. Fuente: https://www.reddit.com/r/emacs/comments/idz35e/emacs_27_can_take_svg_screenshots_of_itself/ | ||||
| (defun screenshot-svg () | ||||
|   "Save a screenshot of the current frame as an SVG image. | ||||
| Saves to a temp file and puts the filename in the kill ring." | ||||
|   (interactive) | ||||
|   (let* ((filename (make-temp-file "Emacs" nil ".svg")) | ||||
|          (data (x-export-frames nil 'svg))) | ||||
|     (with-temp-file filename | ||||
|       (insert data)) | ||||
|     (kill-new filename) | ||||
|     (message filename))) | ||||
|  | ||||
| ;; Comentar línea o región | ||||
| (defun comment-or-uncomment-region-or-line () | ||||
|     "Comments or uncomments the region or the current line if there's no active region." | ||||
|     (interactive) | ||||
|     (let (beg end) | ||||
|         (if (region-active-p) | ||||
|             (setq beg (region-beginning) end (region-end)) | ||||
|             (setq beg (line-beginning-position) end (line-end-position))) | ||||
|         (comment-or-uncomment-region beg end) | ||||
|         ;;(next-line) ;; saltar a la siguiente línea | ||||
|         )) | ||||
|  | ||||
| ;; Duplicar la línea actual | ||||
| (defun duplicate-current-line (&optional n) | ||||
|   "duplicate current line, make more than 1 copy given a numeric argument" | ||||
|   (interactive "p") | ||||
|   (save-excursion | ||||
|     (let ((nb (or n 1)) | ||||
|     	  (current-line (thing-at-point 'line))) | ||||
|       ;; when on last line, insert a newline first | ||||
|       (when (or (= 1 (forward-line 1)) (eq (point) (point-max))) | ||||
|     	(insert "\n")) | ||||
|  | ||||
|       ;; now insert as many time as requested | ||||
|       (while (> n 0) | ||||
|     	(insert current-line) | ||||
|     	(decf n))))) | ||||
|  | ||||
| ;; Borrar espacios, tabs y saltos de línea innecesarios al guardar | ||||
| (add-hook 'before-save-hook 'delete-trailing-whitespace) | ||||
|  | ||||
| ;; Verifica si es está instalado alltheicons (útil para ver si se usa o no íconos) | ||||
| (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)))) | ||||
|  | ||||
| ;; 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) | ||||
| (defun toggle-transparency () | ||||
|   (interactive) | ||||
|   (let ((alpha (frame-parameter nil 'alpha))) | ||||
|     (set-frame-parameter | ||||
|      nil 'alpha | ||||
|      (if (eql (cond ((numberp alpha) alpha) | ||||
|                     ((numberp (cdr alpha)) (cdr alpha)) | ||||
|                     ;; Also handle undocumented (<active> <inactive>) form. | ||||
|                     ((numberp (cadr alpha)) (cadr alpha))) | ||||
|               100) | ||||
|          '(60 . 60) '(100 . 100))))) | ||||
|  | ||||
| (defun transparency (value) | ||||
|   "Sets the transparency of the frame window. 0=transparent/100=opaque" | ||||
|   (interactive "nTransparency Value 0 - 100 opaque:") | ||||
|   (set-frame-parameter (selected-frame) 'alpha value)) | ||||
| (provide 'base-functions) | ||||
| ;;; base-functions.el ends here. | ||||
|   | ||||
							
								
								
									
										442
									
								
								configs/base-ivy.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										442
									
								
								configs/base-ivy.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,442 @@ | ||||
| ;;; 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) | ||||
|          ([remap jump-to-register] . counsel-register) | ||||
|  | ||||
|          ("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) | ||||
|          ("C-c <C-SPC>" . counsel-mark-ring) | ||||
|  | ||||
|          :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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -11,19 +11,33 @@ | ||||
|  | ||||
| ;;; 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-a") 'mark-whole-buffer)           ; Seleccionar todo con CTRL+A. | ||||
|  | ||||
| (global-set-key (kbd "M-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-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 "C-S-c") | ||||
|                 'comment-or-uncomment-region-or-line)     ; Comentar/descomentar línea o selección | ||||
| (global-set-key (kbd "C-<f11>") 'toggle-frame-maximized)  ; Maximizar / restaurar | ||||
| (global-set-key (kbd "C-S-d") 'duplicate-current-line)    ; Duplicar línea | ||||
|  | ||||
| (global-set-key (kbd "C-c a") 'org-agenda)                ; Abrir la agenda. | ||||
| (global-set-key (kbd "C-c c") 'org-capture)               ; Abrir la crear una entrada. | ||||
| ;; Cambios rápidos de major modes | ||||
| (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 | ||||
|  | ||||
| ;; Deactivar el abrir *messages* al cliquear en el minibuffer | ||||
| (define-key minibuffer-inactive-mode-map [mouse-1] #'ignore) | ||||
|  | ||||
| (provide 'base-keys) | ||||
| ;;; base-keys.el ends here | ||||
|   | ||||
							
								
								
									
										234
									
								
								configs/base-lsp.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										234
									
								
								configs/base-lsp.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,234 @@ | ||||
| ;;; 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)))) | ||||
|          (html-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-links nil | ||||
|               lsp-enable-symbol-highlighting nil | ||||
|               lsp-enable-semantic-highlighting nil | ||||
|               cls-sem-highlight-method nil | ||||
|               lsp-enable-text-document-color nil | ||||
|               lsp-lens-enable nil | ||||
|               lsp-auto-guess-root t | ||||
|  | ||||
|               lsp-log-io nil | ||||
|               lsp-idle-delay 0.5 | ||||
|               lsp-diagnostic-package :none ; Evitar que lsp conecte con flycheck para evitar que se congele | ||||
|  | ||||
|               lsp-enable-indentation nil | ||||
|               lsp-enable-on-type-formatting nil) | ||||
|   :config | ||||
|   (with-no-warnings | ||||
|     ;; Remove php extension on form lsp | ||||
|     (setq lsp-language-id-configuration | ||||
|         (remove '(".*\\.php$" . "php") lsp-language-id-configuration)) | ||||
|  | ||||
|     ;; 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-code-actions nil | ||||
|         lsp-ui-sideline-show-symbol nil | ||||
|         lsp-ui-sideline-show-hover nil | ||||
|         lsp-ui-sideline-delay 0.5) | ||||
|   (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) | ||||
|   ) | ||||
|  | ||||
| ;; Integración con ivy | ||||
| (use-package lsp-ivy | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :after lsp-mode | ||||
|   :bind (:map lsp-mode-map | ||||
|               ([remap xref-find-apropos] . lsp-ivy-workspace-symbol) | ||||
|               ("C-s-." . lsp-ivy-global-workspace-symbol)) | ||||
|   :config | ||||
|   (with-no-warnings | ||||
|     (when (icon-displayable-p) | ||||
|       (defvar lsp-ivy-symbol-kind-icons | ||||
|         `(,(all-the-icons-material "find_in_page" :height 0.9 :v-adjust -0.15) ; Unknown - 0 | ||||
|           ,(all-the-icons-faicon "file-o" :height 0.9 :v-adjust -0.02) ; File - 1 | ||||
|           ,(all-the-icons-material "view_module" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-lblue) ; Module - 2 | ||||
|           ,(all-the-icons-material "view_module" :height 0.95 :v-adjust -0.15 :face 'all-the-icons-lblue) ; Namespace - 3 | ||||
|           ,(all-the-icons-octicon "package" :height 0.9 :v-adjust -0.15) ; Package - 4 | ||||
|           ,(all-the-icons-material "settings_input_component" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-orange) ; Class - 5 | ||||
|           ,(all-the-icons-faicon "cube" :height 0.9 :v-adjust -0.02 :face 'all-the-icons-purple) ; Method - 6 | ||||
|           ,(all-the-icons-faicon "wrench" :height 0.8 :v-adjust -0.02) ; Property - 7 | ||||
|           ,(all-the-icons-octicon "tag" :height 0.95 :v-adjust 0 :face 'all-the-icons-lblue) ; Field - 8 | ||||
|           ,(all-the-icons-faicon "cube" :height 0.9 :v-adjust -0.02 :face 'all-the-icons-lpurple) ; Constructor - 9 | ||||
|           ,(all-the-icons-material "storage" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-orange) ; Enum - 10 | ||||
|           ,(all-the-icons-material "share" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-lblue) ; Interface - 11 | ||||
|           ,(all-the-icons-faicon "cube" :height 0.9 :v-adjust -0.02 :face 'all-the-icons-purple) ; Function - 12 | ||||
|           ,(all-the-icons-octicon "tag" :height 0.95 :v-adjust 0 :face 'all-the-icons-lblue) ; Variable - 13 | ||||
|           ,(all-the-icons-faicon "cube" :height 0.9 :v-adjust -0.02 :face 'all-the-icons-purple) ; Constant - 14 | ||||
|           ,(all-the-icons-faicon "text-width" :height 0.9 :v-adjust -0.02) ; String - 15 | ||||
|           ,(all-the-icons-material "format_list_numbered" :height 0.95 :v-adjust -0.15) ; Number - 16 | ||||
|           ,(all-the-icons-octicon "tag" :height 0.9 :v-adjust 0.0 :face 'all-the-icons-lblue) ; Boolean - 17 | ||||
|           ,(all-the-icons-material "view_array" :height 0.95 :v-adjust -0.15) ; Array - 18 | ||||
|           ,(all-the-icons-octicon "tag" :height 0.9 :v-adjust 0.0 :face 'all-the-icons-blue) ; Object - 19 | ||||
|           ,(all-the-icons-faicon "key" :height 0.9 :v-adjust -0.02) ; Key - 20 | ||||
|           ,(all-the-icons-octicon "tag" :height 0.9 :v-adjust 0.0) ; Null - 21 | ||||
|           ,(all-the-icons-material "format_align_right" :height 0.95 :v-adjust -0.15 :face 'all-the-icons-lblue) ; EnumMember - 22 | ||||
|           ,(all-the-icons-material "settings_input_component" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-orange) ; Struct - 23 | ||||
|           ,(all-the-icons-octicon "zap" :height 0.9 :v-adjust 0 :face 'all-the-icons-orange) ; Event - 24 | ||||
|           ,(all-the-icons-material "control_point" :height 0.9 :v-adjust -0.15) ; Operator - 25 | ||||
|           ,(all-the-icons-faicon "arrows" :height 0.9 :v-adjust -0.02) ; TypeParameter - 26 | ||||
|           )) | ||||
|  | ||||
|       (lsp-defun my-lsp-ivy--format-symbol-match | ||||
|                  ((sym &as &SymbolInformation :kind :location (&Location :uri)) | ||||
|                   project-root) | ||||
|                  "Convert the match returned by `lsp-mode` into a candidate string." | ||||
|                  (let* ((sanitized-kind (if (< kind (length lsp-ivy-symbol-kind-icons)) kind 0)) | ||||
|                         (type (elt lsp-ivy-symbol-kind-icons sanitized-kind)) | ||||
|                         (typestr (if lsp-ivy-show-symbol-kind (format "%s " type) "")) | ||||
|                         (pathstr (if lsp-ivy-show-symbol-filename | ||||
|                                      (propertize (format " · %s" (file-relative-name (lsp--uri-to-path uri) project-root)) | ||||
|                                                  'face font-lock-comment-face) | ||||
|                                    ""))) | ||||
|                    (concat typestr (lsp-render-symbol-information sym ".") pathstr))) | ||||
|       (advice-add #'lsp-ivy--format-symbol-match :override #'my-lsp-ivy--format-symbol-match)))) | ||||
|  | ||||
| ;; Debug | ||||
| (use-package dap-mode | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :defines dap-python-executable | ||||
|   :functions dap-hydra/nil | ||||
|   :diminish | ||||
|   :bind (:map lsp-mode-map | ||||
|               ("<f5>" . dap-debug) | ||||
|               ("M-<f5>" . dap-hydra)) | ||||
|   :hook ((after-init . dap-auto-configure-mode) | ||||
|          (dap-stopped . (lambda (_args) (dap-hydra))) | ||||
|          (dap-terminated . (lambda (_args) (dap-hydra/nil))) | ||||
|  | ||||
|          (python-mode . (lambda () (require 'dap-python))) | ||||
|          (ruby-mode . (lambda () (require 'dap-ruby))) | ||||
|          (go-mode . (lambda () (require 'dap-go))) | ||||
|          (java-mode . (lambda () (require 'dap-java))) | ||||
|          ((c-mode c++-mode objc-mode swift-mode) . (lambda () (require 'dap-lldb))) | ||||
|          (php-mode . (lambda () (require 'dap-php))) | ||||
|          (elixir-mode . (lambda () (require 'dap-elixir))) | ||||
|          ((js-mode js2-mode) . (lambda () (require 'dap-chrome))) | ||||
|          (powershell-mode . (lambda () (require 'dap-pwsh)))) | ||||
|   :init | ||||
|   (setq dap-auto-configure-features '(sessions locals breakpoints expressions controls)) | ||||
|   (when (executable-find "python3") | ||||
|     (setq dap-python-executable "python3"))) | ||||
|  | ||||
| ;; Python debug | ||||
| (use-package lsp-pyright | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :preface | ||||
|   ;; Use yapf to format | ||||
|   (defun lsp-pyright-format-buffer () | ||||
|     (interactive) | ||||
|     (when (and (executable-find "yapf") buffer-file-name) | ||||
|       (call-process "yapf" nil nil nil "-i" buffer-file-name))) | ||||
|   :hook (python-mode . (lambda () | ||||
|                          (require 'lsp-pyright) | ||||
|                          (add-hook 'after-save-hook #'lsp-pyright-format-buffer t t))) | ||||
|   :init (when (executable-find "python3") | ||||
|           (setq lsp-pyright-python-executable-cmd "python3"))) | ||||
|  | ||||
| ;; Java LSP | ||||
| (use-package lsp-java | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :hook (java-mode . (lambda () (require 'lsp-java)))) | ||||
|  | ||||
|  | ||||
| (provide 'base-lsp) | ||||
| ;;; base-lsp.el ends here | ||||
							
								
								
									
										173
									
								
								configs/base-org.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								configs/base-org.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,173 @@ | ||||
| ;;; 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") | ||||
|           ("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)) | ||||
|  | ||||
| (use-package org-autolist | ||||
|   :straight t | ||||
|   :ensure t | ||||
|   :hook (org-mode . org-autolist-mode)) | ||||
|  | ||||
| (provide 'base-org) | ||||
| ;;; base-org.el ends here | ||||
							
								
								
									
										87
									
								
								configs/base-treemacs.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								configs/base-treemacs.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| ;;; base-treemacs.el --- Extensiones/paquetes instalados y su configuración 	-*- lexical-binding: t -*- | ||||
|  | ||||
| ;; Author: kj <webmaster@outcontrol.net> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
|  | ||||
| ;;; Commentary: | ||||
|  | ||||
| ;;; Code: | ||||
|  | ||||
| (use-package treemacs | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :commands (treemacs-follow-mode | ||||
|              treemacs-filewatch-mode | ||||
|              treemacs-fringe-indicator-mode | ||||
|              treemacs-git-mode) | ||||
|   :custom-face | ||||
|   (cfrs-border-color ((t (:background ,(face-foreground 'font-lock-comment-face nil t))))) | ||||
|   :bind (([f9]        . treemacs) | ||||
|          ([f8]        . treemacs-display-current-project-exclusively) | ||||
|          ([f7]        . treemacs-add-and-display-current-project) | ||||
|          ("C-x t 1"   . treemacs-delete-other-windows) | ||||
|          ("C-x t b"   . treemacs-bookmark) | ||||
|          ("C-x t C-f" . treemacs-find-file) | ||||
|          ("C-x t C-t" . treemacs-find-tag) | ||||
|          :map treemacs-mode-map | ||||
|          ([mouse-1]   . treemacs-single-click-expand-action)) | ||||
|   :config | ||||
|   (setq treemacs-collapse-dirs           (if treemacs-python-executable 3 0) | ||||
|         treemacs-missing-project-action  'remove | ||||
|         treemacs-sorting                 'alphabetic-asc | ||||
|         treemacs-follow-after-init       t | ||||
|         treemacs-width                   30) | ||||
|   :config | ||||
|   (treemacs-follow-mode t) | ||||
|   (treemacs-filewatch-mode t) | ||||
|   (pcase (cons (not (null (executable-find "git"))) | ||||
|                (not (null (executable-find "python3")))) | ||||
|     (`(t . t) | ||||
|      (treemacs-git-mode 'deferred)) | ||||
|     (`(t . _) | ||||
|      (treemacs-git-mode 'simple)))) | ||||
|  | ||||
| (use-package treemacs-projectile | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :after projectile | ||||
|   :bind (:map projectile-command-map | ||||
|               ("h" . treemacs-projectile))) | ||||
|  | ||||
| (use-package treemacs-magit | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :after magit | ||||
|   :commands treemacs-magit--schedule-update | ||||
|   :hook ((magit-post-commit | ||||
|           git-commit-post-finish | ||||
|           magit-post-stage | ||||
|           magit-post-unstage) | ||||
|          . treemacs-magit--schedule-update)) | ||||
|  | ||||
| (use-package treemacs-persp | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :after persp-mode | ||||
|   :demand t | ||||
|   :functions treemacs-set-scope-type | ||||
|   :config (treemacs-set-scope-type 'Perspectives)) | ||||
|  | ||||
| ;; `lsp-mode' and `treemacs' integration | ||||
| (use-package lsp-treemacs | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :after lsp-mode | ||||
|   :bind (:map lsp-mode-map | ||||
|               ("C-<f8>" . lsp-treemacs-errors-list) | ||||
|               ("M-<f8>" . lsp-treemacs-symbols) | ||||
|               ("s-<f8>" . lsp-treemacs-java-deps-list)) | ||||
|   :init (lsp-treemacs-sync-mode 1) | ||||
|   :config | ||||
|   (with-eval-after-load 'ace-window | ||||
|     (when (boundp 'aw-ignored-buffers) | ||||
|       (push 'lsp-treemacs-symbols-mode aw-ignored-buffers) | ||||
|       (push 'lsp-treemacs-java-deps-mode aw-ignored-buffers)))) | ||||
|  | ||||
| (provide 'base-treemacs) | ||||
| ;;; base-treemacs.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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -10,46 +10,57 @@ | ||||
|  | ||||
| ;;; Code: | ||||
|  | ||||
| ;; The default is 800 kilobytes.  Measured in bytes. | ||||
| (setq gc-cons-threshold (* 50 1000 1000)) | ||||
|  | ||||
| ;; Native compilation | ||||
| (when (and (fboundp 'native-comp-available-p) | ||||
|            (native-comp-available-p)) | ||||
|   (progn | ||||
|     (setq native-comp-async-report-warnings-errors nil) | ||||
|     (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) | ||||
|     )) | ||||
|  | ||||
| ;; 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 | ||||
| (require 'package) | ||||
| ;; (require 'package) | ||||
|  | ||||
| (setq package-archives '(("melpa" . "https://melpa.org/packages/") | ||||
|                          ("org" . "https://orgmode.org/elpa/") | ||||
|                          ("elpa" . "https://elpa.gnu.org/packages/"))) | ||||
| ;; (setq package-archives '(("melpa" . "https://melpa.org/packages/") | ||||
| ;;                          ("org" . "https://orgmode.org/elpa/") | ||||
| ;;                          ("elpa" . "https://elpa.gnu.org/packages/"))) | ||||
|  | ||||
| (package-initialize) | ||||
| ;; (package-initialize) | ||||
|  | ||||
| ;; Actualizar repositorios si aún no esta actualizados | ||||
| (unless package-archive-contents | ||||
|   (package-refresh-contents)) | ||||
| ;; (unless package-archive-contents | ||||
| ;;   (package-refresh-contents)) | ||||
|  | ||||
| ;; Instalar use-package si no está instalado | ||||
| (unless (package-installed-p 'use-package) | ||||
|   (package-install 'use-package)) | ||||
| (straight-use-package 'use-package) | ||||
| (setq use-package-always-ensure t) | ||||
|  | ||||
| ;; Theme | ||||
| (use-package dracula-theme | ||||
|   :straight t | ||||
|   :config | ||||
|   (load-theme 'dracula t) | ||||
|   (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) ; Font | ||||
| ) | ||||
|  | ||||
| ;; Instalar use-package en caso de no tenerlo | ||||
| (unless (package-installed-p 'use-package) | ||||
|   (package-install 'use-package)) | ||||
| ;;(unless (package-installed-p 'use-package) | ||||
| ;;  (package-install 'use-package)) | ||||
|  | ||||
| (defconst private-dir  (expand-file-name "private" user-emacs-directory)) | ||||
| (defconst temp-dir (format "%s/cache" private-dir) | ||||
| @@ -100,8 +111,9 @@ | ||||
|  | ||||
| ;; Configuración cuando es un server | ||||
| (defun setup-daemon () | ||||
|   "Carga la configuración del modo daemon." | ||||
|   (message "Corriendo en modo daemon.") | ||||
|   (set-face-attribute 'default nil :font "Fira Code Retina") | ||||
|   (set-face-attribute 'default nil :font "Fira Code Retina" :height 112) | ||||
|  | ||||
|   ;; Set the fixed pitch face | ||||
|   ;;(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina") | ||||
| @@ -115,11 +127,9 @@ | ||||
|   ;; Cerrar buffers al cerrar emacsclient | ||||
|   (add-hook 'delete-frame-functions | ||||
|             (lambda (frame) | ||||
|               (let* ((window (frame-selected-window frame)) | ||||
|                      (buffer (and window (window-buffer window)))) | ||||
|                 (when (and buffer (buffer-file-name buffer)) | ||||
|                   (kill-buffer buffer))))) | ||||
|  ) | ||||
|               (mapc 'kill-buffer (delq (get-buffer "*dashboard*") (buffer-list))) | ||||
|               )) | ||||
|   ) | ||||
|  | ||||
| (if (daemonp) | ||||
|     (add-hook 'after-make-frame-functions | ||||
| @@ -128,6 +138,7 @@ | ||||
|                   (setup-daemon)))) | ||||
|   (message "Corriendo en modo normal.")) | ||||
|  | ||||
| ;(add-hook 'window-setup-hook 'toggle-frame-maximized t) | ||||
|  | ||||
| (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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -8,6 +8,7 @@ | ||||
| ;;; Code: | ||||
|  | ||||
| (use-package go-mode | ||||
|   :straight t | ||||
|   :defer t) | ||||
|  | ||||
| (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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -9,6 +9,7 @@ | ||||
|  | ||||
| (use-package js | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :mode | ||||
|   ("\\.js$" . js-mode) | ||||
|   :config | ||||
| @@ -17,6 +18,7 @@ | ||||
| ;; json-mode | ||||
| (use-package json-mode | ||||
|   :defer t | ||||
|   :straight t | ||||
|   :ensure t | ||||
|   :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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -7,23 +7,19 @@ | ||||
|  | ||||
| ;;; Code: | ||||
|  | ||||
| (use-package company-php :defer t) | ||||
| (use-package ac-php :defer t) | ||||
|  | ||||
| (use-package php-mode | ||||
|   :defer t | ||||
|   :bind ("<C-tab>" . php-doc-block) | ||||
|   :config | ||||
|   (add-hook 'php-mode-hook #'(lambda() | ||||
|                                (php-enable-default-coding-style) | ||||
|                                (company-mode t) ; habilita company mode | ||||
|                                (ac-php-core-eldoc-setup) ; habilita soporte para ELDoc | ||||
|                                (add-to-list 'company-backends 'company-ac-php-backend) ; Agregar ac-php para a company | ||||
|                                )) | ||||
|   :straight t | ||||
|   :hook ((php-mode .  (lambda () | ||||
|                        (local-set-key (kbd "C-c d b") 'php-doc-block) ;; atajo para docblock | ||||
|                        (company-mode t) ; habilita company mode | ||||
|                        )) | ||||
|          ;;(php-mode . lsp) | ||||
|          ) | ||||
|   ) | ||||
|  | ||||
| (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) | ||||
|   | ||||
							
								
								
									
										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 | ||||
							
								
								
									
										38
									
								
								init.el
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								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> | ||||
| ;; URL: https://git.kj2.me/kj/confi-emacs-actual | ||||
| @@ -9,16 +9,52 @@ | ||||
|  | ||||
| ;;; 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")) | ||||
|  | ||||
| ;; Paquetes base | ||||
| (require 'base) | ||||
| (require 'base-extensions) | ||||
| (require 'base-functions) | ||||
| (require 'base-org) | ||||
| (require 'base-lsp) | ||||
| (require 'base-company) | ||||
| (require 'base-treemacs) | ||||
| (require 'base-ctags) | ||||
| (require 'base-ivy) | ||||
| (require 'base-keys) | ||||
|  | ||||
| ;; Lenguajes | ||||
| (require 'lang-php) | ||||
| (require 'lang-js) | ||||
| (require 'lang-go) | ||||
| (require 'lang-rust) | ||||
|  | ||||
| (provide 'init) | ||||
| ;;; 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 | ||||
							
								
								
									
										18
									
								
								readme.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								readme.md
									
									
									
									
									
								
							| @@ -18,9 +18,23 @@ Al igual que la versión anterior, puede ser necesario ejecutar el siguiente com | ||||
|  | ||||
| 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). | ||||
|  | ||||
| Otros: | ||||
|  | ||||
| - Búsqueda: Requiere tener instalado ripgrep. | ||||
| - Capturas: Requiere silicon para las capturas con silico y que la compilación sea con cairo para las capturas SVG. | ||||
|  | ||||
| ## 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: | ||||
|  | ||||
| @@ -35,13 +49,13 @@ Finalmente, para abrirlo, es necesaria la usar `emacsclient` en lugar de `emacs` | ||||
| `sudo cp ~/.emacs.d/emacs-client-runner.sh /usr/local/bin/emacs` | ||||
|  | ||||
| **🔴 Advertencia:** Esto reemplazará emacs por emacsclient, si deseas usar emacs podrás hacerlo mediante: `/bin/emacs` | ||||
| **🔴 Advertencia Otra vez:** Esto puede ser totalmente innecesario en versiones más recientes de emacs (emacs 29+). | ||||
|  | ||||
| **Extra:** Con este hack, para abrir emacs en modo terminal puedes ejecutar: `emacsclient -t`, `emacs -t` o `emacs -nw`. | ||||
|  | ||||
| ## 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. | ||||
| - 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. | ||||
| - Con F9 puedes abrir y cerrar neotree. | ||||
| - 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 | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user