-
-
Save q-eldar/ee9b73432a61a87c91493d86795c5bdf to your computer and use it in GitHub Desktop.
~/.emacs
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
;; https://www.reddit.com/r/emacs/comments/pg69k8/my_setupalmost_the_powerful_c_ide_and_consume_so/ | |
;; (setq warning-suppress-log-types '((package reinitialization))) | |
(menu-bar-mode -1) | |
(tool-bar-mode -1) | |
(tooltip-mode -1) ;; Disable tooltips | |
(setq display-line-numbers-type nil) | |
(scroll-bar-mode -1) | |
(setq-default fill-column 80) | |
;;(global-linum-mode -1) ;; disable line numbers globally | |
(pending-delete-mode t) | |
(global-set-key [f11] 'toggle-frame-fullscreen) | |
(column-number-mode) | |
(global-display-line-numbers-mode t) | |
(setq inhibit-startup-screen t) | |
(setq make-backup-files nil) | |
(setq auto-save-default nil) | |
(setq inhibit-startup-message t) | |
(setq org-src-window-setup 'current-window) | |
(setq org-confirm-babel-evaluate nil) | |
(setq org-src-preserve-indentation t) | |
(setq kill-buffer-query-functions nil) | |
(setq-default tab-width 2) | |
(setq-default indent-tabs-mode nil) | |
(fset 'yes-or-no-p 'y-or-n-p) | |
;;;; move line up | |
(defun move-line-up () | |
(interactive) | |
(transpose-lines 1) | |
(previous-line 2)) | |
;;;; move line down | |
(defun move-line-down () | |
(interactive) | |
(next-line 1) | |
(transpose-lines 1) | |
(previous-line 1)) | |
(global-set-key [(control shift t)] 'move-line-up) | |
(global-set-key [(meta shift t)] 'move-line-down) | |
(display-time-mode 1) | |
(require 'package) | |
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) | |
;; (add-to-list 'package-archives | |
;; '("marmalade" . "http://marmalade-repo.org/packages/") t) | |
;; (add-to-list 'package-archives | |
;; '("melpa" . "http://melpa.milkbox.net/packages/") t) | |
;; (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) | |
(setq package-archive-priorities '(("org" . 1) | |
("melpa" . 2) | |
("gnu" . 3))) | |
;; (add-to-list 'auto-mode-alist '("\\.launch$" . xml-mode)) | |
;; https://www.emacswiki.org/emacs/TrampAndDocker | |
(require 'tramp) | |
(push | |
(cons | |
"docker" | |
'((tramp-login-program "docker") | |
(tramp-login-args (("exec" "-it") ("%h") ("/bin/bash"))) | |
(tramp-remote-shell "/bin/bash") | |
(tramp-remote-shell-args ("-i") ("-c")))) | |
tramp-methods) | |
(defadvice tramp-completion-handle-file-name-all-completions | |
(around dotemacs-completion-docker activate) | |
"(tramp-completion-handle-file-name-all-completions \"\" \"/docker:\" returns | |
a list of active Docker container names, followed by colons." | |
(if (equal (ad-get-arg 1) "/docker:") | |
(let* ((dockernames-raw (shell-command-to-string "docker ps | perl -we 'use strict; $_ = <>; m/^(.*)NAMES/ or die; my $offset = length($1); while(<>) {substr($_, 0, $offset, q()); chomp; for(split m/\\W+/) {print qq($_:\n)} }'")) | |
(dockernames (cl-remove-if-not | |
#'(lambda (dockerline) (string-match ":$" dockerline)) | |
(split-string dockernames-raw "\n")))) | |
(setq ad-return-value dockernames)) | |
ad-do-it)) | |
(setq tramp-debug-buffer t) | |
(setq tramp-verbose 6) | |
(package-initialize) | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
(setq use-package-verbose t) | |
;; https://systemcrafters.net/advanced-package-management/using-straight-el/ | |
(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)) | |
(straight-use-package 'use-package) | |
(eval-when-compile | |
(require 'use-package)) | |
(use-package bind-key | |
:ensure t) | |
(use-package electric | |
:ensure t | |
:init | |
(progn | |
(electric-pair-mode 1)) | |
(setq electric-pair-pairs | |
'( | |
(?\" . ?\") | |
(?\' . ?\') | |
(?\[ . ?\]) | |
(?\{ . ?\})))) | |
(use-package modern-cpp-font-lock | |
:ensure t | |
:init | |
(add-hook 'c++-mode-hook #'modern-c++-font-lock-mode)) | |
(use-package rainbow-delimiters | |
:ensure t | |
:commands rainbow-delimiters-mode | |
:init | |
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode)) | |
(use-package all-the-icons | |
:ensure t) | |
(use-package doom-themes | |
:ensure t | |
:preface (defvar region-fg nil) | |
:config (load-theme 'doom-one t)) | |
(use-package multiple-cursors | |
:ensure t | |
:init | |
:bind(("C->" . mc/mark-next-like-this) | |
("C-<" . mc/mark-previous-like-this) | |
("C-c C-<" . mc/mark-all-like-this))) | |
;; https://karthinks.com/software/avy-can-do-anything/ | |
(use-package avy | |
:ensure t | |
:bind (;; ("C-:" . avy-goto-char) | |
;; ("C-o" . avy-goto-word-1) | |
("C-j" . avy-goto-char-timer) | |
;; ("C-ü" . avy-goto-line) | |
) | |
:config (setq avy-case-fold-search t)) | |
(use-package ivy | |
:ensure t) | |
;; https://sam217pa.github.io/2016/09/13/from-helm-to-ivy/ | |
;; https://github.com/abo-abo/swiper | |
(use-package swiper | |
:ensure t | |
:diminish ivy-mode | |
:bind (("C-r" . swiper) | |
("C-c C-r" . ivy-resume) | |
("C-c h m" . woman) | |
("C-x b" . ivy-switch-buffer) | |
("C-c u" . swiper-all) | |
("C-s" . swiper-isearch) | |
("C-'" . counsel-git-grep) | |
;; ("C-:" . counsel-git-grep) | |
) | |
:config | |
;; (ivy-mode 1) | |
(setq ivy-use-virtual-buffers t)) | |
(use-package counsel | |
:ensure t | |
:commands (counsel-mode) | |
:bind | |
(("M-y" . counsel-yank-pop) | |
:map ivy-minibuffer-map | |
("M-y" . ivy-next-line)) | |
("C-h v" . counsel-describe-variable) | |
("C-h f" . counsel-describe-function) | |
) | |
(use-package smartparens-config | |
:ensure smartparens | |
:commands (turn-on-smartparens-strict-mode) | |
;; :demand t | |
:init | |
(progn | |
(add-hook 'racket-mode-hook #'turn-on-smartparens-strict-mode) | |
(add-hook 'racket-repl-mode-hook #'turn-on-smartparens-strict-mode) | |
(add-hook 'lisp-mode-hook #'turn-on-smartparens-strict-mode) | |
(add-hook 'emacs-lisp-mode-hook #'turn-on-smartparens-strict-mode)) | |
:config | |
(progn | |
(setq sp-show-pair-delay 0) | |
(show-smartparens-global-mode t)) | |
:bind | |
(:map smartparens-mode-map | |
("C-M-f" . sp-forward-sexp) | |
("C-M-b" . sp-backward-sexp) | |
("C-M-d" . sp-down-sexp) | |
("C-M-e" . sp-up-sexp) | |
("C-M-a" . sp-backward-down-sexp) | |
("C-M-u" . sp-backward-up-sexp) | |
("C-S-d" . sp-beginning-of-sexp) | |
("C-S-a" . sp-end-of-sexp) | |
("C-M-n" . sp-next-sexp) | |
("C-M-p" . sp-previous-sexp) | |
("C-M-k" . sp-kill-sexp) | |
("C-M-w" . sp-copy-sexp) | |
("M-[" . sp-backward-unwrap-sexp) | |
("M-]" . sp-unwrap-sexp) | |
("C-)" . sp-forward-slurp-sexp) | |
("C-(" . sp-forward-barf-sexp) | |
("C-M-)" . sp-backward-slurp-sexp) | |
("C-M-(" . sp-backward-barf-sexp) | |
("M-D" . sp-splice-sexp) | |
("C-M-<delete>" . sp-spilce-sexp-killing-forward) | |
("C-M-<backspace>" . sp-splice-sexp-killing-backward) | |
("C-S-<backspace>" . sp-splice-sexp-killing-around) | |
("C-]" . sp-select-next-thing-exchange) | |
("C-M-]" . sp-select-next-thing) | |
("M-F" . sp-forward-symbol) | |
("M-B" . sp-backward-symbol) | |
("M-q" . sp-indent-defun) | |
("M-r" . sp-raise-sexp))) | |
(use-package expand-region | |
:ensure t | |
:commands (er/expand-region | |
er/mark-inside-pairs | |
er/mark-inside-quotes | |
er/mark-outside-pairs | |
er/mark-outside-quotes | |
er/mark-defun | |
er/mark-comment | |
er/mark-text-sentence | |
er/mark-text-paragraph | |
er/mark-word | |
er/mark-url | |
er/mark-email | |
er/mark-symbol) | |
:bind("C-'" . er/expand-region)) | |
;; mwim | |
(use-package mwim | |
:ensure t | |
:bind(("C-a" . mwim-beginning) | |
("C-e" . mwim-end))) | |
;; https://benaiah.me/posts/using-ido-emacs-completion/ | |
(use-package ido | |
:config | |
(setq ido-file-extensions-order '( ".cc" ".cpp" ".hpp" ".h" ".py" ".txt" ".xml" ".el")) | |
(setq ido-everywhere t | |
ido-enable-prefix nil | |
ido-enable-flex-matching t | |
ido-create-new-buffer 'always | |
ido-use-filename-at-point 'guess | |
ido-max-prospects 10 | |
ido-default-file-method 'selected-window | |
ido-auto-merge-work-directories-length nil | |
ido-virtual-buffers t | |
ido-use-faces t | |
ido-default-buffer-method 'selected-window | |
ido-auto-merge-work-directories-length -1) | |
(ido-mode t)) | |
(use-package flx-ido | |
:ensure t | |
:config | |
(flx-ido-mode +1) | |
;; disable ido faces to see flx highlights | |
;; (setq ido-use-faces nil) | |
) | |
(use-package ido-vertical-mode | |
:ensure t | |
:requires ido | |
:config (ido-vertical-mode)) | |
(use-package ido-completing-read+ | |
:ensure t | |
:requires ido | |
:config | |
(setq ido-ubiquitous-max-items 50000 | |
ido-cr+-max-items 50000) | |
(ido-ubiquitous-mode +1)) | |
(use-package ido-hacks | |
:ensure t | |
:requires ido | |
:config (ido-hacks-mode)) | |
(use-package ido-yes-or-no | |
:ensure t | |
:requires ido | |
:config (ido-yes-or-no-mode 1)) | |
;; https://zoomadmin.com/HowToInstall/UbuntuPackage/elpa-pdf-tools | |
;; https://github.com/vedang/pdf-tools | |
;; (use-package pdf-tools | |
;; ;; :ensure t | |
;; :pin manual | |
;; :config | |
;; (pdf-tools-install) | |
;; (setq-default pdf-view-display-size 'fit-width) | |
;; (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward) | |
;; (define-key pdf-view-mode-map (kbd "C-r") 'isearch-backward) | |
;; (global-linum-mode -1) | |
;; :custom | |
;; (pdf-annot-activate-created-annotations t "automatically annotate highlights")) | |
;; (setq TeX-view-program-selection '((output-pdf "PDF Tools")) | |
;; TeX-view-program-list '(("PDF Tools" TeX-pdf-tools-sync-view)) | |
;; TeX-source-correlate-start-server t) | |
(use-package org-bullets | |
:ensure t | |
:commands (org-bullets-mode) | |
:custom | |
;; https://zhangda.wordpress.com/2016/02/15/configurations-for-beautifying-emacs-org-mode/ | |
(org-bullets-bullet-list '("⁖" "☯" "▶" "◆" "○" "✸" "✿" "✜" )) | |
(org-ellipsis "⤵") | |
:init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) | |
(use-package ace-window | |
:ensure t | |
:bind ("M-o" . ace-window) | |
:delight | |
:config (ace-window-display-mode 1)) | |
;; sample `helm' configuration use https://github.com/emacs-helm/helm/ for details | |
;; (helm-mode) | |
;; (require 'helm-xref) | |
;; (define-key global-map [remap find-file] #'ido-find-files) | |
;; (define-key global-map [remap execute-extended-command] #'ido-M-x) | |
;; (define-key global-map [remap switch-to-buffer] #'ido-mini) | |
;; (defun lsp-mode-setup () | |
;; (setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols)) | |
;; (lsp-headerline-breadcrumb-mode)) | |
;; (add-to-list 'load-path "~/.emacs.d/source/company-cmake/company-cmake.el") | |
;; (load "cmake-mode") ;; best not to include the ending “.el” or “.elc” | |
(use-package lsp-mode | |
:ensure t | |
:diminish lsp-mode | |
:init | |
;; (setq lsp-keymap-prefix "s-o") | |
(setq ;; lsp-auto-guess-root t | |
lsp-prefer-capf t | |
lsp-print-io t | |
lsp-keep-workspace-alive nil) | |
:config | |
(setq lsp-auto-configure t | |
;; don't set flymake or lsp-ui so the default linter doesn't get trampled | |
lsp-diagnostic-package :none) | |
(define-key lsp-mode-map (kbd "M-/") 'lsp-ido-workspace-symbol) | |
(setq lsp-ui-doc-enable nil) | |
(setq lsp-prefer-capf t) | |
(setq lsp-diagnostics-provider :none) | |
(setq lsp-headerline-breadcrumb-enable t) | |
(setq lsp-headerline-breadcrumb-segments '(project file symbols | |
)) | |
(setq lsp-headerline-breadcrumb-icons-enable t) | |
(setq gc-cons-threshold (* 100 1024 1024) | |
read-process-output-max (* 1024 1024) | |
treemacs-space-between-root-nodes nil | |
company-idle-delay 0.0 | |
company-minimum-prefix-length 1 | |
lsp-idle-delay 0.1) ;; clangd is fast | |
;; https://emacs.stackexchange.com/questions/58015/how-to-stop-lsp-mode-including-headers-automatically-for-c-c-code | |
;; (setq lsp-clients-clangd-args '("--header-insertion=never")) | |
;; https://github.com/emacs-lsp/lsp-mode/issues/1902 | |
(setq lsp-completion-enable-additional-text-edit nil) | |
:bind ("C-c d d" . 'lsp-ui-doc-show) | |
:bind ("C-c d h" . 'lsp-ui-doc-hide) | |
;; :bind ("M-i" . 'lsp-ido-workspace-symbol) | |
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) | |
;; (c++-mode . lsp-deferred) | |
(cpp-mode . lsp-deferred) | |
(go-mode . lsp-deferred) ;https://github.com/golang/tools/blob/master/gopls/doc/emacs.md#loading-lsp-mode-in-emacs | |
;; (cmake-mode . lsp-deferred) | |
((js2-mode rjsx-mode) . lsp) ;; https://www.chadstovern.com/javascript-in-emacs-revisited/ | |
;; if you want which-key integration | |
(lsp-mode . lsp-enable-which-key-integration)) | |
:commands (lsp lsp-deferred)) | |
;; sudo apt install python-is-python3 | |
;; https://emacs-lsp.github.io/lsp-python-ms/ | |
;; (use-package lsp-python-ms | |
;; :ensure t | |
;; ;; :init (setq lsp-python-ms-auto-install-server t) | |
;; :hook (python-mode . (lambda () | |
;; (require 'lsp-python-ms) ; | |
;; (lsp-deferred)))) ; or lsp | |
;; https://github.com/emacs-lsp/lsp-pyright | |
;; https://emacs.stackexchange.com/questions/71261/how-to-set-up-lsp-pyright-to-show-all-errors | |
;; https://stackoverflow.com/questions/55320815/how-do-i-install-and-run-pyright-from-the-cli-instead-of-using-vs-code | |
;; https://github.com/microsoft/pyright | |
;; https://pypi.org/project/pyright/ | |
(use-package lsp-pyright | |
:ensure t | |
:hook (python-mode . (lambda () | |
(require 'lsp-pyright) | |
(lsp)))) ; or lsp-deferred | |
(require 'lsp-mode) | |
(lsp-register-client | |
(make-lsp-client :new-connection (lsp-tramp-connection "clangd") | |
:major-modes '(c-mode c++-mode) | |
:remote? t | |
:server-id 'clangd-remote)) | |
;; https://github.com/python-lsp/python-lsp-server | |
;; pip install python-lsp-server | |
(lsp-register-client | |
(make-lsp-client :new-connection (lsp-tramp-connection "pyright") | |
:major-modes '(python-mode) | |
:remote? t | |
:server-id 'pyright-remote)) | |
(use-package projectile | |
:ensure t | |
:config | |
(projectile-mode 1)) | |
(use-package lsp-ido | |
;; :ensure t | |
:commands lsp-ido-workspace-symbol | |
:config | |
(setq lsp-ido-show-symbol-kind t | |
lsp-ido-show-symbol-filename t)) | |
(use-package lsp-treemacs | |
:ensure t | |
:after lsp | |
:config | |
(lsp-treemacs-sync-mode 1) | |
:commands lsp-treemacs-errors-list) | |
(use-package lsp-ui | |
:ensure t | |
:config | |
(setq lsp-ui-sideline-enable t | |
;; disable flycheck setup so default linter isn't trampled | |
lsp-ui-flycheck-enable nil | |
lsp-ui-sideline-show-symbol nil | |
lsp-ui-sideline-show-hover nil | |
lsp-ui-sideline-show-code-actions nil | |
lsp-ui-peek-enable nil | |
lsp-ui-imenu-enable nil | |
lsp-ui-doc-enable nil) | |
(define-key lsp-ui-mode-map (kbd "M-.") 'lsp-ui-peek-find-definitions) | |
(define-key lsp-ui-mode-map [remap xref-find-definitions] #'lsp-ui-peek-find-definitions) | |
(define-key lsp-ui-mode-map [remap xref-find-references] #'lsp-ui-peek-find-references) | |
:hook (lsp-mode . lsp-ui-mode) | |
:commands lsp-ui-mode) | |
;; Open files in Docker containers like so: /docker:drunk_bardeen:/etc/passwd | |
;; (push | |
;; (cons | |
;; "docker" | |
;; '((tramp-login-program "docker") | |
;; (tramp-login-args (("exec" "-it") ("%h") ("/bin/bash"))) | |
;; (tramp-remote-shell "/bin/sh") | |
;; (tramp-remote-shell-args ("-i") ("-c")))) | |
;; tramp-methods) | |
;; (defadvice tramp-completion-handle-file-name-all-completions | |
;; (around dotemacs-completion-docker activate) | |
;; "(tramp-completion-handle-file-name-all-completions \"\" \"/docker:\" returns | |
;; a list of active Docker container names, followed by colons." | |
;; (if (equal (ad-get-arg 1) "/docker:") | |
;; (let* ((dockernames-raw (shell-command-to-string "docker ps | awk '$NF != \"NAMES\" { print $NF \":\" }'")) | |
;; (dockernames (cl-remove-if-not | |
;; #'(lambda (dockerline) (string-match ":$" dockerline)) | |
;; (split-string dockernames-raw "\n")))) | |
;; (setq ad-return-value dockernames)) | |
;; ad-do-it)) | |
(use-package which-key | |
:ensure t | |
:diminish which-key-mode | |
:config | |
(which-key-mode)) | |
;; (use-package cmake-mode | |
;; :ensure t | |
;; :mode ("CMakeLists\\.txt\\'" "\\.cmake\\'") | |
;; :hook (cmake-mode . lsp-deferred)) | |
(use-package cmake-font-lock | |
:ensure t | |
:after cmake-mode | |
:config (cmake-font-lock-activate)) | |
;; https://github.com/emacs-lsp/lsp-mode/issues/1451 | |
;; https://tychoish.com/post/better-company/ | |
(use-package company | |
:ensure t | |
:after lsp-mode | |
:init | |
(setq company-tooltip-align-annotations t | |
company-tooltip-limit 14 | |
company-idle-delay 0 | |
company-echo-delay (if (display-graphic-p) nil 0) | |
company-minimum-prefix-length 2 | |
company-require-match 'never | |
company-dabbrev-ignore-case nil | |
company-dabbrev-downcase nil | |
company-global-modes '(not erc-mode message-mode help-mode gud-mode eshell-mode shell-mode) | |
company-backends '(company-capf company-keywords company-files company-clang company-cmake company-etags) | |
company-frontends '(company-pseudo-tooltip-frontend | |
company-echo-metadata-frontend)) | |
:hook ( | |
(lsp-mode . company-mode) | |
(cmake-mode . company-mode) | |
) | |
:bind (:map company-active-map | |
("<tab>" . company-complete-selection)) | |
(:map lsp-mode-map | |
("<tab>" . company-indent-or-complete-common)) | |
:custom | |
(company-minimum-prefix-length 1) | |
(company-idle-delay 0.0)) | |
(setq company-format-margin-function nil) | |
(setq completion-in-region-function #'consult-completion-in-region) | |
(add-hook 'lsp-completion-mode-hook | |
(lambda () | |
(setf (alist-get 'lsp-capf completion-category-defaults) '((styles . (orderless)))))) | |
(add-hook 'lsp-managed-mode-hook (lambda () (setq-local company-backends '(company-capf)))) | |
(use-package company-lsp | |
:defer t | |
:config | |
(setq company-lsp-cache-candidates 'auto | |
company-lsp-async t | |
company-lsp-enable-snippet nil | |
company-lsp-enable-recompletion t)) | |
(use-package major-mode-hydra | |
:ensure t | |
:demand t | |
:bind | |
("M-SPC" . major-mode-hydra)) | |
(use-package org | |
:ensure nil | |
:mode ("\\.org\\'" . org-mode) | |
:bind (("C-c l" . org-store-link) | |
("C-c c" . org-capture) | |
("C-c a" . org-agenda) | |
("C-c b" . org-iswitchb) | |
("C-c C-w" . org-refile) | |
("C-c j" . org-clock-goto) | |
("C-c C-x C-o" . org-clock-out) | |
:map org-mode-map | |
("<" . (lambda () | |
"Insert org template." | |
(interactive) | |
(if (or (region-active-p) (looking-back "^\s*" 1)) | |
(org-hydra/body) | |
(self-insert-command 1))))) | |
:commands (org-dynamic-block-define) | |
:custom-face (org-ellipsis ((t (:foreground nil)))) | |
:pretty-hydra | |
((:color blue :quit-key "q" :title "Org Template") | |
("Basic" | |
( ("c" (hot-expand "<c") "center") | |
("E" (hot-expand "<E") "export") | |
("h" (hot-expand "<h") "html") | |
("l" (hot-expand "<l") "latex") | |
("n" (hot-expand "<n") "note") | |
("o" (hot-expand "<q") "quote") | |
) | |
"Head" | |
(("i" (hot-expand "<i") "index") | |
("A" (hot-expand "<A") "ASCII") | |
("I" (hot-expand "<I") "INCLUDE") | |
("H" (hot-expand "<H") "HTML") | |
("L" (hot-expand "<L") "LaTeX")) | |
"Source" | |
(("S" (hot-expand "<s") "src") | |
("m" (hot-expand "<s" "emacs-lisp") "emacs-lisp") | |
("p" (hot-expand "<s" "python :tangle \"demo.py\" :results output") "python") | |
("s" (hot-expand "<s" "shell") "shell") | |
)) | |
) | |
:hook (((org-babel-after-execute org-mode) . org-redisplay-inline-images) ; display image | |
;; (org-mode . (lambda () | |
;; "Beautify org symbols." | |
;; (setq prettify-symbols-alist centaur-prettify-org-symbols-alist) | |
;; (prettify-symbols-mode 1))) | |
(org-indent-mode . (lambda() | |
(diminish 'org-indent-mode) | |
;; WORKAROUND: Prevent text moving around while using brackets | |
;; @see https://github.com/seagle0128/.emacs.d/issues/88 | |
(make-variable-buffer-local 'show-paren-mode) | |
(setq show-paren-mode nil)))) | |
:config | |
;; (setq org-startup-indented nil) | |
;; https://github.com/seagle0128/.emacs.d/blob/master/lisp/init-org.el | |
(defun hot-expand (str &optional mod) | |
"Expand org template. | |
STR is a structure template string recognised by org like <s. MOD is a | |
string with additional parameters to add the begin line of the | |
structure element. HEADER string includes more parameters that are | |
prepended to the element after the #+HEADER: tag." | |
(let (text) | |
(when (region-active-p) | |
(setq text (buffer-substring (region-beginning) (region-end))) | |
(delete-region (region-beginning) (region-end))) | |
(insert str) | |
(if (fboundp 'org-try-structure-completion) | |
(org-try-structure-completion) ; < org 9 | |
(progn | |
;; New template expansion since org 9 | |
(require 'org-tempo nil t) | |
(org-tempo-complete-tag))) | |
(when mod (insert mod) (forward-line)) | |
(when text (insert text)))) | |
;; Babel | |
(setq org-confirm-babel-evaluate nil | |
org-src-fontify-natively t | |
org-src-tab-acts-natively t) | |
(defvar load-language-list '((emacs-lisp . t) | |
(python . t) | |
(C . t) | |
(shell . t))) | |
(org-babel-do-load-languages 'org-babel-load-languages | |
load-language-list) | |
(setq org-src-window-setup 'current-window) | |
(setq org-src-preserve-indentation t) | |
(setq org-time-clocksum-format '(:hours "%d" :require-hours t :minutes ":%02d" :require-minutes t)) | |
(setq org-startup-folded t) | |
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) | |
(setq org-catch-invisible-edits 'smart)) | |
;; (use-package emmet-mode | |
;; :ensure t | |
;; :after(web-mode css-mode scss-mode) | |
;; :commands (emmet-mode emmet-expand-line yas/insert-snippet yas-insert-snippet company-complete) | |
;; :config | |
;; (setq emmet-move-cursor-between-quotes t) | |
;; (add-hook 'emmet-mode-hook (lambda () (setq emmet-indent-after-insert nil))) | |
;; (add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes | |
;; (add-hook 'css-mode-hook 'emmet-mode) ;; enable Emmet's css abbreviation. | |
;; (add-hook 'xml-mode-hook 'emmet-mode) | |
;; ;(setq emmet-indentation 2) | |
;; (unbind-key "C-M-<left>" emmet-mode-keymap) | |
;; (unbind-key "C-M-<right>" emmet-mode-keymap) | |
;; :bind | |
;; ("C-j" . emmet-expand-line) | |
;; ((:map emmet-mode-keymap | |
;; ("C-c [" . emmet-prev-edit-point) | |
;; ("C-c ]" . emmet-next-edit-point))) | |
;; );end emmet mode | |
;; org-roam | |
;; https://lucidmanager.org/productivity/taking-notes-with-emacs-org-mode-and-org-roam/ | |
(use-package org-roam | |
:ensure t | |
:custom | |
(org-roam-directory (file-truename "/home/me/gtd/new_start/roam/")) | |
:bind (("C-c n l" . org-roam-buffer-toggle) | |
("C-c n f" . org-roam-node-find) | |
("C-c n g" . org-roam-graph) | |
("C-c n i" . org-roam-node-insert) | |
("C-c n c" . org-roam-capture) | |
;; Dailies | |
("C-c n j" . org-roam-dailies-capture-today)) | |
:config | |
;; If you're using a vertical completion framework, you might want a more informative completion interface | |
(setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) | |
(org-roam-db-autosync-mode) | |
;; If using org-roam-protocol | |
(require 'org-roam-protocol)) | |
;; https://github.com/org-roam/org-roam-ui | |
(use-package org-roam-ui | |
:straight | |
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out")) | |
:after org-roam | |
;; 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 t)) | |
(add-hook 'python-mode-hook | |
(lambda () | |
(define-key python-mode-map "\C-\M-n" 'python-nav-end-of-block) | |
(define-key python-mode-map "\C-\M-p" 'python-nav-backward-block))) | |
;; (global-set-key "\M-p" 'backward-paragraph) | |
;; (global-set-key "\M-n" 'forward-paragraph) | |
(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. | |
'(ignored-local-variable-values '((encoding . utf-8))) | |
'(package-selected-packages | |
'(org-roam-ui org-roam yaml-mode sudo-edit ag tablist dockerfile-mode major-mode-hydra pretty-hydra cmake-font-lock projectile company-box all-the-icons ido-yes-or-no ido-ubiquitous ido-hacks ido-vertical-mode ido-completing-read+ lsp-ido modern-cpp-font-lock cmake-mode dap-mode company lsp-ui lsp-mode which-key ace-window org-bullets flx-ido mwim expand-region smartparens smex counsel swiper ivy avy multiple-cursors doom-themes rainbow-delimiters use-package)) | |
'(warning-suppress-types '((use-package) (comp)))) | |
(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. | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment