Created
November 8, 2022 02:00
-
-
Save breeko/e2b6bbd9701ac251891b00282741a4a6 to your computer and use it in GitHub Desktop.
emacs configuration
This file contains 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
;;; package --- Summary | |
;;; emacs-from-scratch https://github.com/daviwil/emacs-from-scratch | |
;;; Commentary: | |
;;; Code: | |
(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 10) ; Give some breathing room | |
(menu-bar-mode -1) ; Disable the menu bar | |
;; Set up the visible bell | |
(setq visible-bell t) | |
(load-theme 'wombat) | |
;; Make ESC quit prompts | |
(global-set-key (kbd "<escape>") 'keyboard-escape-quit) | |
;; 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 platforms | |
(unless (package-installed-p 'use-package) | |
(package-install 'use-package)) | |
(require 'use-package ensure t) | |
(setq use-package-always-ensure t) | |
(use-package command-log-mode) | |
(set-face-attribute 'default nil :height 100) | |
; remap M-x to counsel | |
(use-package counsel | |
:bind (("C-M-j" . 'counsel-switch-buffer) | |
:map minibuffer-local-map | |
("C-r" . 'counsel-minibuffer-history)) | |
:custom | |
(counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only) | |
:config | |
(counsel-mode 1)) | |
(use-package ivy | |
:diminish | |
:bind (("C-s" . swiper) | |
:map ivy-minibuffer-map | |
("TAB" . ivy-alt-done) | |
("C-l" . ivy-alt-done) | |
("C-j" . ivy-next-line) | |
("C-k" . ivy-previous-line) | |
:map ivy-switch-buffer-map | |
("C-k" . ivy-previous-line) | |
("C-l" . ivy-done) | |
("C-d" . ivy-switch-buffer-kill) | |
:map ivy-reverse-i-search-map | |
("C-k" . ivy-previous-line) | |
("C-d" . ivy-reverse-i-search-kill)) | |
:config | |
(ivy-mode 1)) | |
(use-package doom-modeline | |
:ensure t | |
:init (doom-modeline-mode 1) | |
:custom ((doom-modeline-height 15))) | |
(use-package doom-themes) | |
(column-number-mode) | |
(global-display-line-numbers-mode t) | |
; turn off line numbers in org-mode, term-mode and eshell | |
(dolist (mode '(org-mode-hook | |
term-mode-hook | |
shell-mode-hook | |
eshell-mode-hook)) | |
(add-hook mode (lambda () (display-line-numbers-mode 0)))) | |
(use-package rainbow-delimiters | |
:hook (prog-mode . rainbow-delimiters-mode)) | |
; shows options when you press ctrl+ | |
(use-package which-key | |
:init (which-key-mode) | |
:diminish which-key-mode | |
:config | |
(setq which-key-idle-delay 0.3)) | |
(add-hook 'text-mode-hook 'flyspell-mode) | |
(add-hook 'prog-mode-hook 'flyspell-prog-mode) | |
; better help data for variables and functions | |
(use-package helpful | |
:commands (helpful-callable helpful-variable helpful-command helpful-key) | |
:custom | |
(counsel-describe-function-function #'helpful-callable) | |
(counsel-describe-variable-function #'helpful-variable) | |
:bind | |
([remap describe-function] . counsel-describe-function) | |
([remap describe-command] . helpful-command) | |
([remap describe-variable] . counsel-describe-variable) | |
([remap describe-key] . helpful-key)) | |
; IDE FEATURES | |
(flycheck-checker . py) | |
(global-flycheck-mode) | |
(use-package elpy | |
:ensure t | |
:init | |
(elpy-enable)) | |
(with-eval-after-load 'python | |
(defun python-shell-completion-native-try () | |
"Return non-nil if can trigger native completion." | |
(let ((python-shell-completion-native-enable t) | |
(python-shell-completion-native-output-timeout | |
python-shell-completion-native-try-output-timeout)) | |
(python-shell-completion-native-get-completions | |
(get-buffer-process (current-buffer)) | |
nil "_")))) | |
(setq python-shell-completion-native-enable nil) | |
(defun efs/lsp-mode-setup () | |
(setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols)) | |
(lsp-headerline-breadcrumb-mode)) | |
(use-package lsp-mode | |
:commands (lsp lsp-deferred) | |
:hook (lsp-mode . efs/lsp-mode-setup) | |
:init | |
(setq lsp-keymap-prefix "C-c l") ;; Or 'C-l', 's-l' | |
:config | |
(lsp-enable-which-key-integration t)) | |
(use-package lsp-ui | |
:hook (lsp-mode . lsp-ui-mode) | |
:custom | |
(lsp-ui-doc-position 'bottom)) | |
(use-package lsp-treemacs | |
:after lsp) | |
(use-package lsp-ivy) | |
(use-package general) | |
(use-package dap-mode | |
;; Uncomment the config below if you want all UI panes to be hidden by default! | |
;; :custom | |
;; (lsp-enable-dap-auto-configure nil) | |
;; :config | |
;; (dap-ui-mode 1) | |
:config | |
;; Set up Node debugging | |
(require 'dap-node) | |
(dap-node-setup) ;; Automatically installs Node debug adapter if needed | |
;; Bind `C-c l d` to `dap-hydra` for easy access | |
(general-define-key | |
:keymaps 'lsp-mode-map | |
:prefix lsp-keymap-prefix | |
"d" '(dap-hydra t :wk "debugger"))) | |
; must have python-language-server (pyls) installed | |
; pip install python-language-server[all] | |
(use-package python-mode | |
:ensure t | |
:hook (python-mode . lsp-deferred) | |
:custom | |
;; NOTE: Set these if Python 3 is called "python3" on your system! | |
;; (python-shell-interpreter "python3") | |
;; (dap-python-executable "python3") | |
(dap-python-debugger 'debugpy) | |
:config | |
(require 'dap-python)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment