emacs.d

bloated emacs configuration
git clone git://git.ckyln.com/~cem/emacs.d.git
Log | Files | Refs | README

commit 3f32549f326681e4c069bbf2d8ac7b7fa717e2df
parent 2230e55814d7452f44a11abcb0c13ccaa63aaed5
Author: Cem Keylan <cem@ckyln.com>
Date:   Tue, 31 Mar 2020 01:09:51 +0300

indent all code blocks

Diffstat:
Minit.org | 518++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 259 insertions(+), 259 deletions(-)

diff --git a/init.org b/init.org @@ -57,14 +57,14 @@ If you want to use my emacs configuration, it is pretty simple to get started. Simply clone the repository and start emacs! #+BEGIN_SRC sh :tangle no -# Move your old configuration (if you have one) -mv $HOME/.emacs.d $HOME/.emacs.d.bak + # Move your old configuration (if you have one) + mv $HOME/.emacs.d $HOME/.emacs.d.bak -# Clone the repository -git clone git://git.ckyln.com/emacs.d $HOME/.emacs.d + # Clone the repository + git clone git://git.ckyln.com/emacs.d $HOME/.emacs.d -# Start emacs -emacs + # Start emacs + emacs #+END_SRC This will probably take a while, especially because it is @@ -78,7 +78,7 @@ and see git wanting to update init.el as well. You can avoid this by doing #+BEGIN_SRC sh :tangle no -git update-index --assume-unchanged init.el + git update-index --assume-unchanged init.el #+END_SRC ** Meta @@ -86,17 +86,17 @@ git update-index --assume-unchanged init.el To load init.el properly we run a function such as this. #+BEGIN_SRC emacs-lisp - (defun tangle-init () - "If the current buffer is 'init.org' the code-blocks are - tangled, and the tangled file is compiled." - (when (equal (buffer-file-name) - (expand-file-name (concat user-emacs-directory "init.org"))) - ;; Avoid running hooks when tangling. - (let ((prog-mode-hook nil)) - (org-babel-tangle) - (byte-compile-file (concat user-emacs-directory "init.el"))))) + (defun tangle-init () + "If the current buffer is 'init.org' the code-blocks are + tangled, and the tangled file is compiled." + (when (equal (buffer-file-name) + (expand-file-name (concat user-emacs-directory "init.org"))) + ;; Avoid running hooks when tangling. + (let ((prog-mode-hook nil)) + (org-babel-tangle) + (byte-compile-file (concat user-emacs-directory "init.el"))))) - (add-hook 'after-save-hook 'tangle-init) + (add-hook 'after-save-hook 'tangle-init) #+END_SRC ** Attribution @@ -121,8 +121,8 @@ bars and menus. Also let's disable the splash screen. ** Declutter #+BEGIN_SRC emacs-lisp -(menu-bar-mode 0) -(setq inhibit-splash-screen t) + (menu-bar-mode 0) + (setq inhibit-splash-screen t) #+END_SRC If you are using emacs-nox, tool-bar-mode (probably) and @@ -130,8 +130,8 @@ scroll-bar-mode will not be defined. This checks if they are defined, and, if they are, will set them to 0. #+BEGIN_SRC emacs-lisp -(when (fboundp 'tool-bar-mode) (tool-bar-mode 0)) -(when (fboundp 'scroll-bar-mode) (scroll-bar-mode 0)) + (when (fboundp 'tool-bar-mode) (tool-bar-mode 0)) + (when (fboundp 'scroll-bar-mode) (scroll-bar-mode 0)) #+END_SRC ** Package management @@ -143,24 +143,24 @@ is the one time bootstrapping script that straight.el uses to install itself. #+BEGIN_SRC emacs-lisp -(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)) + (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)) #+END_SRC We need use-package for maintaining other packages. #+BEGIN_SRC emacs-lisp -(straight-use-package 'use-package) + (straight-use-package 'use-package) #+END_SRC ** Custom-file @@ -169,25 +169,25 @@ I don't like custom variables on my init.el, I prefer having it on my cache folder. #+BEGIN_SRC emacs-lisp -(setq custom-file "~/.cache/emacs-custom.el") + (setq custom-file "~/.cache/emacs-custom.el") #+END_SRC Let's load the custom-file if it is there #+BEGIN_SRC emacs-lisp -(when (file-exists-p custom-file) -(load custom-file)) + (when (file-exists-p custom-file) + (load custom-file)) #+END_SRC ** Private file Let's load a private file if it exists #+BEGIN_SRC emacs-lisp -(add-hook - 'after-init-hook - (lambda () - (let ((private-file (concat user-emacs-directory "private.el"))) - (when (file-exists-p private-file) - (load-file private-file))))) + (add-hook + 'after-init-hook + (lambda () + (let ((private-file (concat user-emacs-directory "private.el"))) + (when (file-exists-p private-file) + (load-file private-file))))) #+END_SRC ** Diary file @@ -195,8 +195,8 @@ I use my diary on a Sync directory, so I can share between computers. #+BEGIN_SRC emacs-lisp -(defvar diary-file) -(setq diary-file "~/Org/agenda/diary") + (defvar diary-file) + (setq diary-file "~/Org/agenda/diary") #+END_SRC ** Starting the server I used to have an alias for running emacsclient, now I @@ -224,9 +224,9 @@ You can install the generated emc script by doing #+END_SRC #+BEGIN_SRC emacs-lisp -(require 'server) -(or (server-running-p) - (server-start)) + (require 'server) + (or (server-running-p) + (server-start)) #+END_SRC * Packages @@ -241,27 +241,27 @@ while I am using Emacs. Let's begin with the evil-mode itself. #+BEGIN_SRC emacs-lisp -(use-package evil - :straight t - :init - (setq - evil-want-keybinding nil - evil-want-C-i-jump nil - ) - :config - (evil-mode 1)) + (use-package evil + :straight t + :init + (setq + evil-want-keybinding nil + evil-want-C-i-jump nil + ) + :config + (evil-mode 1)) #+END_SRC We didn't ask for the keybindings yet, because we are going to get the =evil-collection= package now. #+BEGIN_SRC emacs-lisp -(use-package evil-collection - :requires evil - :after evil - :straight t - :config - (evil-collection-init)) + (use-package evil-collection + :requires evil + :after evil + :straight t + :config + (evil-collection-init)) #+END_SRC *** evil-surround @@ -270,12 +270,12 @@ I used to make use of vim-sandwich, but evil-surround will also do the job well for me. #+BEGIN_SRC emacs-lisp -(use-package evil-surround - :requires evil - :after evil - :straight t - :config - (global-evil-surround-mode 1)) + (use-package evil-surround + :requires evil + :after evil + :straight t + :config + (global-evil-surround-mode 1)) #+END_SRC ** Org-mode @@ -286,15 +286,15 @@ currently trying to tweak portions of it from Bernt's configuration. See the [[Attribution]] section. #+BEGIN_SRC emacs-lisp -(use-package org -:straight t -:functions org-babel-tangle -:init -'(require 'ox-md nil t) -'(require 'ox-man nil t) -'(org-export-backends - (quote - (ascii beamer html latex man md groff)))) + (use-package org + :straight t + :functions org-babel-tangle + :init + '(require 'ox-md nil t) + '(require 'ox-man nil t) + '(org-export-backends + (quote + (ascii beamer html latex man md groff)))) #+END_SRC *** evil-org @@ -302,15 +302,15 @@ the [[Attribution]] section. I am quite serious on this vim stuff now. I want it everywhere. #+BEGIN_SRC emacs-lisp -(use-package evil-org - :straight t - :requires (evil org) - :after (evil org) - :functions evil-org-agenda-set-keys - :config - (add-hook 'org-mode-hook 'evil-org-mode) - (require 'evil-org-agenda) - (evil-org-agenda-set-keys)) + (use-package evil-org + :straight t + :requires (evil org) + :after (evil org) + :functions evil-org-agenda-set-keys + :config + (add-hook 'org-mode-hook 'evil-org-mode) + (require 'evil-org-agenda) + (evil-org-agenda-set-keys)) #+END_SRC Now that we have initialized those packages, let's configure them some @@ -319,22 +319,22 @@ further. *** Keybindings and default values #+BEGIN_SRC emacs-lisp -(global-set-key (kbd "C-c l") 'org-store-link) -(global-set-key (kbd "C-c a") 'org-agenda) -(global-set-key (kbd "C-c c") 'org-capture) + (global-set-key (kbd "C-c l") 'org-store-link) + (global-set-key (kbd "C-c a") 'org-agenda) + (global-set-key (kbd "C-c c") 'org-capture) -(defvar org-directory) -(defvar org-agenda-include-diary) -(defvar org-default-notes-file) + (defvar org-directory) + (defvar org-agenda-include-diary) + (defvar org-default-notes-file) -(setq - org-directory "~/Org/" - org-agenda-include-diary t - org-default-notes-file "~/Org/refile.org" -) + (setq + org-directory "~/Org/" + org-agenda-include-diary t + org-default-notes-file "~/Org/refile.org" + ) -(defvar org-agenda-span) -(setq org-agenda-span 'day) + (defvar org-agenda-span) + (setq org-agenda-span 'day) #+END_SRC *** Orgmode TODO configuration @@ -343,51 +343,51 @@ Code below is written for adding more possible sequences depending on the project I am working on. #+BEGIN_SRC emacs-lisp -(setq org-todo-keywords - (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") - (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING")))) + (setq org-todo-keywords + (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") + (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING")))) -(setq org-todo-keyword-faces - (quote (("TODO" :foreground "orange red" :weight bold) - ("NEXT" :foreground "cyan" :weight bold) - ("DONE" :foreground "spring green" :weight bold) - ("WAITING" :foreground "orange" :weight bold) - ("HOLD" :foreground "hot pink" :weight bold) - ("CANCELLED" :foreground "spring green" :weight bold) - ("MEETING" :foreground "spring green" :weight bold) - ("PHONE" :foreground "spring green" :weight bold)))) + (setq org-todo-keyword-faces + (quote (("TODO" :foreground "orange red" :weight bold) + ("NEXT" :foreground "cyan" :weight bold) + ("DONE" :foreground "spring green" :weight bold) + ("WAITING" :foreground "orange" :weight bold) + ("HOLD" :foreground "hot pink" :weight bold) + ("CANCELLED" :foreground "spring green" :weight bold) + ("MEETING" :foreground "spring green" :weight bold) + ("PHONE" :foreground "spring green" :weight bold)))) -(setq org-use-fast-todo-selection t) + (setq org-use-fast-todo-selection t) #+END_SRC *** Org-capture and refiling #+BEGIN_SRC emacs-lisp -(setq org-capture-templates - (quote (("t" "todo" entry (file "~/Org/refile.org") - "* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t) - ("r" "respond" entry (file "~/Org/refile.org") - "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) - ("n" "note" entry (file "~/Org/refile.org") - "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) - ("j" "Journal" entry (file+datetree "~/Org/diary.org") - "* %?\n%U\n" :clock-in t :clock-resume t) - ("w" "org-protocol" entry (file "~/Org/refile.org") - "* TODO Review %c\n%U\n" :immediate-finish t) - ("m" "Meeting" entry (file "~/Org/refile.org") - "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t) - ("p" "Phone call" entry (file "~/Org/refile.org") - "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t) - ("h" "Habit" entry (file "~/Org/refile.org") - "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n")))) + (setq org-capture-templates + (quote (("t" "todo" entry (file "~/Org/refile.org") + "* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t) + ("r" "respond" entry (file "~/Org/refile.org") + "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) + ("n" "note" entry (file "~/Org/refile.org") + "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) + ("j" "Journal" entry (file+datetree "~/Org/diary.org") + "* %?\n%U\n" :clock-in t :clock-resume t) + ("w" "org-protocol" entry (file "~/Org/refile.org") + "* TODO Review %c\n%U\n" :immediate-finish t) + ("m" "Meeting" entry (file "~/Org/refile.org") + "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t) + ("p" "Phone call" entry (file "~/Org/refile.org") + "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t) + ("h" "Habit" entry (file "~/Org/refile.org") + "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n")))) #+END_SRC Let's set targets to =org-agenda-files=. #+BEGIN_SRC emacs-lisp -(setq org-refile-targets (quote ((nil :maxlevel . 9) - (org-agenda-files :maxlevel . 9)))) + (setq org-refile-targets (quote ((nil :maxlevel . 9) + (org-agenda-files :maxlevel . 9)))) -(setq org-refile-use-outline-path t) -(setq org-outline-path-complete-in-steps nil) -(setq org-refile-allow-creating-parent-nodes (quote confirm)) + (setq org-refile-use-outline-path t) + (setq org-outline-path-complete-in-steps nil) + (setq org-refile-allow-creating-parent-nodes (quote confirm)) #+END_SRC ** Magit @@ -396,19 +396,19 @@ you have to manually edit hunks for specific commits. I use evil-magit along with it. #+BEGIN_SRC emacs-lisp -(use-package magit - :straight t - :config - (global-set-key (kbd "C-x g") 'magit-status)) + (use-package magit + :straight t + :config + (global-set-key (kbd "C-x g") 'magit-status)) #+END_SRC *** evil-magit #+BEGIN_SRC emacs-lisp -(use-package evil-magit - :straight t - :requires (evil magit) - :config (evil-magit-init)) + (use-package evil-magit + :straight t + :requires (evil magit) + :config (evil-magit-init)) #+END_SRC ** Flycheck @@ -418,11 +418,11 @@ and adds to the IDE-likeness of Emacs. I find things like these to be really hacky and buggy on Vim. #+BEGIN_SRC emacs-lisp -(use-package flycheck - :straight t - :config - (setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc)) - :init (global-flycheck-mode)) + (use-package flycheck + :straight t + :config + (setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc)) + :init (global-flycheck-mode)) #+END_SRC ** Company Mode @@ -432,11 +432,11 @@ have completion tools on Vim, but I don't understand company that much yet. Pretty simple config. #+BEGIN_SRC emacs-lisp -(use-package company - :straight t - :config (global-company-mode 1) - (setq company-idle-delay 0) - (setq company-minimum-prefix-length 1)) + (use-package company + :straight t + :config (global-company-mode 1) + (setq company-idle-delay 0) + (setq company-minimum-prefix-length 1)) #+END_SRC *** Company LSP @@ -445,66 +445,66 @@ I am using Company's own Language Server Protocol. It is good as far as I can wrap my head-around. #+BEGIN_SRC emacs-lisp -(use-package company-lsp - :straight t - :after company - :init - (push 'company-lsp company-backends)) + (use-package company-lsp + :straight t + :after company + :init + (push 'company-lsp company-backends)) #+END_SRC ** Mingus Mingus is an [[https://musicpd.org][MPD]] client for the Emacs operating system. It has a rather simple, straightforward interface. #+BEGIN_SRC emacs-lisp -(use-package mingus :straight t) -(global-set-key (kbd "C-c m") 'mingus) + (use-package mingus :straight t) + (global-set-key (kbd "C-c m") 'mingus) #+END_SRC ** Projectile #+BEGIN_SRC emacs-lisp -(use-package projectile - :straight t - :init (projectile-mode +1) - (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) + (use-package projectile + :straight t + :init (projectile-mode +1) + (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) #+END_SRC ** Treemacs #+BEGIN_SRC emacs-lisp -(use-package treemacs - :straight t - :defines treemacs-no-png-images - :init - (global-set-key (kbd "C-c t") 'treemacs) - (setq treemacs-no-png-images t)) + (use-package treemacs + :straight t + :defines treemacs-no-png-images + :init + (global-set-key (kbd "C-c t") 'treemacs) + (setq treemacs-no-png-images t)) -(use-package treemacs-evil - :straight t - :requires treemacs - :after (treemacs evil)) + (use-package treemacs-evil + :straight t + :requires treemacs + :after (treemacs evil)) -(use-package treemacs-magit - :straight t - :requires treemacs - :after (treemacs magit)) + (use-package treemacs-magit + :straight t + :requires treemacs + :after (treemacs magit)) -(use-package treemacs-projectile - :straight t - :requires treemacs - :after (treemacs projectile)) + (use-package treemacs-projectile + :straight t + :requires treemacs + :after (treemacs projectile)) #+END_SRC ** emacs-dashboard #+BEGIN_SRC emacs-lisp -(use-package dashboard - :straight t - :defines show-week-agenda-p - :init - (setq dashboard-center-content t) - (setq show-week-agenda-p nil) - (setq dashboard-set-footer nil) - (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) - (setq dashboard-items '((recents . 5) - (bookmarks . 5) - (projects . 5) - (agenda . 10))) - :config (dashboard-setup-startup-hook)) + (use-package dashboard + :straight t + :defines show-week-agenda-p + :init + (setq dashboard-center-content t) + (setq show-week-agenda-p nil) + (setq dashboard-set-footer nil) + (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) + (setq dashboard-items '((recents . 5) + (bookmarks . 5) + (projects . 5) + (agenda . 10))) + :config (dashboard-setup-startup-hook)) #+END_SRC ** Extras @@ -515,7 +515,7 @@ These don't really deserve their own sections, but I prefer to use them. This is a package for re-initiating a file as root. #+BEGIN_SRC emacs-lisp -(use-package sudo-edit :straight t) + (use-package sudo-edit :straight t) #+END_SRC *** linum-relative @@ -523,12 +523,12 @@ I just like seeing the current line number and the relatives of the other lines. #+BEGIN_SRC emacs-lisp -(use-package linum-relative - :straight t - :init - (setq linum-relative-current-symbol "") - (global-set-key (kbd "C-C r") 'linum-relative-mode) - :config (linum-relative-mode 1)) + (use-package linum-relative + :straight t + :init + (setq linum-relative-current-symbol "") + (global-set-key (kbd "C-C r") 'linum-relative-mode) + :config (linum-relative-mode 1)) #+END_SRC *** elfeed @@ -537,7 +537,7 @@ I have elfeed which I have connected to my Nextcloud account, it is nice to have something synced. #+BEGIN_SRC emacs-lisp -(use-package elfeed :straight t) + (use-package elfeed :straight t) #+END_SRC *** markdown-mode @@ -546,9 +546,9 @@ I sometimes use this to test the HTML output of markdown documents that I write. #+BEGIN_SRC emacs-lisp -(use-package markdown-mode - :straight t - :config (setq markdown-command "/usr/bin/markdown")) + (use-package markdown-mode + :straight t + :config (setq markdown-command "/usr/bin/markdown")) #+END_SRC *** htmlize @@ -557,7 +557,7 @@ I sometimes output html from org-mode as it comes handy. We use htmlize for that. #+BEGIN_SRC emacs-lisp -(use-package htmlize :straight t) + (use-package htmlize :straight t) #+END_SRC *** toc-org @@ -567,10 +567,10 @@ even without exporting the file itself. This is also useful for the Github README. #+BEGIN_SRC emacs-lisp -(use-package toc-org - :straight t - :config - (add-hook 'org-mode-hook 'toc-org-mode)) + (use-package toc-org + :straight t + :config + (add-hook 'org-mode-hook 'toc-org-mode)) #+END_SRC * Filetype Configurations @@ -584,9 +584,9 @@ Here is the default formatting for most files. I don't like tabs as indents so I avoid them wherever I can. #+BEGIN_SRC emacs-lisp -(setq-default indent-tabs-mode nil - tab-width 8 - fill-column 80) + (setq-default indent-tabs-mode nil + tab-width 8 + fill-column 80) #+END_SRC ** Markdown @@ -594,12 +594,12 @@ so I avoid them wherever I can. For markdown, I want to have 4 spaces as an indentation. #+BEGIN_SRC emacs-lisp -(defvar md-indent-tabs-mode) -(defvar md-tab-width) -(setq - md-indent-tabs-mode nil - md-tab-width 4 -) + (defvar md-indent-tabs-mode) + (defvar md-tab-width) + (setq + md-indent-tabs-mode nil + md-tab-width 4 + ) #+END_SRC ** Shell @@ -607,12 +607,12 @@ For markdown, I want to have 4 spaces as an indentation. For shell, I want to have 4 spaces as an indentation. #+BEGIN_SRC emacs-lisp -(defvar sh-indent-tabs-mode) -(defvar sh-tab-width) -(setq - sh-indent-tabs-mode nil - sh-tab-width 4 -) + (defvar sh-indent-tabs-mode) + (defvar sh-tab-width) + (setq + sh-indent-tabs-mode nil + sh-tab-width 4 + ) #+END_SRC ** Python @@ -624,11 +624,11 @@ Company jedi is for better completion while I am editing python files. Here is the use-package #+BEGIN_SRC emacs-lisp -(use-package company-jedi - :straight t - :after company - :config - (add-to-list 'company-backends 'company-jedi)) + (use-package company-jedi + :straight t + :after company + :config + (add-to-list 'company-backends 'company-jedi)) #+END_SRC * Other Settings @@ -641,43 +641,43 @@ I use suckless.org's =sbase= as my coreutils. The =ls= program that I use does not have a =--dired= option. Let's disable it. #+BEGIN_SRC emacs-lisp -(defvar dired-use-ls-dired) -(setq dired-use-ls-dired nil) + (defvar dired-use-ls-dired) + (setq dired-use-ls-dired nil) #+END_SRC ** Coding System for Terminal I want emacs to use utf-8 so my terminal isn't filled with '?' characters. #+BEGIN_SRC emacs-lisp -(set-terminal-coding-system 'utf-8) + (set-terminal-coding-system 'utf-8) #+END_SRC ** Docker I got this tramp configuration from [[https://willschenk.com/articles/2020/tramp_tricks]] #+BEGIN_SRC emacs-lisp -(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)) + (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)) #+END_SRC ** Backup Options #+BEGIN_SRC emacs-lisp -(setq backup-directory-alist `(("." . "~/.cache/emacs/saves"))) + (setq backup-directory-alist `(("." . "~/.cache/emacs/saves"))) #+END_SRC ** Set Browser @@ -686,8 +686,8 @@ I am setting the default browser from the BROWSER environment variable so that I don't have to keep track of it in case I ever change my browser. #+BEGIN_SRC emacs-lisp -(setq - browse-url-generic-program (executable-find (getenv "BROWSER")) - browse-url-browser-function 'browse-url-generic -) + (setq + browse-url-generic-program (executable-find (getenv "BROWSER")) + browse-url-browser-function 'browse-url-generic + ) #+END_SRC