bunch of stuff

This commit is contained in:
opal
2021-12-24 20:29:45 -08:00
parent a3c2b64294
commit d9ed862089
6 changed files with 422 additions and 94 deletions
+150 -41
View File
@@ -75,15 +75,7 @@
(use-package helpful (use-package helpful
:straight t :straight t
:commands (helpful-callable helpful-variable helpful-command helpful-key) :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))
(use-package super-save (use-package super-save
:straight t :straight t
@@ -127,7 +119,7 @@
(global-set-key (kbd "<escape>") 'keyboard-escape-quit) ;; Escape exits out of prompts (global-set-key (kbd "<escape>") 'keyboard-escape-quit) ;; Escape exits out of prompts
;; Define Leader Key ;; Define Leader Key
(use-package general (use-package general
:straight t :straight t
:config :config
@@ -136,9 +128,9 @@
:keymaps '(normal insert visual emacs) :keymaps '(normal insert visual emacs)
:prefix "SPC" :prefix "SPC"
:global-prefix "C-SPC") :global-prefix "C-SPC")
;; Define Keybindings (potentially move into own file) ;; Define Keybindings (potentially move into own file)
(opal/leader-keys (opal/leader-keys
;; Leader-map ;; Leader-map
";" #'pp-eval-expression ;; Eval expression ";" #'pp-eval-expression ;; Eval expression
":" #'execute-extended-command ;; Eq to M-x ":" #'execute-extended-command ;; Eq to M-x
"u" #'universal-argument ;; Universal argument "u" #'universal-argument ;; Universal argument
@@ -152,21 +144,25 @@
"gg" #'magit-status "gg" #'magit-status
"gi" #'magit-init "gi" #'magit-init
"gc" #'magit-clone "gc" #'magit-clone
;; Buffers ;; Workspaces
"bd" #'kill-buffer "bi" #'persp-ibuffer
"bl" #'persp-next
"bh" #'persp-prev
"br" #'persp-rename
"bd" #'persp-remove-buffer
;; Terminal/Shell ;; Terminal/Shell
"tt" #'vterm "tt" #'vterm
"te" #'eshell "te" #'eshell
;; Org ;; Org
; Babel ;; Babel
"obt" #'org-babel-tangle "obt" #'org-babel-tangle
; Gen ;; Gen
"ol" #'org-insert-link "ol" #'org-insert-link
"or" #'org-reload "or" #'org-reload
; Agenda ;; Agenda
"oa" #'org-agenda "oa" #'org-agenda
;; Eval ;; Eval
@@ -284,11 +280,53 @@
:init :init
(marginalia-mode)) (marginalia-mode))
(use-package company
:straight t
:commands (company-complete-common
company-complete-common-or-cycle
company-manual-begin
company-grab-line)
:init
(setq company-minimum-prefix-length 2
company-tooltip-limit 14
company-tooltip-align-annotations t
company-require-match 'never
company-global-modes
'(not erc-mode
message-mode
help-mode
vterm-mode)
company-frontends
'(company-pseudo-tooltip-frontend ; always show candidates in overlay tooltip
company-echo-metadata-frontend) ; show selected candidate docs in echo area
company-backends '(company-capf)
company-auto-commit nil
company-dabbrev-other-buffers nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil))
(use-package perspective
:straight t
:config
(persp-mode))
(use-package bufler :straight t) (use-package bufler :straight t)
(use-package winner (use-package winner
:straight t) :straight t)
(use-package dired
:init
(setq dired-auto-revert-buffer t
dired-dwim-target t
dired-hide-details-hide-symlink-targets nil
dired-recursive-copies 'always
dired-recursive-deletes 'top
dired-create-destination-dirs 'ask))
(use-package dired-rsync
:straight t
:general (dired-mode-map "C-c C-r" #'dired-rsync))
(use-package all-the-icons-dired :straight t) (use-package all-the-icons-dired :straight t)
(use-package dired-single :straight t) (use-package dired-single :straight t)
(use-package dired-collapse :straight t) (use-package dired-collapse :straight t)
@@ -319,16 +357,6 @@
(dired-rainbow-define vc "#0074d9" ("git" "gitignore" "gitattributes" "gitmodules")) (dired-rainbow-define vc "#0074d9" ("git" "gitignore" "gitattributes" "gitmodules"))
(dired-rainbow-define-chmod executable-unix "#38c172" "-.*x.*")) (dired-rainbow-define-chmod executable-unix "#38c172" "-.*x.*"))
;; Set org agenda dir
(setq org-directory "~/Org/")
;; Tell Org to stop indenting inside of org source blocks.
(setq org-edit-src-content-indentation 0)
;; Open links in browser
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "firefox")
(defun opal/org-font-setup () (defun opal/org-font-setup ()
;; Replace list hyphen with dot ;; Replace list hyphen with dot
(font-lock-add-keywords 'org-mode (font-lock-add-keywords 'org-mode
@@ -439,6 +467,16 @@
("pp" "Project File" entry (file+olp "~/org/projects/auto-infra-overview.org" "Inbox") ("pp" "Project File" entry (file+olp "~/org/projects/auto-infra-overview.org" "Inbox")
"* TODO %?\n %U\n %a\n %i" :empty-lines 1))) "* TODO %?\n %U\n %a\n %i" :empty-lines 1)))
;; Tell Org to stop indenting inside of org source blocks.
(setq org-edit-src-content-indentation 0)
;; Set org agenda dir
(setq org-directory "~/Org/")
;; Open links in browser
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "firefox")
;; Init org font setup ;; Init org font setup
(opal/org-font-setup)) (opal/org-font-setup))
@@ -449,6 +487,8 @@
:custom :custom
(org-bullets-bullet-list '("" "" "" "" "" "" ""))) (org-bullets-bullet-list '("" "" "" "" "" "" "")))
(use-package org-make-toc :straight t)
(defun opal/org-mode-visual-fill () (defun opal/org-mode-visual-fill ()
(setq visual-fill-column-width 100 (setq visual-fill-column-width 100
visual-fill-column-center-text t) visual-fill-column-center-text t)
@@ -462,7 +502,8 @@
(with-eval-after-load 'org (with-eval-after-load 'org
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
'((emacs-lisp . t))) '((emacs-lisp . t)
(lisp . t)))
(push '("conf-unix" . conf-unix) org-src-lang-modes)) (push '("conf-unix" . conf-unix) org-src-lang-modes))
@@ -474,12 +515,7 @@
(add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(add-to-list 'org-structure-template-alist '("py" . "src python"))
(add-to-list 'org-structure-template-alist '("yml" . "src yaml"))
(add-to-list 'org-structure-template-alist '("scm" . "src scheme")) (add-to-list 'org-structure-template-alist '("scm" . "src scheme"))
(add-to-list 'org-structure-template-alist '("js" . "src javascript"))
(add-to-list 'org-structure-template-alist '("html" . "src html"))
(add-to-list 'org-structure-template-alist '("css" . "src css"))
(add-to-list 'org-structure-template-alist '("cl" . "src lisp"))) (add-to-list 'org-structure-template-alist '("cl" . "src lisp")))
(use-package flycheck :straight t) (use-package flycheck :straight t)
@@ -509,6 +545,7 @@
evil)) evil))
(add-hook 'prog-mode-hook #'parinfer-mode))) (add-hook 'prog-mode-hook #'parinfer-mode)))
(defvar inferior-lisp-program "sbcl")
(use-package sly :straight t) (use-package sly :straight t)
(use-package magit (use-package magit
@@ -517,7 +554,6 @@
(use-package eshell-git-prompt :straight t) (use-package eshell-git-prompt :straight t)
(use-package eshell (use-package eshell
:hook (eshell-first-time-mode . eshell-config)
:config :config
;; Save command history when commands are entered ;; Save command history when commands are entered
(add-hook 'eshell-pre-command-hook 'eshell-save-some-history) (add-hook 'eshell-pre-command-hook 'eshell-save-some-history)
@@ -529,16 +565,28 @@
(evil-define-key '(normal insert visual) eshell-mode-map (kbd "<home>") 'eshell-bol) (evil-define-key '(normal insert visual) eshell-mode-map (kbd "<home>") 'eshell-bol)
(evil-normalize-keymaps) (evil-normalize-keymaps)
(setq eshell-history-size 10000
eshell-buffer-maximum-lines 10000
eshell-hist-ignoredups t
eshell-scroll-to-bottom-on-input t)
(with-eval-after-load 'esh-opt (with-eval-after-load 'esh-opt
(setq eshell-destroy-buffer-when-process-dies t) (setq eshell-destroy-buffer-when-process-dies t)
(setq eshell-visual-commands '("htop" "zsh" "vim"))) (setq eshell-visual-commands '("htop" "zsh" "vim")))
(eshell-git-prompt-use-theme 'powerline)) (eshell-git-prompt-use-theme 'powerline)
(setq eshell-banner-message
'(format "%s %s\n"
(propertize (format " %s " (string-trim (buffer-name)))
'face 'mode-line-highlight)
(propertize (current-time-string)
'face 'font-lock-keyword-face))
eshell-scroll-to-bottom-on-input 'all
eshell-scroll-to-bottom-on-output 'all
eshell-kill-processes-on-exit t
eshell-hist-ignoredups t
;; em-prompt
eshell-prompt-regexp "^.* λ "
;; em-glob
eshell-history-size 10000
eshell-buffer-maximum-lines 10000
eshell-scroll-to-bottom-on-input t))
(use-package vterm (use-package vterm
:straight t :straight t
@@ -601,3 +649,64 @@
;; erc-interpret-mirc-color t ;; erc-interpret-mirc-color t
;; erc-rename-buffers t ;; erc-rename-buffers t
;; erc-track-exclude-server-buffer t)) ;; erc-track-exclude-server-buffer t))
;; (defun efs/exwm-update-class ()
;; (exwm-workspace-rename-buffer exwm-class-name))
;; (use-package exwm
;; :config
;; (setq exwm-workspace-number 5)
;; ;; These keys will pass through to Emacs
;; (setq exwm-input-prefix-keys
;; '(?\C-x
;; ?\C-u
;; ?\C-h
;; ?\M-x
;; ?\M-`
;; ?\M-&
;; ?\M-:
;; ?\C-\M-j ;; Buffer list
;; ?\C-\ )) ;; Ctrl+Space
;; ;; This will allow the next key to be sent directly
;; (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
;; ;; Set up global key bindings. These always work, no matter the input state!
;; ;; Keep in mind that changing this list after EXWM initializes has no effect.
;; (setq exwm-input-global-keys
;; `(
;; ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard)
;; ([?\s-r] . exwm-reset)
;; ;; Move between windows
;; ([s-h] . windmove-left)
;; ([s-l] . windmove-right)
;; ([s-k] . windmove-up)
;; ([s-j] . windmove-down)
;; ;; Launch applications via shell command
;; ([?\s-&] . (lambda (command)
;; (interactive (list (read-shell-command "$ ")))
;; (start-process-shell-command command nil command)))
;; ;; Switch workspace
;; ([?\s-w] . exwm-workspace-switch)
;; ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9)
;; ,@(mapcar (lambda (i)
;; `(,(kbd (format "s-%d" i)) .
;; (lambda ()
;; (interactive)
;; (exwm-workspace-switch-create ,i))))
;; (number-sequence 0 9))))
;; (start-process-shell-command "xrandr" nil "")
;; (start-process-shell-command "xmodmap" nil "xmodmap ~/.config/exwm/Xmodmap")
;; (require 'exwm-randr)
;; (exwm-randr-enable)
;; (require 'exwm-systemtray)
;; (exwm-systemtray-enable)
;; (exwm-enable))
+2
View File
@@ -0,0 +1,2 @@
clear lock
keycode 66 = Escape Caps_Lock NoSymbol NoSymbol
+60 -1
View File
@@ -1,4 +1,9 @@
(load-after-system :slynk "~/.config/nyxt/my-slynk.lisp") (in-package :nyxt)
(load "~/quicklisp/setup.lisp")
(ql:quickload 'slynk)
(load-after-system :slynk (nyxt-init-file "my-slink.lisp"))
;; (load-after-system :slynk "~/.config/nyxt/my-slynk.lisp")
;; Vim-normal mode by default ;; Vim-normal mode by default
(define-configuration buffer (define-configuration buffer
@@ -125,6 +130,47 @@
(define-configuration buffer (define-configuration buffer
((password-interface (make-instance 'password:user-keepassxc-interface)))) ((password-interface (make-instance 'password:user-keepassxc-interface))))
(define-command set-url (&key (prefill-current-url-p t))
"Set the URL for the current buffer, completing with history."
(let ((history (set-url-history *browser*))
(actions (list (make-command buffer-load* (suggestion-values)
"Load first selected URL in current buffer and the rest in new buffer(s)."
(mapc (lambda (suggestion) (make-buffer :url (url suggestion))) (rest suggestion-values))
(buffer-load (url (first suggestion-values))))
(make-command new-buffer-load (suggestion-values)
"Load URL(s) in new buffer(s)."
(mapc (lambda (suggestion) (make-buffer :url (url suggestion))) (rest suggestion-values))
(make-buffer-focus :url (url (first suggestion-values)))))))
(pushnew-url-history history (url (current-buffer)))
(prompt
:prompt "Open URL"
:input (if prefill-current-url-p
(render-url (url (current-buffer))) "")
:history history
:sources (list (make-instance 'user-new-url-or-search-source :actions actions)
(make-instance 'bookmark-source :actions actions)
(make-instance 'user-global-history-source :actions actions)
(make-instance 'search-engine-url-source :actions actions)))))
(define-command set-url-new-buffer (&key (prefill-current-url-p t))
"Prompt for a URL and set it in a new focused buffer."
(let ((history (set-url-history *browser*))
(actions (list (make-command new-buffer-load (suggestion-values)
"Load URL(s) in new buffer(s)"
(mapc (lambda (suggestion) (make-buffer :url (url suggestion)))
(rest suggestion-values))
(make-buffer-focus :url (url (first suggestion-values)))))))
(pushnew-url-history history (url (current-buffer)))
(prompt
:prompt "Open URL in new buffer"
:input (if prefill-current-url-p
(render-url (url (current-buffer))) "")
:history history
:sources (list (make-instance 'user-new-url-or-search-source :actions actions)
(make-instance 'bookmark-source :actions actions)
(make-instance 'user-global-history-source :actions actions)
(make-instance 'search-engine-url-source :actions actions)))))
;; I would like to implement redirection, or some extension to handle it for me. ;; I would like to implement redirection, or some extension to handle it for me.
;; todo: Redirect reddit to teddit ;; todo: Redirect reddit to teddit
;; (defun old-reddit-handler (request-data) ;; (defun old-reddit-handler (request-data)
@@ -142,3 +188,16 @@
;; ((request-resource-hook ;; ((request-resource-hook
;; (hooks:add-hook %slot-default% (make-handler-resource #'old-reddit-handler))))) ;; (hooks:add-hook %slot-default% (make-handler-resource #'old-reddit-handler)))))
;; (See url-dispatching-handler for a simpler way to achieve the same result.) ;; (See url-dispatching-handler for a simpler way to achieve the same result.)
(defun nyxt-init-file (&optional subpath)
"Return SUBPATH relative to `*init-file-path*'.
Return nil if `*init-file-path*' is nil.
Example:
If we want to load a define-command procedure that lives in ~/path/to/nyxt/config/dir/my-slink.lisp
(load-after-system :slynk (nyxt-init-file \"my-slink.lisp\"))"
(if subpath
(uiop:subpathname* (uiop:pathname-directory-pathname
(expand-path *init-file-path*))
subpath)
(expand-path *init-file-path*)))
+1 -1
View File
@@ -19,4 +19,4 @@
!.config/doom !.config/doom
!.config/user-dirs.dirs !.config/user-dirs.dirs
!.gitignore !.gitignore
!.stow-local-ignore !.stow-local-ignore
+186 -41
View File
@@ -1,10 +1,32 @@
#+TITLE: Emacs Configuration #+TITLE: Emacs Configuration
#+PROPERTY: header-args:emacs-lisp :tangle ~/Dotfiles/.config/emacs/init.el :mkdirp yes :lexical yes #+PROPERTY: header-args:emacs-lisp :tangle ~/Dotfiles/.config/emacs/init.el :mkdirp yes :lexical yes
* Emacs Configuration * Configuration
** Table of Contents
:PROPERTIES: :PROPERTIES:
:VISIBILITY: children :TOC: :include all :depth 3 :force (depth) :ignore (this) :local (depth)
:END: :END:
:CONTENTS:
- [[#configuration][Configuration]]
- [[#package-management][Package Management]]
- [[#general][General]]
- [[#theme][Theme]]
- [[#fonts][Fonts]]
- [[#keybinding][Keybinding]]
- [[#completion-frameworks][Completion Frameworks]]
- [[#buffer--workspaces][Buffer & Workspaces]]
- [[#file-browser][File Browser]]
- [[#org][Org]]
- [[#programmingeditor][Programming/Editor]]
- [[#tools][Tools]]
- [[#magit][Magit]]
- [[#eshell][Eshell]]
- [[#vterm][Vterm]]
- [[#pdf][PDF]]
- [[#e-mail][E-Mail]]
- [[#irc][IRC]]
:END:
** Package Management ** Package Management
I use [[https://github.com/raxod502/straight.el][straight.el]] for managing packages as it's fairly simple and robust. At some point I'd like to move to primarily using Guix for Emacs package management. I use [[https://github.com/raxod502/straight.el][straight.el]] for managing packages as it's fairly simple and robust. At some point I'd like to move to primarily using Guix for Emacs package management.
@@ -114,15 +136,7 @@ Helpful.el is a package that reformats the describe-X functions to be much more
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package helpful (use-package helpful
:straight t :straight t
:commands (helpful-callable helpful-variable helpful-command helpful-key) :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))
#+end_src #+end_src
*** Autosaves *** Autosaves
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -188,7 +202,7 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire
#+begin_src emacs-lisp #+begin_src emacs-lisp
(global-set-key (kbd "<escape>") 'keyboard-escape-quit) ;; Escape exits out of prompts (global-set-key (kbd "<escape>") 'keyboard-escape-quit) ;; Escape exits out of prompts
;; Define Leader Key ;; Define Leader Key
(use-package general (use-package general
:straight t :straight t
:config :config
@@ -197,9 +211,9 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire
:keymaps '(normal insert visual emacs) :keymaps '(normal insert visual emacs)
:prefix "SPC" :prefix "SPC"
:global-prefix "C-SPC") :global-prefix "C-SPC")
;; Define Keybindings (potentially move into own file) ;; Define Keybindings (potentially move into own file)
(opal/leader-keys (opal/leader-keys
;; Leader-map ;; Leader-map
";" #'pp-eval-expression ;; Eval expression ";" #'pp-eval-expression ;; Eval expression
":" #'execute-extended-command ;; Eq to M-x ":" #'execute-extended-command ;; Eq to M-x
"u" #'universal-argument ;; Universal argument "u" #'universal-argument ;; Universal argument
@@ -213,21 +227,25 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire
"gg" #'magit-status "gg" #'magit-status
"gi" #'magit-init "gi" #'magit-init
"gc" #'magit-clone "gc" #'magit-clone
;; Buffers ;; Workspaces
"bd" #'kill-buffer "bi" #'persp-ibuffer
"bl" #'persp-next
"bh" #'persp-prev
"br" #'persp-rename
"bd" #'persp-remove-buffer
;; Terminal/Shell ;; Terminal/Shell
"tt" #'vterm "tt" #'vterm
"te" #'eshell "te" #'eshell
;; Org ;; Org
; Babel ;; Babel
"obt" #'org-babel-tangle "obt" #'org-babel-tangle
; Gen ;; Gen
"ol" #'org-insert-link "ol" #'org-insert-link
"or" #'org-reload "or" #'org-reload
; Agenda ;; Agenda
"oa" #'org-agenda "oa" #'org-agenda
;; Eval ;; Eval
@@ -241,8 +259,7 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire
"dv" #'describe-variable "dv" #'describe-variable
"ds" #'describe-symbol "ds" #'describe-symbol
"dk" #'describe-key "dk" #'describe-key
"dp" #'describe-package)) "dp" #'describe-package))
#+end_src #+end_src
*** Evil *** Evil
@@ -330,7 +347,7 @@ Persistent history
(savehist-mode)) (savehist-mode))
#+end_src #+end_src
*** Counsel *** Consult
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package consult (use-package consult
:straight t :straight t
@@ -369,7 +386,42 @@ Marginalia provides annotations next to minibuffer items.
(marginalia-mode)) (marginalia-mode))
#+end_src #+end_src
*** Company
#+begin_src emacs-lisp
(use-package company
:straight t
:commands (company-complete-common
company-complete-common-or-cycle
company-manual-begin
company-grab-line)
:init
(setq company-minimum-prefix-length 2
company-tooltip-limit 14
company-tooltip-align-annotations t
company-require-match 'never
company-global-modes
'(not erc-mode
message-mode
help-mode
vterm-mode)
company-frontends
'(company-pseudo-tooltip-frontend ; always show candidates in overlay tooltip
company-echo-metadata-frontend) ; show selected candidate docs in echo area
company-backends '(company-capf)
company-auto-commit nil
company-dabbrev-other-buffers nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil))
#+end_src
** Buffer & Workspaces ** Buffer & Workspaces
*** Perspective
#+begin_src emacs-lisp
(use-package perspective
:straight t
:config
(persp-mode))
#+end_src
*** Bufler *** Bufler
Helps organize buffers in groups. Helps organize buffers in groups.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -384,6 +436,18 @@ Allows window undo
** File Browser ** File Browser
I don't even think I've heard of an alternative to Dired... I don't even think I've heard of an alternative to Dired...
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dired
:init
(setq dired-auto-revert-buffer t
dired-dwim-target t
dired-hide-details-hide-symlink-targets nil
dired-recursive-copies 'always
dired-recursive-deletes 'top
dired-create-destination-dirs 'ask))
(use-package dired-rsync
:straight t
:general (dired-mode-map "C-c C-r" #'dired-rsync))
(use-package all-the-icons-dired :straight t) (use-package all-the-icons-dired :straight t)
(use-package dired-single :straight t) (use-package dired-single :straight t)
(use-package dired-collapse :straight t) (use-package dired-collapse :straight t)
@@ -417,16 +481,6 @@ I don't even think I've heard of an alternative to Dired...
** Org ** Org
*** General Configuration *** General Configuration
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; Set org agenda dir
(setq org-directory "~/Org/")
;; Tell Org to stop indenting inside of org source blocks.
(setq org-edit-src-content-indentation 0)
;; Open links in browser
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "firefox")
(defun opal/org-font-setup () (defun opal/org-font-setup ()
;; Replace list hyphen with dot ;; Replace list hyphen with dot
(font-lock-add-keywords 'org-mode (font-lock-add-keywords 'org-mode
@@ -537,6 +591,16 @@ I don't even think I've heard of an alternative to Dired...
("pp" "Project File" entry (file+olp "~/org/projects/auto-infra-overview.org" "Inbox") ("pp" "Project File" entry (file+olp "~/org/projects/auto-infra-overview.org" "Inbox")
"* TODO %?\n %U\n %a\n %i" :empty-lines 1))) "* TODO %?\n %U\n %a\n %i" :empty-lines 1)))
;; Tell Org to stop indenting inside of org source blocks.
(setq org-edit-src-content-indentation 0)
;; Set org agenda dir
(setq org-directory "~/Org/")
;; Open links in browser
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "firefox")
;; Init org font setup ;; Init org font setup
(opal/org-font-setup)) (opal/org-font-setup))
#+end_src #+end_src
@@ -552,6 +616,11 @@ Creates nicer (-) bullets.
(org-bullets-bullet-list '("" "" "" "" "" "" ""))) (org-bullets-bullet-list '("" "" "" "" "" "" "")))
#+end_src #+end_src
*** Org Table of Contents
#+begin_src emacs-lisp
(use-package org-make-toc :straight t)
#+end_src
*** Visual Fill Mode *** Visual Fill Mode
Creates margins in Org mode to make it more pleasant to look at. Creates margins in Org mode to make it more pleasant to look at.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -631,6 +700,7 @@ Sets HTML strings to have the background of the color they represent.
#+end_src #+end_src
*** Common Lisp *** Common Lisp
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defvar inferior-lisp-program "sbcl")
(use-package sly :straight t) (use-package sly :straight t)
#+end_src #+end_src
* Tools * Tools
@@ -644,7 +714,6 @@ Sets HTML strings to have the background of the color they represent.
(use-package eshell-git-prompt :straight t) (use-package eshell-git-prompt :straight t)
(use-package eshell (use-package eshell
:hook (eshell-first-time-mode . eshell-config)
:config :config
;; Save command history when commands are entered ;; Save command history when commands are entered
(add-hook 'eshell-pre-command-hook 'eshell-save-some-history) (add-hook 'eshell-pre-command-hook 'eshell-save-some-history)
@@ -656,16 +725,28 @@ Sets HTML strings to have the background of the color they represent.
(evil-define-key '(normal insert visual) eshell-mode-map (kbd "<home>") 'eshell-bol) (evil-define-key '(normal insert visual) eshell-mode-map (kbd "<home>") 'eshell-bol)
(evil-normalize-keymaps) (evil-normalize-keymaps)
(setq eshell-history-size 10000
eshell-buffer-maximum-lines 10000
eshell-hist-ignoredups t
eshell-scroll-to-bottom-on-input t)
(with-eval-after-load 'esh-opt (with-eval-after-load 'esh-opt
(setq eshell-destroy-buffer-when-process-dies t) (setq eshell-destroy-buffer-when-process-dies t)
(setq eshell-visual-commands '("htop" "zsh" "vim"))) (setq eshell-visual-commands '("htop" "zsh" "vim")))
(eshell-git-prompt-use-theme 'powerline)) (eshell-git-prompt-use-theme 'powerline)
(setq eshell-banner-message
'(format "%s %s\n"
(propertize (format " %s " (string-trim (buffer-name)))
'face 'mode-line-highlight)
(propertize (current-time-string)
'face 'font-lock-keyword-face))
eshell-scroll-to-bottom-on-input 'all
eshell-scroll-to-bottom-on-output 'all
eshell-kill-processes-on-exit t
eshell-hist-ignoredups t
;; em-prompt
eshell-prompt-regexp "^.* λ "
;; em-glob
eshell-history-size 10000
eshell-buffer-maximum-lines 10000
eshell-scroll-to-bottom-on-input t))
#+end_src #+end_src
** Vterm ** Vterm
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -742,3 +823,67 @@ Right now I'm pretty happy with Matrix bridging into IRC rooms so this will stay
;; erc-rename-buffers t ;; erc-rename-buffers t
;; erc-track-exclude-server-buffer t)) ;; erc-track-exclude-server-buffer t))
#+end_src #+end_src
* Window Management (EXWM)
#+begin_src emacs-lisp
;; (defun efs/exwm-update-class ()
;; (exwm-workspace-rename-buffer exwm-class-name))
;; (use-package exwm
;; :config
;; (setq exwm-workspace-number 5)
;; ;; These keys will pass through to Emacs
;; (setq exwm-input-prefix-keys
;; '(?\C-x
;; ?\C-u
;; ?\C-h
;; ?\M-x
;; ?\M-`
;; ?\M-&
;; ?\M-:
;; ?\C-\M-j ;; Buffer list
;; ?\C-\ )) ;; Ctrl+Space
;; ;; This will allow the next key to be sent directly
;; (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
;; ;; Set up global key bindings. These always work, no matter the input state!
;; ;; Keep in mind that changing this list after EXWM initializes has no effect.
;; (setq exwm-input-global-keys
;; `(
;; ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard)
;; ([?\s-r] . exwm-reset)
;; ;; Move between windows
;; ([s-h] . windmove-left)
;; ([s-l] . windmove-right)
;; ([s-k] . windmove-up)
;; ([s-j] . windmove-down)
;; ;; Launch applications via shell command
;; ([?\s-&] . (lambda (command)
;; (interactive (list (read-shell-command "$ ")))
;; (start-process-shell-command command nil command)))
;; ;; Switch workspace
;; ([?\s-w] . exwm-workspace-switch)
;; ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9)
;; ,@(mapcar (lambda (i)
;; `(,(kbd (format "s-%d" i)) .
;; (lambda ()
;; (interactive)
;; (exwm-workspace-switch-create ,i))))
;; (number-sequence 0 9))))
;; (start-process-shell-command "xrandr" nil "")
;; (start-process-shell-command "xmodmap" nil "xmodmap ~/.config/exwm/Xmodmap")
;; (require 'exwm-randr)
;; (exwm-randr-enable)
;; (require 'exwm-systemtray)
;; (exwm-systemtray-enable)
;; (exwm-enable))
#+end_src
+23 -10
View File
@@ -4,18 +4,15 @@
Nyxt is a browser written in Common Lisp that follows the same philosophy of extensibility as Emacs. This makes it a perfect companion to an Emacs centered eco-system when you need a browser with more features than Eww or w3m. Nyxt is a browser written in Common Lisp that follows the same philosophy of extensibility as Emacs. This makes it a perfect companion to an Emacs centered eco-system when you need a browser with more features than Eww or w3m.
* Load Quicklisp * Load Quicklisp
#+begin_src emacs-lisp #+begin_src lisp
(in-package :nyxt)
(load "~/quicklisp/setup.lisp") (load "~/quicklisp/setup.lisp")
(ql:quickload 'slynk) (ql:quickload 'slynk)
;; #-quicklisp
;; (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
;; (user-homedir-pathname))))
;; (when (probe-file quicklisp-init)
;; (load quicklisp-init)))
#+end_src #+end_src
* Start Slynk server * Import Functions
#+begin_src lisp #+begin_src lisp
(load-after-system :slynk "~/.config/nyxt/my-slynk.lisp") (load-after-system :slynk (nyxt-init-file "my-slink.lisp"))
;; (load-after-system :slynk "~/.config/nyxt/my-slynk.lisp")
#+end_src #+end_src
* Keybindings * Keybindings
@@ -153,8 +150,9 @@ Password managers are an essential feature and thankfully Nyxt allows me to inte
((password-interface (make-instance 'password:user-keepassxc-interface)))) ((password-interface (make-instance 'password:user-keepassxc-interface))))
#+end_src #+end_src
* Functions * Functions
#+begin_src emacs-lisp ** Show bookmarks first
(in-package :nyxt) I've ripped these functions out of the source code and swapped the sources in order to have bookmarks show up first upon executing set-url or set-url-new-buffer.
#+begin_src lisp
(define-command set-url (&key (prefill-current-url-p t)) (define-command set-url (&key (prefill-current-url-p t))
"Set the URL for the current buffer, completing with history." "Set the URL for the current buffer, completing with history."
(let ((history (set-url-history *browser*)) (let ((history (set-url-history *browser*))
@@ -220,3 +218,18 @@ I would like to keep expanding on these redirection functions so I can have nati
;; (hooks:add-hook %slot-default% (make-handler-resource #'old-reddit-handler))))) ;; (hooks:add-hook %slot-default% (make-handler-resource #'old-reddit-handler)))))
;; (See url-dispatching-handler for a simpler way to achieve the same result.) ;; (See url-dispatching-handler for a simpler way to achieve the same result.)
#+end_src #+end_src
* Testing
#+begin_src lisp
(defun nyxt-init-file (&optional subpath)
"Return SUBPATH relative to `*init-file-path*'.
Return nil if `*init-file-path*' is nil.
Example:
If we want to load a define-command procedure that lives in ~/path/to/nyxt/config/dir/my-slink.lisp
(load-after-system :slynk (nyxt-init-file \"my-slink.lisp\"))"
(if subpath
(uiop:subpathname* (uiop:pathname-directory-pathname
(expand-path *init-file-path*))
subpath)
(expand-path *init-file-path*)))
#+end_src