From 16f9f76f923c1b3a641c9db8cbbcc108c6f8c2ec Mon Sep 17 00:00:00 2001 From: kempii Date: Sat, 17 Sep 2022 11:51:06 -0500 Subject: [PATCH] =?UTF-8?q?Agrego=20configuraci=C3=B3n=20personal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 2 + my_init.el | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 289 insertions(+) create mode 100644 .gitignore create mode 100644 my_init.el diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e4e5f6c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ \ No newline at end of file diff --git a/README.md b/README.md index d72fc4e..0bcb69c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ El archivo **intro_2_emacs.org** contiene una documentaci El archivo **init.el** contiene una configuración básica de Emacs enfocada en apoyar al usuario a realizar comandos de manera más sencilla. +El archivo **my_init.el** contiene mi configuración de Emacs, considerar que los accesos a diferentes archivos deben modificarse a sus respectivos directorios en sus computadoras + La licencia de este material es **Creative Commons Attribution-NonCommercial 4.0 International** Este repositorio fue creado por *kempii* para el taller **Introducción a (GNU) Emacs** presentado en la jornada de Software Libre organizada por *Autodefensa Digital del Norte Hackerspace* el 17 de septiembre de 2022 en el marco del [Software Freedom Day 2022](https://wiki.softwarefreedomday.org/2022) \ No newline at end of file diff --git a/my_init.el b/my_init.el new file mode 100644 index 0000000..d4ac09c --- /dev/null +++ b/my_init.el @@ -0,0 +1,286 @@ + +;; (setq inhibit-startup-message t) + +(scroll-bar-mode -1) ;Disable visible scrollbar +(tool-bar-mode -1) ;Disable the toolbar +(tooltip-mode -1) ;Disable tooltips +(set-fringe-mode 15) ;Give some breathing room + +(menu-bar-mode -1) ;Disable the menu bar + +;;Setup the visible bell +(setq visible-bell t) + +;; Set the default face +(set-face-attribute 'default nil :font "Liberation Mono" :height 120) +;; Set the fixed pitch face +(set-face-attribute 'fixed-pitch nil :font "Liberation Mono" :height 100) +;; Set the variable pitch face +(set-face-attribute 'variable-pitch nil :font "Liberation Mono" :height 120 :weight 'regular) + +(load-theme 'modus-vivendi) + +;;Make ESCquit prompts +(global-set-key (kbd "") 'keyboard-escape-quit) + +;;Accept utf-8 +(define-coding-system-alias 'UTF-8 'utf-8) + +;;Python configuration, it wasn't needed to configure ipython +(setq python-shell-interpreter "~/Python310/python.exe") +;; python-shell-interpreter-args +;; "-i C:/Python27/Scripts/ipython-script.py") + + +;;Initialize package sources +(require 'package) +(setq package-archives '(("melpa" . "https://melpa.org/packages/") + ("org" . "https://orgmode.org/elpa/") + ("elpa" . "https://elpa.gnu.org/packages/"))) + +(package-initialize) +(unless package-archive-contents + (package-refresh-contents)) + +;;Initialize use-package on non-Linux systems +(unless (package-installed-p 'use-package) + (package-install 'use-package)) + +(require 'use-package) +(setq use-package-always-ensure t) + +;;Command log package to see commands +(use-package command-log-mode + :config + (global-command-log-mode 1)) +;;Exlude certain commands from command log mode +;; (setq clm/log-command-exceptions* +;; '(nil self-insert-command backward-char forward-char +;; delete-char delete-backward-char backward-delete-char +;; backward-delete-char-untabify +;; universal-argument universal-argument-other-key +;; universal-argument-minus universal-argument-more +;; beginning-of-line end-of-line recenter +;; move-end-of-line move-beginning-of-line +;; handle-switch-frame +;; newline previous-line next-line)) + + +;;Display line numbers +(column-number-mode) +(global-display-line-numbers-mode t) +;;Disable for certain modes +(dolist (mode '(org-mode-hook + term-mode-hook + eshell-mode-hook)) + (add-hook mode (lambda () (display-line-numbers-mode 0)))) + +;;Ivy package +(use-package swiper :ensure t) +(use-package ivy + :diminish + :bind (("C-s" . swiper) + :map ivy-minibuffer-map + ("TAB" . ivy-alt-done)) + :config + (ivy-mode 1)) + +;;Doom modeline +;;After installing all-the-icons package run M-x all-the-icons-install-fonts +;;For Linux or MacOS, that's it +;;For Windows, follow this instructions https://github.com/doomemacs/doomemacs/issues/2575 +(use-package all-the-icons + :ensure t) + +(use-package doom-themes + :ensure t + :config + ;; Global settings (defaults) + (setq doom-themes-enable-bold t ; if nil, bold is universally disabled + doom-themes-enable-italic t) ; if nil, italics is universally disabled + (load-theme 'doom-gruvbox t) + + ;; Enable flashing mode-line on errors + (doom-themes-visual-bell-config) + ;; Enable custom neotree theme (all-the-icons must be installed!) + (doom-themes-neotree-config) + ;; or for treemacs users + (setq doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme + (doom-themes-treemacs-config) + ;; Corrects (and improves) org-mode's native fontification. + (doom-themes-org-config)) + +;;Install doom-modeline to modify modeline +;;Icons are not working correctly, so turn them off temporarily t / nil +(use-package doom-modeline + :ensure t + :init (doom-modeline-mode 1) + :custom ((doom-modeline-height 30) + (doom-modeline-icon t) + (doom-modeline-major-mode-icon t) + (doom-modeline-major-mode-color-icon t) + (doom-modeline-buffer-state-icon t))) + +;;Install Rainbow delimiters +(use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) + +;;Install Which Key +(use-package which-key + :init (which-key-mode) + :config + (setq which-key-idle-delay 1)) + +;;Install counsel to get descriptions in M-x +(use-package counsel :ensure t + :init + :bind (("M-x" . counsel-M-x) + ("C-x b" . counsel-ibuffer) + ("C-x C-f" . counsel-find-file) + ("C-M-j" . 'counsel-switch-buffer) + :map minibuffer-local-map + ("C-r" . 'counsel-minibuffer-history)) + :config + (counsel-mode 1) + (setq ivy-initial-inputs-alist nil)) + +;;Install ivy-rich to get more details of commands +(use-package ivy-rich + :init + (ivy-rich-mode 1)) + +;;Install helpful package +(use-package helpful :ensure t) + +;;Install package to highlight indentation +(use-package highlight-indent-guides + :ensure t + :config + (setq highlight-indent-guides-method 'character)) +(add-hook 'prog-mode-hook 'highlight-indent-guides-mode) + + +;;Install elpy the emacs python ide +(use-package elpy + :ensure t + :init + (elpy-enable)) + +;;My keybindings +(define-key elpy-mode-map (kbd "") 'python-indent-shift-right) +(define-key elpy-mode-map (kbd "S-") 'python-indent-shift-left) +(define-key elpy-mode-map (kbd "C-/") 'comment-line) +(define-key elpy-mode-map (kbd "C-}") 'comment-line) +(global-set-key (kbd "M-n") (lambda () (interactive) (scroll-up-command 5))) +(global-set-key (kbd "M-p") (lambda () (interactive) (scroll-down-command 5))) + +;;Install general for creatining definers / custom keys +(use-package general + :config + (general-create-definer kempii/custom-keys + ;; :keymaps '(normal insert visual emacs) + ;; :prefix "C-." + :global-prefix "C-.")) + +;;Install hydra to define custom functions +(use-package hydra) + +;;Define custom hydra function for zooming in and out +(defhydra hydra-text-scale (:timeout 10) + "scale text" + ("+" text-scale-increase "in") + ("-" text-scale-decrease "out") + ("q" nil "finished" :exit t)) + +;;Create custom keys under kempii/custom-keys for screen configuration +(kempii/custom-keys + "C-. s" '(:ignore s :which-key "screen customization") + "C-. st" '(counsel-load-theme :which-key "choose theme") + "C-. sz" '(hydra-text-scale/body :which-key "scale text")) + +;;Create custom keys under kempii/custom-keys for utilities shortcuts +(kempii/custom-keys + "C-. u" '(:ignore u :which-key "utilities") + "C-. uf" '(browse-url :which-key "firefox webpage") + "C-. us" '(browse-url-firefox :which-key "firefox search") + "C-. ug" '("C-x g" :which-key "magit status") + "C-. ur" '(projectile-run-project :which-key "run project")) + +;;Firefox configuration +(setq browse-url-firefox-arguments '("-search")) + +;;Install projectile a project manager +(use-package projectile + :diminish projectile-mode + :config (projectile-mode) + :custom ((projectile-completion-system 'ivy)) + :bind-keymap + ("C-c p" . projectile-command-map) + :init + ;; NOTE: Set this to the folder where you keep your Git repos! + (when (file-directory-p "~/Proyectos") + (setq projectile-project-search-path '("~/Proyectos"))) + (setq projectile-switch-project-action #'projectile-dired)) + +;;Install counsel-projectile to manage projectile using counsel +(use-package counsel-projectile + :config (counsel-projectile-mode)) + +;;Install magit to manage git +(use-package magit + :custom + (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) + +;;Install org +(defun kempii/org-mode-setup () + (org-indent-mode) + (variable-pitch-mode 1) + (visual-line-mode 1) + (org-display-inline-images t t)) + +(defun kempii/org-font-setup () + ;; Replace list hyphen with dot + (font-lock-add-keywords 'org-mode + '(("^ *\\([-]\\) " + (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) + + ;; 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 "Liberation Mono" :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-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)) + +(use-package org + :hook (org-mode . kempii/org-mode-setup) + :config + (setq org-ellipsis " â–ľ" + org-hide-emphasis-markers t) + (kempii/org-font-setup)) + +(use-package org-bullets + :after org + :hook (org-mode . org-bullets-mode) + :custom + (org-bullets-bullet-list '("â—‰" "â—‹" "â—Ź" "â—‹" "â—Ź" "â—‹" "â—Ź"))) + +(defun kempii/org-mode-visual-fill () + (setq visual-fill-column-width 100 + visual-fill-column-center-text t) + (visual-fill-column-mode 1)) + +(use-package visual-fill-column + :hook (org-mode . kempii/org-mode-visual-fill))