Files
dotfiles/.doom.d/config.el
2021-11-22 12:51:04 +01:00

215 lines
7.3 KiB
EmacsLisp
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here! Remember, you do not need to run 'doom
;; sync' after modifying this file!
;; Some functionality uses this to identify you, e.g. GPG configuration, email
;; clients, file templates and snippets.
(setq user-full-name "Marc Sastre Rienitz"
user-mail-address "marc@sastre.cat")
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
;; are the three important ones:
;;
;; + `doom-font'
;; + `doom-variable-pitch-font'
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;;
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
;; font string. You generally only need these two:
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
(setq doom-font (font-spec :family "Iosevka" :size 15))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'doom-zenburn)
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type t)
;; Here are some additional functions/macros that could help you configure Doom:
;;
;; - `load!' for loading external *.el files relative to this one
;; - `use-package!' for configuring packages
;; - `after!' for running code after a package has loaded
;; - `add-load-path!' for adding directories to the `load-path', relative to
;; this file. Emacs searches the `load-path' when you load packages with
;; `require' or `use-package'.
;; - `map!' for binding new keys
;;
;; To get information about any of these functions/macros, move the cursor over
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
;; This will open documentation for it, including demos of how they are used.
;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented.
;; -----------------------------------------------------------------------------
(setq-default tab-width 4)
;; -----------------------------------------------------------------------------
;; Projectile
;; -----------------------------------------------------------------------------
(use-package projectile
:config
(setq projectile-project-search-path '("~/projects")))
;; -----------------------------------------------------------------------------
;; vterm
;; -----------------------------------------------------------------------------
(use-package vterm
:config
(setq vterm-shell "fish"))
;; -----------------------------------------------------------------------------
;; elisp
;; -----------------------------------------------------------------------------
(use-package parinfer
:defer t)
;; -----------------------------------------------------------------------------
;; Python
;; -----------------------------------------------------------------------------
(defun my-python-mode-hook ()
"Do everything I need when entering python mode"
(setq fill-column 120)
(add-hook! 'before-save-hook :local #'py-autopep8-buffer #'py-isort-buffer)
;; accept underscore as part of a word
(superword-mode 1)
(modify-syntax-entry ?_ "w" python-mode-syntax-table))
(add-hook 'python-mode-hook 'my-python-mode-hook)
(use-package py-autopep8
:config
(setq py-autopep8-options '("--max-line-length=120")))
(use-package pipenv
:config
(setq pipenv-with-projectile t)
(setenv "PIPENV_MAX_DEPTH" "10"))
;; -----------------------------------------------------------------------------
;; Org
;; -----------------------------------------------------------------------------
(setq org-directory "~/org/")
(defun org-set-trello-mode ()
(let ((filename (buffer-file-name (current-buffer))))
(when (and filename (string= "trello" (file-name-extension filename)))
(org-trello-mode))))
(use-package org
:config
(add-to-list 'auto-mode-alist '("\\.trello$" . org-mode))
(add-hook! 'org-mode-hook 'org-set-trello-mode))
(use-package org-roam
:ensure t
:init
(setq org-roam-v2-ack t)
:custom
(org-roam-directory "~/org-roam")
(org-roam-capture-templates
'(("d" "default" plain "%?"
:target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n")
:unnarrowed t)
("m" "màquina" plain (file "~/org-roam/templates/maquina.org")
:target (file "%<%Y%m%d%H%M%S>-${slug}.org")
:unnarrowed t)
("s" "software" plain (file "~/org-roam/templates/software.org")
:target (file "%<%Y%m%d%H%M%S>-${slug}.org")
:unnarrowed t)))
:config
(org-roam-setup))
(use-package org-trello
:config
;; (setq org-trello-current-prefix-keybinding "SPC r")
(defun org-trello-bindings ()
"Set the keybindings for org-trello mode"
(defun set-key (key fn)
(evil-define-key* 'normal org-trello-mode-map
(kbd (concat "SPC r" " " key)) fn))
(set-key "v" 'org-trello-version)
(set-key "i" 'org-trello-install-key-and-token)
(set-key "I" 'org-trello-install-board-metadata)
(set-key "c" 'org-trello-sync-card)
(set-key "s" 'org-trello-sync-buffer)
(set-key "a" 'org-trello-assign-me)
(set-key "d" 'org-trello-check-setup)
(set-key "D" 'org-trello-delete-setup)
(set-key "b" 'org-trello-create-board-and-install-metadata)
(set-key "k" 'org-trello-kill-entity)
(set-key "K" 'org-trello-kill-cards)
(set-key "a" 'org-trello-archive-card)
(set-key "A" 'org-trello-archive-cards)
(set-key "j" 'org-trello-jump-to-trello-card)
(set-key "J" 'org-trello-jump-to-trello-board)
(set-key "C" 'org-trello-add-card-comments)
(set-key "o" 'org-trello-show-card-comments)
(set-key "l" 'org-trello-show-card-labels)
(set-key "u" 'org-trello-update-board-metadata)
(set-key "h" 'org-trello-help-describing-bindings))
(add-hook! 'org-trello-mode-hook 'org-trello-bindings))
(use-package! websocket
:after org-roam)
(use-package! org-roam-ui
:after org-roam ;; or :after org
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
;; a hookable mode anymore, you're advised to pick something yourself
;; if you don't care about startup time, use
;; :hook (after-init . org-roam-ui-mode)
: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 nil))
;; -----------------------------------------------------------------------------
;; Lilypond
;; -----------------------------------------------------------------------------
(load-library "lilypond-mode")
(add-to-list 'auto-mode-alist '("\\.ly$" . LilyPond-mode))
;; -----------------------------------------------------------------------------
;; Appearance - Prettify
;; -----------------------------------------------------------------------------
(load! "prettify-utils.el")
(pretty-hook python-mode
;; ("def" "𝙛")
;; ("class" "𝙘")
("None" "")
("lambda" "λ")
("not in" "")
("in" ""))
(pretty-hook emacs-lisp-mode)
;; ("defun" "𝙛")
(pretty-hook org-mode
("[ ]" "")
("[X]" ""))