;; -*- mode: emacs-lisp; lexical-binding: t -*- ;; This file is loaded by Spacemacs at startup. ;; It must be stored in your home directory. (defun dotspacemacs/layers () "Layer configuration: This function should only modify configuration layer settings." (setq-default dotspacemacs-distribution 'spacemacs dotspacemacs-enable-lazy-installation 'unused dotspacemacs-ask-for-lazy-installation t ;; List of additional paths where to look for configuration layers. ;; Paths must have a trailing slash (i.e. "~/.mycontribs/") dotspacemacs-configuration-layer-path '() dotspacemacs-configuration-layers '(yaml html shell-scripts ;; Spacemacs spacemacs-project spacemacs-defaults spacemacs-org spacemacs-evil ;; Fonts emoji unicode-fonts ;; editing better-defaults compleseus auto-completion multiple-cursors prettier ;; tools pdf git (shell :variables shell-default-shell 'vterm shell-default-term-shell "/home/dpv/.nix-profile/bin/zsh" spacemacs-vterm-history-file-location "~/.local/share/zsh/zsh_history") ;; apps hackernews ;; development (lsp :variables lsp-headerline-breadcrumb-enable nil) emacs-lisp c-c++ lua go php react markdown (python :variables python-backend 'lsp python-lsp-server 'pyright) (javascript :variables javascript-backend 'lsp) (typescript :variables typescript-backend 'lsp) (docker :variables docker-dockerfile-backend 'lsp) ;; Custom dat-utils dat-tabs dat-notetaking dat-emms) dotspacemacs-additional-packages '(doom-themes org-modern persistent-scratch autothemer) ;; A list of packages that cannot be updated. dotspacemacs-frozen-packages '() ;; A list of packages that will not be installed and loaded. dotspacemacs-excluded-packages '(vi-tilde-fringe) ;; Defines the behaviour of Spacemacs when installing packages. ;; Possible values are `used-only', `used-but-keep-unused' and `all'. ;; `used-only' installs only explicitly used packages and deletes any unused ;; packages as well as their unused dependencies. `used-but-keep-unused' ;; installs only the used packages but won't delete unused ones. `all' ;; installs *all* packages supported by Spacemacs and never uninstalls them. ;; (default is `used-only') dotspacemacs-install-packages 'used-only)) (defun dotspacemacs/init () "Initialization: This function is called at the very beginning of Spacemacs startup, before layer configuration. It should only modify the values of Spacemacs settings." ;; This setq-default sexp is an exhaustive list of all the supported ;; spacemacs settings. (setq-default ;; If non-nil then enable support for the portable dumper. You'll need to ;; compile Emacs 27 from source following the instructions in file ;; EXPERIMENTAL.org at to root of the git repository. ;; ;; WARNING: pdumper does not work with Native Compilation, so it's disabled ;; regardless of the following setting when native compilation is in effect. ;; ;; (default nil) dotspacemacs-enable-emacs-pdumper nil ;; Name of executable file pointing to emacs 27+. This executable must be ;; in your PATH. ;; (default "emacs") dotspacemacs-emacs-pdumper-executable-file "emacs" ;; Name of the Spacemacs dump file. This is the file will be created by the ;; portable dumper in the cache directory under dumps sub-directory. ;; To load it when starting Emacs add the parameter `--dump-file' ;; when invoking Emacs 27.1 executable on the command line, for instance: ;; ./emacs --dump-file=$HOME/.emacs.d/.cache/dumps/spacemacs-27.1.pdmp ;; (default (format "spacemacs-%s.pdmp" emacs-version)) dotspacemacs-emacs-dumper-dump-file (format "spacemacs-%s.pdmp" emacs-version) ;; Maximum allowed time in seconds to contact an ELPA repository. ;; (default 5) dotspacemacs-elpa-timeout 5 ;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes. ;; This is an advanced option and should not be changed unless you suspect ;; performance issues due to garbage collection operations. ;; (default '(100000000 0.1)) dotspacemacs-gc-cons '(100000000 0.1) ;; Set `read-process-output-max' when startup finishes. ;; This defines how much data is read from a foreign process. ;; Setting this >= 1 MB should increase performance for lsp servers ;; in emacs 27. ;; (default (* 1024 1024)) dotspacemacs-read-process-output-max (* 1024 1024) ;; If non-nil then Spacelpa repository is the primary source to install ;; a locked version of packages. If nil then Spacemacs will install the ;; latest version of packages from MELPA. Spacelpa is currently in ;; experimental state please use only for testing purposes. ;; (default nil) dotspacemacs-use-spacelpa nil ;; If non-nil then verify the signature for downloaded Spacelpa archives. ;; (default t) dotspacemacs-verify-spacelpa-archives t ;; If non-nil then spacemacs will check for updates at startup ;; when the current branch is not `develop'. Note that checking for ;; new versions works via git commands, thus it calls GitHub services ;; whenever you start Emacs. (default nil) dotspacemacs-check-for-update nil ;; If non-nil, a form that evaluates to a package directory. For example, to ;; use different package directories for different Emacs versions, set this ;; to `emacs-version'. (default 'emacs-version) dotspacemacs-elpa-subdirectory 'emacs-version ;; One of `vim', `emacs' or `hybrid'. ;; `hybrid' is like `vim' except that `insert state' is replaced by the ;; `hybrid state' with `emacs' key bindings. The value can also be a list ;; with `:variables' keyword (similar to layers). Check the editing styles ;; section of the documentation for details on available variables. ;; (default 'vim) dotspacemacs-editing-style 'vim ;; If non-nil show the version string in the Spacemacs buffer. It will ;; appear as (spacemacs version)@(emacs version) ;; (default t) dotspacemacs-startup-buffer-show-version t dotspacemacs-startup-banner 'official dotspacemacs-startup-banner-scale 'auto dotspacemacs-startup-lists '((recents . 5) (projects . 7)) dotspacemacs-startup-buffer-responsive t dotspacemacs-show-startup-list-numbers t dotspacemacs-startup-buffer-multi-digit-delay 0.4 dotspacemacs-startup-buffer-show-icons nil ;; Default major mode for a new empty buffer. Possible values are mode ;; names such as `text-mode'; and `nil' to use Fundamental mode. ;; (default `text-mode') dotspacemacs-new-empty-buffer-major-mode 'text-mode ;; Default major mode of the scratch buffer (default `text-mode') dotspacemacs-scratch-mode 'text-mode ;; If non-nil, *scratch* buffer will be persistent. Things you write down in ;; *scratch* buffer will be saved and restored automatically. dotspacemacs-scratch-buffer-persistent nil ;; If non-nil, `kill-buffer' on *scratch* buffer ;; will bury it instead of killing. dotspacemacs-scratch-buffer-unkillable nil ;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!" ;; (default nil) dotspacemacs-initial-scratch-message nil ;; List of themes, the first of the list is loaded when spacemacs starts. ;; Press `SPC T n' to cycle to the next theme in the list (works great ;; with 2 themes variants, one dark and one light). A theme from external ;; package can be defined with `:package', or a theme can be defined with ;; `:location' to download the theme package, refer the themes section in ;; DOCUMENTATION.org for the full theme specifications. dotspacemacs-themes '(doom-dracula modus-operandi-deuteranopia) ;; Set the theme for the Spaceline. Supported themes are `spacemacs', ;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The ;; first three are spaceline themes. `doom' is the doom-emacs mode-line. ;; `vanilla' is default Emacs mode-line. `custom' is a user defined themes, ;; refer to the DOCUMENTATION.org for more info on how to create your own ;; spaceline theme. Value can be a symbol or list with additional properties. ;; (default '(spacemacs :separator wave :separator-scale 1.5)) dotspacemacs-mode-line-theme 'doom ;; If non-nil the cursor color matches the state color in GUI Emacs. ;; (default t) dotspacemacs-colorize-cursor-according-to-state t ;; Default font or prioritized list of fonts. This setting has no effect when ;; running Emacs in terminal. The font set here will be used for default and ;; fixed-pitch faces. The `:size' can be specified as ;; a non-negative integer (pixel size), or a floating-point (point size). ;; Point size is recommended, because it's device independent. (default 10.0) dotspacemacs-default-font '("Iosevka Nerd Font" :size 15.0 :weight medium) dotspacemacs-leader-key "SPC" dotspacemacs-emacs-command-key "SPC" dotspacemacs-ex-command-key ":" dotspacemacs-emacs-leader-key "M-m" dotspacemacs-major-mode-leader-key "," dotspacemacs-major-mode-emacs-leader-key (if window-system "" "C-M-m") dotspacemacs-distinguish-gui-tab nil dotspacemacs-default-layout-name "Default" dotspacemacs-display-default-layout nil dotspacemacs-auto-resume-layouts nil dotspacemacs-auto-generate-layout-names nil dotspacemacs-large-file-size 1 dotspacemacs-auto-save-file-location 'cache dotspacemacs-max-rollback-slots 5 dotspacemacs-enable-paste-transient-state nil dotspacemacs-which-key-delay 0.4 ;; Which-key frame position. Possible values are `right', `bottom' and ;; `right-then-bottom'. right-then-bottom tries to display the frame to the ;; right; if there is insufficient space it displays it at the bottom. ;; It is also possible to use a posframe with the following cons cell ;; `(posframe . position)' where position can be one of `center', ;; `top-center', `bottom-center', `top-left-corner', `top-right-corner', ;; `top-right-corner', `bottom-left-corner' or `bottom-right-corner' ;; (default 'bottom) dotspacemacs-which-key-position 'bottom ;; Control where `switch-to-buffer' displays the buffer. If nil, ;; `switch-to-buffer' displays the buffer in the current window even if ;; another same-purpose window is available. If non-nil, `switch-to-buffer' ;; displays the buffer in a same-purpose window even if the buffer can be ;; displayed in the current window. (default nil) dotspacemacs-switch-to-buffer-prefers-purpose nil ;; Whether side windows (such as those created by treemacs or neotree) ;; are kept or minimized by `spacemacs/toggle-maximize-window' (SPC w m). ;; (default t) dotspacemacs-maximize-window-keep-side-windows t ;; If nil, no load-hints enabled. If t, enable the `load-hints' which will ;; put the most likely path on the top of `load-path' to reduce walking ;; through the whole `load-path'. It's an experimental feature to speedup ;; Spacemacs on Windows. Refer the FAQ.org "load-hints" session for details. dotspacemacs-enable-load-hints nil ;; If t, enable the `package-quickstart' feature to avoid full package ;; loading, otherwise no `package-quickstart' attemption (default nil). ;; Refer the FAQ.org "package-quickstart" section for details. dotspacemacs-enable-package-quickstart nil dotspacemacs-loading-progress-bar nil dotspacemacs-fullscreen-at-startup nil dotspacemacs-fullscreen-use-non-native nil dotspacemacs-maximized-at-startup t ;; If non-nil the frame is undecorated when Emacs starts up. Combine this ;; variable with `dotspacemacs-maximized-at-startup' to obtain fullscreen ;; without external boxes. Also disables the internal border. (default nil) dotspacemacs-undecorated-at-startup nil ;; A value from the range (0..100), in increasing opacity, which describes ;; the transparency level of a frame when it's active or selected. ;; Transparency can be toggled through `toggle-transparency'. (default 90) dotspacemacs-active-transparency 90 ;; A value from the range (0..100), in increasing opacity, which describes ;; the transparency level of a frame when it's inactive or deselected. ;; Transparency can be toggled through `toggle-transparency'. (default 90) dotspacemacs-inactive-transparency 70 ;; A value from the range (0..100), in increasing opacity, which describes the ;; transparency level of a frame background when it's active or selected. Transparency ;; can be toggled through `toggle-background-transparency'. (default 90) dotspacemacs-background-transparency 90 ;; If non-nil show the titles of transient states. (default t) dotspacemacs-show-transient-state-title t ;; If non-nil show the color guide hint for transient state keys. (default t) dotspacemacs-show-transient-state-color-guide t ;; If non-nil unicode symbols are displayed in the mode line. ;; If you use Emacs as a daemon and wants unicode characters only in GUI set ;; the value to quoted `display-graphic-p'. (default t) dotspacemacs-mode-line-unicode-symbols t dotspacemacs-smooth-scrolling t dotspacemacs-scroll-bar-while-scrolling nil dotspacemacs-line-numbers '(:relative t :size-limit-kb 1000) dotspacemacs-folding-method 'evil dotspacemacs-smartparens-strict-mode nil ;; If non-nil smartparens-mode will be enabled in programming modes. ;; (default t) dotspacemacs-activate-smartparens-mode t ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes ;; over any automatically added closing parenthesis, bracket, quote, etc... ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) dotspacemacs-smart-closing-parenthesis nil ;; Select a scope to highlight delimiters. Possible values are `any', ;; `current', `all' or `nil'. Default is `all' (highlight any scope and ;; emphasis the current one). (default 'all) dotspacemacs-highlight-delimiters 'all ;; If non-nil, start an Emacs server if one is not already running. ;; (default nil) dotspacemacs-enable-server nil ;; Set the emacs server socket location. ;; If nil, uses whatever the Emacs default is, otherwise a directory path ;; like \"~/.emacs.d/server\". It has no effect if ;; `dotspacemacs-enable-server' is nil. ;; (default nil) dotspacemacs-server-socket-dir nil ;; If non-nil, advise quit functions to keep server open when quitting. ;; (default nil) dotspacemacs-persistent-server nil ;; List of search tool executable names. Spacemacs uses the first installed ;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'. ;; (default '("rg" "ag" "pt" "ack" "grep")) dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep") ;; The backend used for undo/redo functionality. Possible values are ;; `undo-fu', `undo-redo' and `undo-tree' see also `evil-undo-system'. ;; Note that saved undo history does not get transferred when changing ;; your undo system. The default is currently `undo-fu' as `undo-tree' ;; is not maintained anymore and `undo-redo' is very basic." dotspacemacs-undo-system 'undo-fu dotspacemacs-frame-title-format "%F - %a" dotspacemacs-icon-title-format nil dotspacemacs-show-trailing-whitespace t dotspacemacs-whitespace-cleanup nil dotspacemacs-use-clean-aindent-mode t dotspacemacs-use-SPC-as-y nil dotspacemacs-swap-number-row nil dotspacemacs-zone-out-when-idle nil dotspacemacs-pretty-docs nil dotspacemacs-home-shorten-agenda-source nil dotspacemacs-byte-compile nil)) (defun dotspacemacs/user-env () (spacemacs/load-spacemacs-env)) (defun dotspacemacs/user-init () ;; (add-to-list 'custom-theme-load-path "~/.emacs.d/private/themes/") (setq-default git-magit-status-fullscreen t)) (defun dotspacemacs/user-load ()) (defun dotspacemacs/user-config () ;; Custom functions (setq-default indent-tabs-mode t) (setq-default tab-width 4) (defvaralias 'c-basic-offset 'tab-width) (setq initial-buffer-choice (lambda () (get-buffer "*scratch*"))) (tab-bar-mode -1) ;; Configure packages (with-eval-after-load 'projectile (setq projectile-project-search-path '("~/dev" "~/dev/gitlab") projectile-require-project-root nil)) (with-eval-after-load 'doom-modeline (setq doom-modeline-icon nil)) ;; Enable truncating lines (add-hook 'hack-local-variables-hook #'spacemacs/toggle-truncate-lines-on) ;; More themes (use-package doom-themes :ensure t :config (setq doom-themes-enable-bold t doom-themes-enable-italic t) (doom-themes-org-config)) ;; Cleaning up Dired (setf dired-kill-when-opening-new-dired-buffer t) (add-hook 'dired-mode-hook #'dired-hide-details-mode) ;; Evil collection (with-eval-after-load 'emms (evil-collection-emms-setup)) (with-eval-after-load 'pdf-view (evil-collection-pdf-setup)) (with-eval-after-load 'ibuffer (evil-collection-ibuffer-setup)) ;; Custom keybinds (spacemacs/set-leader-keys "ks" 'nil) (spacemacs/set-leader-keys "ks" 'bookmark-set) (spacemacs/set-leader-keys "kv" 'bookmark-save) (spacemacs/set-leader-keys "pp" (lambda () (interactive) (dat-tabs/create-project-tab) (tab-bar-mode -1))) (spacemacs/set-leader-keys "gd" 'magit-status) (define-key evil-normal-state-map (kbd "C-`") 'spacemacs/shell-pop-vterm) (spacemacs/set-leader-keys "l" nil) (spacemacs/set-leader-keys "ld" 'consult-lsp-diagnostics)) ;; Do not write anything past this comment. This is where Emacs will ;; auto-generate custom variable definitions. (defun dotspacemacs/emacs-custom-settings () "Emacs custom settings. This is an auto-generated function, do not modify its content directly, use Emacs customize menu instead. This function is called at the very end of Spacemacs initialization." (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(custom-safe-themes '("bbb13492a15c3258f29c21d251da1e62f1abb8bbd492386a673dcfab474186af" default)) '(ignored-local-variable-values '((origami-fold-style . triple-braces))) '(package-selected-packages '(ac-php-core ace-jump-helm-line ace-link add-node-modules-path aggressive-indent all-the-icons auto-compile auto-highlight-symbol auto-yasnippet bui catppuccin-theme centaur-tabs centered-cursor-mode clean-aindent-mode closql code-cells column-enforce-mode company company-c-headers company-emoji company-php company-phpactor company-shell company-web compleseus-spacemacs-help composer consult consult-lsp consult-yasnippet counsel counsel-css cpp-auto-include cython-mode dap-mode define-word devdocs diminish dired-quick-sort disable-mouse disaster dotenv-mode drag-stuff drupal-mode dumb-jump eat edit-indirect elisp-def elisp-demos elisp-slime-nav emacsql embark embark-consult emmet-mode emoji-cheat-sheet-plus emr esh-help eshell-prompt-extras eshell-z eval-sexp-fu evil-anzu evil-args evil-cleverparens evil-collection evil-easymotion evil-escape evil-evilified-state evil-exchange evil-goggles evil-iedit-state evil-indent-plus evil-lion evil-lisp-state evil-matchit evil-mc evil-nerd-commenter evil-numbers evil-surround evil-textobj-line evil-tutor evil-unimpaired evil-visual-mark-mode evil-visualstar expand-region eyebrowse fancy-battery fish-mode flycheck flycheck-bashate flycheck-elsa flycheck-package flycheck-pos-tip font-utils forge geben gendoxy ggtags gh-md ghub git-link git-messenger git-modes git-timemachine gitignore-templates go-eldoc go-fill-struct go-gen-test go-guru go-impl go-mode go-rename go-tag godoctor golden-ratio google-c-style google-translate haml-mode helm helm-ag helm-comint helm-core helm-css-scss helm-descbinds helm-git-grep helm-ls-git helm-make helm-mode-manager helm-org helm-projectile helm-purpose helm-swoop helm-themes helm-xref hide-comnt highlight-indentation highlight-numbers highlight-parentheses hl-todo holy-mode htmlize hungry-delete hybrid-mode impatient-mode indent-guide info+ insert-shebang inspector ivy js-doc js2-mode js2-refactor json-mode json-navigator json-reformat json-snatcher link-hint live-py-mode livid-mode llama load-env-vars lorem-ipsum lsp-docker lsp-mode lsp-origami lsp-pyright lsp-treemacs lsp-ui lua-mode macrostep magit magit-section marginalia markdown-mode markdown-toc multi-line multi-term multi-vterm multiple-cursors mwim nameless nerd-icons nodejs-repl npm-mode open-junk-file orderless org-superstar origami overseer package-lint paradox password-generator pcache pcre2el pdf-tools pdf-view-restore persistent-scratch persistent-soft php-auto-yasnippets php-extras php-mode php-runtime phpactor phpunit pip-requirements pipenv pippel poetry popwin pos-tip powerline prettier-js pug-mode py-isort pydoc pyenv-mode pylookup pytest pythonic pyvenv quickrun rainbow-delimiters reformatter request restart-emacs rjsx-mode sass-mode scss-mode shell-pop shfmt simple-httpd skewer-mode slim-mode smeargle space-doc spaceline spacemacs-purpose-popwin spacemacs-whitespace-cleanup sphinx-doc string-edit-at-point string-inflection swiper symbol-overlay symon tablist tagedit term-cursor terminal-here toc-org transient treemacs-evil treemacs-icons-dired treemacs-magit treemacs-persp treemacs-projectile treepy typescript-mode ucs-utils undo-fu undo-fu-session unfill unicode-fonts uuidgen vertico vi-tilde-fringe volatile-highlights vterm vundo web-beautify web-completion-data web-mode wfnames wgrep winum with-editor writeroom-mode ws-butler xcscope yaml yasnippet yasnippet-snippets)) '(safe-local-variable-values '((js2-basic-offset . 2) (web-mode-indent-style . 2) (web-mode-block-padding . 2) (web-mode-script-padding . 2) (web-mode-style-padding . 2) (typescript-backend . tide) (typescript-backend . lsp) (javascript-backend . tide) (javascript-backend . tern) (javascript-backend . lsp)))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ;; '(company-tooltip-selection ((t (:background "#ffffff" :foreground "#43242B" :weight bold)))) ;; '(dired-directory ((t (:inherit bold :background "#1f1f28" :foreground "#4f97d7")))) ;; '(font-lock-comment-face ((t (:foreground "#727169" :background "#1f1f28" :slant italic)))) ;; '(minibuffer-prompt ((t (:inherit bold :background "#1f1f28" :foreground "#E6C384")))) '(org-block ((t (:inherit shadow :extend t :background "#010F1D")))) '(org-block-begin-line ((t (:inherit org-meta-line :extend t :background "#1f1f28" :foreground "#7FB4CA" :slant italic)))) '(org-block-end-line ((t (:inherit org-meta-line :extend t :background "#1f1f28" :foreground "#FF5D62" :slant italic)))) '(org-level-1 ((t (:inherit outline-1 :height 1.7)))) '(org-level-2 ((t (:inherit outline-2 :height 1.5)))) '(org-level-3 ((t (:inherit outline-3 :height 1.3)))) '(org-level-4 ((t (:inherit outline-4 :height 1.2)))) '(org-level-5 ((t (:inherit outline-5 :height 1.1)))) '(org-level-6 ((t (:inherit outline-6 :height 1.1)))) '(org-level-7 ((t (:inherit outline-7 :height 1.1)))) '(org-level-8 ((t (:inherit outline-8 :height 1.1)))) '(org-level-9 ((t (:inherit outline-9 :height 1.1))))) )