Created
March 28, 2024 14:06
-
-
Save pfeodrippe/cbbe623a4e907662c256038392eb77d8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ;;; init.el --- Prelude's configuration entry point. | |
| ;; | |
| ;; Copyright (c) 2011-2020 Bozhidar Batsov | |
| ;; | |
| ;; Author: Bozhidar Batsov <bozhidar@batsov.com> | |
| ;; URL: https://github.com/bbatsov/prelude | |
| ;; Version: 1.1.0-snapshot | |
| ;; Keywords: convenience | |
| ;; This file is not part of GNU Emacs. | |
| ;;; Commentary: | |
| ;; This file simply sets up the default load path and requires | |
| ;; the various modules defined within Emacs Prelude. | |
| ;;; License: | |
| ;; 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 GNU Emacs; see the file COPYING. If not, write to the | |
| ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
| ;; Boston, MA 02110-1301, USA. | |
| ;;; Code: | |
| ;; Added by Package.el. This must come before configurations of | |
| ;; installed packages. Don't delete this line. If you don't want it, | |
| ;; just comment it out by adding a semicolon to the start of the line. | |
| ;; You may delete these explanatory comments. | |
| ;(package-initialize) | |
| ;; overriding image.el function image-type-available-p | |
| (defun image-type-available-p (type) | |
| "Return t if image type TYPE is available. | |
| Image types are symbols like `xbm' or `jpeg'." | |
| (if (eq 'svg type) | |
| nil | |
| (and (fboundp 'init-image-library) | |
| (init-image-library type)))) | |
| (add-to-list 'image-types 'svg) | |
| (defvar prelude-user | |
| (getenv | |
| (if (equal system-type 'windows-nt) "USERNAME" "USER"))) | |
| (message "[Prelude] Prelude is powering up... Be patient, Master %s!" prelude-user) | |
| (when (version< emacs-version "25.1") | |
| (error "[Prelude] Prelude requires GNU Emacs 25.1 or newer, but you're running %s" emacs-version)) | |
| ;; Always load newest byte code | |
| (setq load-prefer-newer t) | |
| ;; Define Prelude's directory structure | |
| (defvar prelude-dir (file-name-directory load-file-name) | |
| "The root dir of the Emacs Prelude distribution.") | |
| (defvar prelude-core-dir (expand-file-name "core" prelude-dir) | |
| "The home of Prelude's core functionality.") | |
| (defvar prelude-modules-dir (expand-file-name "modules" prelude-dir) | |
| "This directory houses all of the built-in Prelude modules.") | |
| (defvar prelude-personal-dir (expand-file-name "personal" prelude-dir) | |
| "This directory is for your personal configuration. | |
| Users of Emacs Prelude are encouraged to keep their personal configuration | |
| changes in this directory. All Emacs Lisp files there are loaded automatically | |
| by Prelude.") | |
| (defvar prelude-personal-preload-dir (expand-file-name "preload" prelude-personal-dir) | |
| "This directory is for your personal configuration, that you want loaded before Prelude.") | |
| (defvar prelude-vendor-dir (expand-file-name "vendor" prelude-dir) | |
| "This directory houses packages that are not yet available in ELPA (or MELPA).") | |
| (defvar prelude-savefile-dir (expand-file-name "savefile" user-emacs-directory) | |
| "This folder stores all the automatically generated save/history-files.") | |
| (defvar prelude-modules-file (expand-file-name "prelude-modules.el" prelude-personal-dir) | |
| "This file contains a list of modules that will be loaded by Prelude.") | |
| (unless (file-exists-p prelude-savefile-dir) | |
| (make-directory prelude-savefile-dir)) | |
| (defun prelude-add-subfolders-to-load-path (parent-dir) | |
| "Add all level PARENT-DIR subdirs to the `load-path'." | |
| (dolist (f (directory-files parent-dir)) | |
| (let ((name (expand-file-name f parent-dir))) | |
| (when (and (file-directory-p name) | |
| (not (string-prefix-p "." f))) | |
| (add-to-list 'load-path name) | |
| (prelude-add-subfolders-to-load-path name))))) | |
| ;; add Prelude's directories to Emacs's `load-path' | |
| (add-to-list 'load-path prelude-core-dir) | |
| (add-to-list 'load-path prelude-modules-dir) | |
| (add-to-list 'load-path prelude-vendor-dir) | |
| (prelude-add-subfolders-to-load-path prelude-vendor-dir) | |
| ;; reduce the frequency of garbage collection by making it happen on | |
| ;; each 50MB of allocated data (the default is on every 0.76MB) | |
| (setq gc-cons-threshold 50000000) | |
| ;; warn when opening files bigger than 100MB | |
| (setq large-file-warning-threshold 100000000) | |
| ;; preload the personal settings from `prelude-personal-preload-dir' | |
| (when (file-exists-p prelude-personal-preload-dir) | |
| (message "[Prelude] Loading personal configuration files in %s..." prelude-personal-preload-dir) | |
| (mapc 'load (directory-files prelude-personal-preload-dir 't "^[^#\.].*el$"))) | |
| (message "[Prelude] Loading Prelude's core modules...") | |
| ;; load the core stuff | |
| (require 'prelude-packages) | |
| (require 'prelude-custom) ;; Needs to be loaded before core, editor and ui | |
| (require 'prelude-ui) | |
| (require 'prelude-core) | |
| (require 'prelude-mode) | |
| (require 'prelude-editor) | |
| (require 'prelude-global-keybindings) | |
| ;; OSX specific settings | |
| ;(when (eq system-type 'darwin) | |
| ; (require 'prelude-osx)) | |
| ;; WSL specific setting | |
| (when (and (eq system-type 'gnu/linux) (getenv "WSLENV")) | |
| (require 'prelude-wsl)) | |
| ;; Windows specific settings | |
| (when (eq system-type 'windows-nt) | |
| (require 'prelude-windows)) | |
| (message "[Prelude] Loading Prelude's additional modules...") | |
| ;; the modules | |
| (if (file-exists-p prelude-modules-file) | |
| (load prelude-modules-file) | |
| (message "[Prelude] Missing personal modules file %s" prelude-modules-file) | |
| (message "[Prelude] Falling back to the bundled example file sample/prelude-modules.el") | |
| (message "[Prelude] You should copy this file to your personal configuration folder and tweak it to your liking") | |
| (load (expand-file-name "sample/prelude-modules.el" user-emacs-directory))) | |
| ;; config changes made through the customize UI will be stored here | |
| (setq custom-file (expand-file-name "custom.el" prelude-personal-dir)) | |
| ;; load the personal settings (this includes `custom-file') | |
| (when (file-exists-p prelude-personal-dir) | |
| (message "[Prelude] Loading personal configuration files in %s..." prelude-personal-dir) | |
| (mapc 'load (delete | |
| prelude-modules-file | |
| (directory-files prelude-personal-dir 't "^[^#\.].*\\.el$")))) | |
| (message "[Prelude] Prelude is ready to do thy bidding, Master %s!" prelude-user) | |
| ;;(message "Prelude is ready to do thy bidding, Master %s!" current-user) | |
| (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)) | |
| (add-to-list 'load-path "~/.emacs.d/el-get/el-get") | |
| (add-to-list 'load-path "~/dev/zprint-mode.el/") | |
| ;; (setq load-path (delete "~/dev/zprint-mode.el/" load-path)) | |
| (unless (require 'el-get nil 'noerror) | |
| (with-current-buffer | |
| (url-retrieve-synchronously | |
| "https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el") | |
| (goto-char (point-max)) | |
| (eval-print-last-sexp))) | |
| (setq | |
| my:el-get-packages | |
| '(el-get | |
| emacs-powerline | |
| tramp)) | |
| (setq my:el-get-packages | |
| (append my:el-get-packages | |
| (mapcar #'el-get-source-name el-get-sources))) | |
| ;; install new packages and init already installed packages | |
| ;;(el-get 'sync my:el-get-packages) | |
| (require 'package) | |
| (setq package-archives ()) | |
| ;;(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) | |
| (add-to-list 'package-archives '("elpa" . "http://elpa.gnu.org/packages/") t) | |
| (add-to-list 'package-archives '("melpa" . "http://www.mirrorservice.org/sites/melpa.org/packages/") t) | |
| (add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) | |
| ;; (add-to-list 'package-archives '("melpa-stable" . "http://www.mirrorservice.org/sites/stable.melpa.org/packages/") t) | |
| (add-to-list 'package-archives '("billpiel" . "http://billpiel.com/emacs-packages/") t) | |
| ;; (setq package-archives (delete '("melpa" . "http://melpa.org/packages/") package-archives)) | |
| ;; (setq package-archives (delete '("melpa" . "https://melpa.org/packages/") package-archives)) | |
| ;; (setq package-archives (delete '("melpa-stable" . "http://stable.melpa.org/packages/") package-archives)) | |
| ;; (setq package-archives (delete '("billpiel" . "http://billpiel.com/emacs-packages/") package-archives)) | |
| ;; Init use-package | |
| (when (not package-archive-contents) (package-refresh-contents)) | |
| (if (not (package-installed-p 'use-package)) | |
| (progn | |
| (package-refresh-contents) | |
| (package-install 'use-package))) | |
| (require 'use-package) | |
| (use-package zprint-mode :ensure zprint-mode) | |
| (use-package adoc-mode :ensure adoc-mode) | |
| (use-package easy-hugo | |
| :ensure easy-hugo | |
| :init | |
| (setq easy-hugo-basedir "~/dev/pfeodrippe/") | |
| (setq easy-hugo-url "http://pfeodrippe.github.io") | |
| (setq easy-hugo-postdir "content/posts") | |
| :bind ("C-c C-e" . easy-hugo)) | |
| (use-package dracula-theme :ensure dracula-theme) | |
| (use-package dash :ensure dash) | |
| (use-package monitor :ensure monitor) | |
| (use-package floobits :ensure floobits) | |
| (use-package markdown-mode :ensure markdown-mode) | |
| (use-package expand-region :ensure expand-region) | |
| (straight-use-package 'helm) | |
| (straight-use-package 'helm-ag) | |
| (use-package avy :ensure avy) | |
| (use-package evil-lispy :ensure evil-lispy) | |
| (use-package which-key :ensure which-key) | |
| (use-package key-chord :ensure key-chord) | |
| (use-package markdown-mode :ensure markdown-mode) | |
| (use-package tree-edit :ensure tree-edit) | |
| (use-package evil-tree-edit :ensure evil-tree-edit) | |
| (use-package ox-gfm :ensure ox-gfm) | |
| (use-package flycheck-clj-kondo :ensure flycheck-clj-kondo) | |
| (use-package ein :ensure ein) | |
| (use-package clojure-mode | |
| :ensure clojure-mode | |
| :config | |
| (require 'flycheck-clj-kondo)) | |
| (use-package projectile :ensure projectile) | |
| (use-package paredit :ensure paredit) | |
| (use-package undo-tree :ensure undo-tree) | |
| (use-package highlight-parentheses :ensure highlight-parentheses) | |
| (use-package lispy :ensure lispy) | |
| (use-package magit :ensure magit) | |
| (use-package kaocha-runner :ensure kaocha-runner) | |
| (straight-use-package 'cider) | |
| ;; (straight-use-package 'lsp-mode) | |
| (use-package lsp-mode | |
| :ensure t | |
| ;; :hook ((clojure-mode . lsp) | |
| ;; (clojurec-mode . lsp) | |
| ;; (clojurescript-mode . lsp)) | |
| :config | |
| ;; add paths to your local installation of project mgmt tools, like lein | |
| (setenv "PATH" (concat | |
| "/usr/local/bin" path-separator | |
| (getenv "PATH"))) | |
| ;; (dolist (m '(clojure-mode | |
| ;; clojurec-mode | |
| ;; clojurescript-mode | |
| ;; clojurex-mode)) | |
| ;; (add-to-list 'lsp-language-id-configuration `(,m . "clojure"))) | |
| ;; (setq lsp-clojure-server-command '("/usr/local/bin/clojure-lsp")) | |
| ) | |
| (use-package lsp-ui | |
| :ensure t | |
| :commands lsp-ui-mode) | |
| (use-package company | |
| :ensure t) | |
| (use-package bind-key :ensure bind-key) | |
| (straight-use-package 'helm-projectile) | |
| (straight-use-package 'helm-swoop) | |
| (use-package company :ensure company) | |
| (use-package diminish :ensure diminish) | |
| (straight-use-package 'helm-flyspell) | |
| (use-package haskell-mode :ensure haskell-mode) | |
| ;; (straight-use-package 'clj-refactor) | |
| (use-package workgroups2 :ensure workgroups2) | |
| (use-package go-mode :ensure go-mode) | |
| (use-package elpy :ensure elpy) | |
| (use-package alchemist :ensure alchemist) | |
| (use-package virtualenvwrapper :ensure virtualenvwrapper) | |
| (use-package ace-window :ensure ace-window) | |
| (use-package rust-mode :ensure rust-mode) | |
| (straight-use-package 'cargo) | |
| (use-package flycheck-rust :ensure flycheck-rust) | |
| (use-package racer :ensure racer) | |
| (use-package printing :ensure printing) | |
| (use-package cuda-mode :ensure cuda-mode) | |
| (use-package inf-clojure :ensure inf-clojure) | |
| (use-package irony :ensure irony) | |
| (use-package latex-preview-pane :ensure latex-preview-pane) | |
| (straight-use-package 'eglot) | |
| (use-package poly-markdown :ensure poly-markdown) | |
| (use-package scala-mode | |
| :ensure scala-mode | |
| :interpreter | |
| ("scala" . scala-mode)) | |
| (use-package opencl-mode :ensure opencl-mode) | |
| ;(use-package telega | |
| ; :load-path "~/telega.el" | |
| ; :commands (telega) | |
| ; :defer t) | |
| (use-package graphviz-dot-mode | |
| :ensure graphviz-dot-mode | |
| :config | |
| (setq graphviz-dot-indent-width 4)) | |
| (straight-use-package 'git-link) | |
| (use-package proof-general :ensure proof-general) | |
| ;;(use-package pyenv-mode :ensure pyenv-mode) | |
| (use-package grails-mode :ensure grails-mode) | |
| ;;(use-package clomacs :ensure clomacs) | |
| (straight-use-package 'clomacs) | |
| (straight-use-package 'fountain-mode) | |
| (straight-use-package 'meghanada) | |
| (straight-use-package 'typescript-mode) | |
| (straight-use-package 'swift-mode) | |
| (setq package-selected-packages | |
| '(dart-mode lsp-mode lsp-dart lsp-treemacs flycheck company | |
| ;; Optional packages | |
| lsp-ui company hover)) | |
| (when (cl-find-if-not #'package-installed-p package-selected-packages) | |
| (package-refresh-contents) | |
| (mapc #'package-install package-selected-packages)) | |
| (add-hook 'dart-mode-hook 'lsp) | |
| (setq lsp-dart-dap-flutter-hot-reload-on-save 't) | |
| (setq gc-cons-threshold (* 100 1024 1024) | |
| read-process-output-max (* 1024 1024) | |
| company-minimum-prefix-length 1 | |
| lsp-lens-enable t | |
| lsp-signature-auto-activate nil) | |
| (exec-path-from-shell-initialize) | |
| ;; (require 'workgroups2) | |
| ;; (workgroups-mode 1) | |
| (global-company-mode) | |
| (add-to-list 'load-path (expand-file-name "~/.emacs.d/git/emacs-async")) | |
| (add-to-list 'load-path (expand-file-name "~/.emacs.d/git/helm")) | |
| ;(eval-after-load 'clojure-mode | |
| ; '(sayid-setup-package)) | |
| ;; Ansi colors. | |
| (require 'ansi-color) | |
| (defun da () | |
| (interactive) | |
| (let ((inhibit-read-only t)) | |
| (ansi-color-apply-on-region (point-min) (point-max)))) | |
| ;; (advice-add 'cider-test-report-mode :before #'display-ansi-colors) | |
| ;; Latex. | |
| (latex-preview-pane-enable) | |
| ;(load-file "~/.emacs.d/personal/pcal-mode.el") | |
| ;(require 'pcal-mode) | |
| ;; ---------------------------------------------- | |
| ;; Projectile | |
| (projectile-global-mode) | |
| (setq projectile-completion-system 'helm) | |
| (helm-projectile-on) | |
| (setq projectile-switch-project-action 'helm-projectile) | |
| (defvar current-user | |
| (getenv | |
| (if (equal system-type 'windows-nt) "USERNAME" "USER"))) | |
| (message "Prelude is powering up... Be patient, Master %s!" current-user) | |
| (when (version< emacs-version "24.4") | |
| (error "Prelude requires at least GNU Emacs 24.4, but you're running %s" emacs-version)) | |
| ;; Always load newest byte code | |
| (setq load-prefer-newer t) | |
| (defvar prelude-dir (file-name-directory load-file-name) | |
| "The root dir of the Emacs Prelude distribution.") | |
| (defvar prelude-core-dir (expand-file-name "core" prelude-dir) | |
| "The home of Prelude's core functionality.") | |
| (defvar prelude-modules-dir (expand-file-name "modules" prelude-dir) | |
| "This directory houses all of the built-in Prelude modules.") | |
| (defvar prelude-personal-dir (expand-file-name "personal" prelude-dir) | |
| "This directory is for your personal configuration. | |
| Users of Emacs Prelude are encouraged to keep their personal configuration | |
| changes in this directory. All Emacs Lisp files there are loaded automatically | |
| by Prelude.") | |
| (defvar prelude-personal-preload-dir (expand-file-name "preload" prelude-personal-dir) | |
| "This directory is for your personal configuration, that you want loaded before Prelude.") | |
| (defvar prelude-vendor-dir (expand-file-name "vendor" prelude-dir) | |
| "This directory houses packages that are not yet available in ELPA (or MELPA).") | |
| (defvar prelude-savefile-dir (expand-file-name "savefile" prelude-dir) | |
| "This folder stores all the automatically generated save/history-files.") | |
| (defvar prelude-modules-file (expand-file-name "prelude-modules.el" prelude-dir) | |
| "This files contains a list of modules that will be loaded by Prelude.") | |
| (unless (file-exists-p prelude-savefile-dir) | |
| (make-directory prelude-savefile-dir)) | |
| (defun prelude-add-subfolders-to-load-path (parent-dir) | |
| "Add all level PARENT-DIR subdirs to the `load-path'." | |
| (dolist (f (directory-files parent-dir)) | |
| (let ((name (expand-file-name f parent-dir))) | |
| (when (and (file-directory-p name) | |
| (not (string-prefix-p "." f))) | |
| (add-to-list 'load-path name) | |
| (prelude-add-subfolders-to-load-path name))))) | |
| ;; add Prelude's directories to Emacs's `load-path' | |
| (add-to-list 'load-path prelude-core-dir) | |
| (add-to-list 'load-path prelude-modules-dir) | |
| (add-to-list 'load-path prelude-vendor-dir) | |
| (prelude-add-subfolders-to-load-path prelude-vendor-dir) | |
| ;; reduce the frequency of garbage collection by making it happen on | |
| ;; each 50MB of allocated data (the default is on every 0.76MB) | |
| (setq gc-cons-threshold 50000000) | |
| ;; warn when opening files bigger than 100MB | |
| (setq large-file-warning-threshold 100000000) | |
| ;; preload the personal settings from `prelude-personal-preload-dir' | |
| (when (file-exists-p prelude-personal-preload-dir) | |
| (message "Loading personal configuration files in %s..." prelude-personal-preload-dir) | |
| (mapc 'load (directory-files prelude-personal-preload-dir 't "^[^#\.].*el$"))) | |
| (message "Loading Prelude's core...") | |
| ;; the core stuff | |
| (require 'prelude-packages) | |
| (require 'prelude-custom) ;; Needs to be loaded before core, editor and ui | |
| (require 'prelude-ui) | |
| (require 'prelude-core) | |
| (require 'prelude-mode) | |
| (require 'prelude-editor) | |
| (require 'prelude-global-keybindings) | |
| ;; OSX specific settings | |
| ;(when (eq system-type 'darwin) | |
| ; (require 'prelude-osx)) | |
| (message "Loading Prelude's modules...") | |
| ;; the modules | |
| (if (file-exists-p prelude-modules-file) | |
| (load prelude-modules-file) | |
| (message "Missing modules file %s" prelude-modules-file) | |
| (message "You can get started by copying the bundled example file from sample/prelude-modules.el")) | |
| ;; config changes made through the customize UI will be store here | |
| (setq custom-file (expand-file-name "custom.el" prelude-personal-dir)) | |
| ;; load the personal settings (this includes `custom-file') | |
| (when (file-exists-p prelude-personal-dir) | |
| (message "Loading personal configuration files in %s..." prelude-personal-dir) | |
| (mapc 'load (delete | |
| prelude-modules-file | |
| (directory-files prelude-personal-dir 't "^[^#\.].*\\.el$")))) | |
| ;; load the personal settings (this includes `custom-file') | |
| ;(when (file-exists-p prelude-personal-dir) | |
| ; (message "Loading personal configuration files in %s..." prelude-personal-dir) | |
| ; (mapc 'load (directory-files prelude-personal-dir 't "^[^#\.].*el$"))) | |
| (message "Prelude is ready to do thy bidding, Master %s!" current-user) | |
| (add-hook 'prog-mode-hook #'hs-minor-mode) | |
| (add-hook 'prog-mode-hook #'display-line-numbers-mode) | |
| (message "Adding evil-lispy hooks" current-user) | |
| (require 'evil-lispy) | |
| (add-hook 'emacs-lisp-mode-hook #'evil-lispy-mode) | |
| (add-hook 'ielm-mode-hook #'evil-lispy-mode) | |
| (add-hook 'lisp-mode-hook #'evil-lispy-mode) | |
| (add-hook 'lisp-interaction-mode-hook #'evil-lispy-mode) | |
| (add-hook 'scheme-mode-hook #'evil-lispy-mode) | |
| (add-hook 'clojure-mode-hook #'evil-lispy-mode) | |
| ;; (add-hook 'clojure-mode-hook 'zprint-mode) | |
| ;; (remove-hook 'clojurescript-mode-hook 'zprint-mode) | |
| (message "Adding hooks" current-user) | |
| ;; (require 'clj-refactor) | |
| ;; (add-hook 'clojure-mode-hook (lambda () | |
| ;; ;; (clj-refactor-mode 1) | |
| ;; (cljr-add-keybindings-with-prefix "C-c C-m"))) | |
| (setq cljr-warn-on-eval nil) | |
| ;; Keychords | |
| (require 'key-chord) | |
| (require 'evil-lispy-core) | |
| (setq key-chord-two-keys-delay .015 | |
| key-chord-one-key-delay .020) | |
| (key-chord-define-global "zx" #'evil-normal-state) | |
| (key-chord-define-global "xc" #'evil-lispy/enter-state-left) | |
| (key-chord-define-global "./" #'cider-ns-refresh) | |
| (key-chord-define-global "-=" #'evil-close-folds) | |
| (key-chord-define-global "0-" #'evil-open-folds) | |
| (key-chord-define-global ";/" #'evil-toggle-fold) | |
| (key-chord-define-global "lç" #'cider-test-run-test) | |
| (key-chord-define-global "cb" #'cider-repl-clear-buffer) | |
| (key-chord-mode 1) | |
| (define-clojure-indent | |
| (reg-event-db 1) | |
| (reg-event-fx 1) | |
| (reg-fx 1) | |
| (reg 1) | |
| (reg-sub 1) | |
| (describe 1) | |
| (it 2) | |
| (beforeEach 1) | |
| (for-all 1) | |
| (for-some 1) | |
| (call 1)) | |
| ;; LSP Mode | |
| ;; (add-hook 'clojure-mode-hook 'lsp) | |
| ;; (add-hook 'clojurescript-mode-hook 'lsp) | |
| ;; (add-hook 'clojurec-mode-hook 'lsp) | |
| (setq gc-cons-threshold (* 100 1024 1024) | |
| read-process-output-max (* 1024 1024) | |
| treemacs-space-between-root-nodes nil | |
| company-minimum-prefix-length 1 | |
| lsp-lens-enable nil | |
| lsp-signature-auto-activate nil | |
| lsp-enable-indentation nil | |
| ; lsp-enable-indentation nil ; uncomment to use cider indentation instead of lsp | |
| ; lsp-enable-completion-at-point nil ; uncomment to use cider completion instead of lsp | |
| ) | |
| (define-key clojure-mode-map (kbd "s-l g r") 'lsp-find-references) | |
| (define-key lispy-mode-map (kbd "M-.") nil) | |
| (define-key clojure-mode-map (kbd "M-.") 'cider-find-var) | |
| ;; (setq gc-cons-threshold (* 100 1024 1024) | |
| ;; read-process-output-max (* 1024 1024) | |
| ;; treemacs-space-between-root-nodes nil | |
| ;; company-minimum-prefix-length 1 | |
| ;; lsp-lens-enable t | |
| ;; lsp-signature-auto-activate nil | |
| ;; ; lsp-enable-indentation nil ; uncomment to use cider indentation instead of lsp | |
| ;; ; lsp-enable-completion-at-point nil ; uncomment to use cider completion instead of lsp | |
| ;; ) | |
| ;; (setenv "PATH" (concat | |
| ;; "/usr/local/bin" path-separator | |
| ;; (getenv "PATH"))) | |
| ;; (dolist (m '(clojure-mode | |
| ;; clojurec-mode | |
| ;; clojurescript-mode | |
| ;; clojurex-mode)) | |
| ;; (add-to-list 'lsp-language-id-configuration `(,m . "clojure"))) | |
| ;; (setq lsp-clojure-server-command '("/usr/local/bin/clojure-lsp")) | |
| ;; Cider | |
| ;; (setq sayid-inject-dependencies-at-jack-in nil) | |
| (setq cider-prompt-for-symbol nil) | |
| (setq cider-pprint-fn "clojure.pprint/pprint") | |
| (require 'cider) | |
| (setq cider-cljs-lein-repl | |
| "(do (require 'figwheel-sidecar.repl-api) | |
| (figwheel-sidecar.repl-api/start-figwheel!) | |
| (figwheel-sidecar.repl-api/cljs-repl))") | |
| ;; (setq cider-refresh-before-fn "integrant.repl/suspend") | |
| ;; (setq cider-refresh-after-fn "integrant.repl/resume") | |
| ;; (add-to-list 'cider-test-defining-forms "defdbtest") | |
| ;; (eval-after-load 'cider | |
| ;; '(progn | |
| ;; (cider-add-to-alist 'cider-jack-in-dependencies | |
| ;; "org.tcrawley/dynapath" "0.2.5") | |
| ;; (cider-add-to-alist 'cider-jack-in-dependencies | |
| ;; "com.cemerick/pomegranate" "0.4.0"))) | |
| (eval-after-load 'cider | |
| '(progn | |
| (cider-add-to-alist 'cider-jack-in-dependencies | |
| "org.tcrawley/dynapath" "0.2.5") | |
| (cider-add-to-alist 'cider-jack-in-dependencies | |
| "com.cemerick/pomegranate" "0.4.0"))) | |
| ;; fira-code | |
| (defun fira-code-mode--make-alist (list) | |
| "Generate prettify-symbols alist from LIST." | |
| (let ((idx -1)) | |
| (mapcar | |
| (lambda (s) | |
| (setq idx (1+ idx)) | |
| (let* ((code (+ #Xe100 idx)) | |
| (width (string-width s)) | |
| (prefix ()) | |
| (suffix '(?\s (Br . Br))) | |
| (n 1)) | |
| (while (< n width) | |
| (setq prefix (append prefix '(?\s (Br . Bl)))) | |
| (setq n (1+ n))) | |
| (cons s (append prefix suffix (list (decode-char 'ucs code)))))) | |
| list))) | |
| (defconst fira-code-mode--ligatures | |
| '("www" "**" "***" "**/" "*>" "*/" "\\\\" "\\\\\\" | |
| "{-" "[]" "::" ":::" ":=" "!!" "!=" "!==" "-}" | |
| "--" "---" "-->" "->" "->>" "-<" "-<<" "-~" | |
| "#{" "#[" "##" "###" "####" "#(" "#?" "#_" "#_(" | |
| ".-" ".=" ".." "..<" "..." "?=" "??" ";;" "/*" | |
| "/**" "/=" "/==" "/>" "//" "///" "&&" "||" "||=" | |
| "|=" "|>" "^=" "$>" "++" "+++" "+>" "=:=" "==" | |
| "===" "==>" "=>" "=>>" "<=" "=<<" "=/=" ">-" ">=" | |
| ">=>" ">>" ">>-" ">>=" ">>>" "<*" "<*>" "<|" "<|>" | |
| "<$" "<$>" "<!--" "<-" "<--" "<->" "<+" "<+>" "<=" | |
| "<==" "<=>" "<=<" "<>" "<<" "<<-" "<<=" "<<<" "<~" | |
| "<~~" "</" "</>" "~@" "~-" "~=" "~>" "~~" "~~>" "%%" | |
| "x" ":" "+" "+" "*")) | |
| (defvar fira-code-mode--old-prettify-alist) | |
| (defun fira-code-mode--enable () | |
| "Enable Fira Code ligatures in current buffer." | |
| (setq-local fira-code-mode--old-prettify-alist prettify-symbols-alist) | |
| (setq-local prettify-symbols-alist (append (fira-code-mode--make-alist fira-code-mode--ligatures) fira-code-mode--old-prettify-alist)) | |
| (prettify-symbols-mode t)) | |
| (defun fira-code-mode--disable () | |
| "Disable Fira Code ligatures in current buffer." | |
| (setq-local prettify-symbols-alist fira-code-mode--old-prettify-alist) | |
| (prettify-symbols-mode -1)) | |
| (define-minor-mode fira-code-mode | |
| "Fira Code ligatures minor mode" | |
| :lighter " Fira Code" | |
| (setq-local prettify-symbols-unprettify-at-point 'right-edge) | |
| (if fira-code-mode | |
| (fira-code-mode--enable) | |
| (fira-code-mode--disable))) | |
| (defun fira-code-mode--setup () | |
| "Setup Fira Code Symbols" | |
| (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol")) | |
| (provide 'fira-code-mode) | |
| ;; Elixir | |
| ;; This is optional. It automatically runs `M-x eglot` for you whenever you are in `elixir-mode` | |
| (add-hook 'elixir-mode-hook 'eglot-ensure) | |
| ;; (add-to-list 'eglot-server-programs `(elixir-mode "/home/rafael/dev/elixir-ls/release/language_server.sh")) | |
| ;; Visual | |
| (set-face-attribute 'default nil :height 160) | |
| (load-theme 'dracula) | |
| ;; Go | |
| (add-hook 'go-mode-hook (lambda () | |
| (whitespace-mode 0))) | |
| ;; Java | |
| ;; (require 'meghanada) | |
| ;; (add-hook 'java-mode-hook | |
| ;; (lambda () | |
| ;; ;; meghanada-mode on | |
| ;; (meghanada-mode t) | |
| ;; (flycheck-mode +1) | |
| ;; (whitespace-mode 0) | |
| ;; (setq c-basic-offset 2) | |
| ;; ;; use code format | |
| ;; (add-hook 'before-save-hook 'meghanada-code-beautify-before-save))) | |
| ;; (cond | |
| ;; ((eq system-type 'windows-nt) | |
| ;; (setq meghanada-java-path (expand-file-name "bin/java.exe" (getenv "JAVA_HOME"))) | |
| ;; (setq meghanada-maven-path "mvn.cmd")) | |
| ;; (t | |
| ;; (setq meghanada-java-path "java") | |
| ;; (setq meghanada-maven-path "mvn"))) | |
| ;; Elpy | |
| (package-initialize) | |
| (elpy-enable) | |
| (with-eval-after-load 'rust-mode | |
| (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) | |
| ;; Rust | |
| (setq racer-cmd "/home/rafael/.cargo/bin/racer") | |
| (setq racer-rust-src-path "/home/rafael/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src") | |
| (add-hook 'rust-mode-hook 'cargo-minor-mode) | |
| (add-hook 'rust-mode-hook 'racer-mode) | |
| (add-hook 'racer-mode-hook 'eldoc-mode) | |
| (add-hook 'racer-mode-hook 'company-mode) | |
| (add-hook 'flycheck-mode-hook 'flycheck-rust-setup) | |
| (require 'rust-mode) | |
| (define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common) | |
| (setq company-tooltip-align-annotations t) | |
| (add-hook 'rust-mode-hook #'racer-mode) | |
| (add-hook 'racer-mode-hook #'eldoc-mode) | |
| (add-hook 'racer-mode-hook #'company-mode) | |
| (global-set-key [f2] #'company-complete) | |
| (setq company-tooltip-align-annotations t) | |
| ;; JSON | |
| (add-hook 'json-mode-hook | |
| (lambda () | |
| (make-local-variable 'js-indent-level) | |
| (setq js-indent-level 2))) | |
| ;; Helm | |
| (global-set-key (kbd "C-c h") | |
| (lambda () | |
| (interactive) | |
| (let ((current-prefix-arg '(4))) | |
| (call-interactively #'helm-multi-swoop)))) | |
| ;; Clojure Portal | |
| (defun portal.api/open () | |
| (interactive) | |
| (cider-nrepl-sync-request:eval | |
| "(require 'portal.api) (portal.api/tap) (portal.api/open)")) | |
| (defun portal.api/clear () | |
| (interactive) | |
| (cider-nrepl-sync-request:eval "(portal.api/clear)")) | |
| (defun portal.api/close () | |
| (interactive) | |
| (cider-nrepl-sync-request:eval "(portal.api/close)")) | |
| (define-key clojure-mode-map (kbd "C-x C-a C-s") | |
| (lambda () | |
| (interactive) | |
| (cider-nrepl-sync-request:eval "(user.portal/next-viewer)"))) | |
| ;; Clerk | |
| (defun clerk-show () | |
| (interactive) | |
| (when-let | |
| ((filename | |
| (buffer-file-name))) | |
| (save-buffer) | |
| (cider-interactive-eval | |
| (concat "(nextjournal.clerk/show! \"" filename "\")")))) | |
| (define-key clojure-mode-map (kbd (kbd "C-x j x")) 'clerk-show) | |
| ;; Ace window | |
| (global-set-key (kbd "M-p") 'ace-window) | |
| (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) | |
| ;; Virtualenvwrapper | |
| (require 'virtualenvwrapper) | |
| (venv-initialize-interactive-shells) | |
| (venv-initialize-eshell) | |
| (setq venv-location "/users/mac/Documents/dev/scrapa/venv/") | |
| ;; Hydras | |
| (defun open-buffer-with (txt) | |
| "create a new buffer, insert txt" | |
| (let ((buffer (get-buffer-create (generate-new-buffer-name "something")))) | |
| (with-current-buffer buffer | |
| (clojure-mode) | |
| (pop-to-buffer buffer) | |
| (insert txt)))) | |
| (set-face-attribute 'default nil :height 120) | |
| (defhydra hydra-zen (global-map "<f2>") | |
| "Zen" | |
| ("saii" (open-buffer-with (shell-command-to-string "zen stag artificial-data ifood invited")) "zen") | |
| ("sh" (open-buffer-with (shell-command-to-string "zen stag health-check")) "zen")) | |
| (defvar yt-iframe-format | |
| ;; You may want to change your width and height. | |
| (concat "<iframe width=\"440\"" | |
| " height=\"335\"" | |
| " src=\"https://www.youtube.com/embed/%s\"" | |
| " frameborder=\"0\"" | |
| " allowfullscreen>%s</iframe>")) | |
| (org-add-link-type | |
| "yt" | |
| (lambda (handle) | |
| (browse-url | |
| (concat "https://www.youtube.com/embed/" | |
| handle))) | |
| (lambda (path desc backend) | |
| (cl-case backend | |
| (html (format yt-iframe-format | |
| path (or desc ""))) | |
| (latex (format "\href{%s}{%s}" | |
| path (or desc "video")))))) | |
| ;; OpenCL | |
| (require 'opencl-mode) | |
| (add-to-list 'auto-mode-alist '("\\.cl\\'" . opencl-mode)) | |
| ;; Lozenge | |
| (global-set-key (kbd "C-x j k") (lambda () (interactive) (insert "◊"))) | |
| ;; Comment | |
| (global-set-key (kbd "C-;") 'comment-indent-new-line) | |
| ;; Alloy | |
| ;; (load-file "~/.emacs.d/personal/alloy-mode.el") | |
| ;; Interactive python | |
| ;;(pyenv-mode) | |
| ;;(setq python-shell-interpreter "ipython" | |
| ;;python-shell-interpreter-args "-i --simple-prompt") | |
| ;; (setq python-shell-interpreter "jupyter" | |
| ;; python-shell-interpreter-args "console --simple-prompt") | |
| (prelude-eval-after-init | |
| ;; greet the use with some useful tip | |
| (run-at-time 5 nil 'prelude-tip-of-the-day)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment