diff options
author | Grant Shangreaux <shoshin@cicadas.surf> | 2023-02-27 19:23:59 -0600 |
---|---|---|
committer | Grant Shangreaux <shoshin@cicadas.surf> | 2023-02-27 19:23:59 -0600 |
commit | b703719204e712d39ce61ce4d88cb8fb21c1a58c (patch) | |
tree | bb8e5ad97067af321a53d2a685d09e174765dd6f | |
parent | 563cde73b661fcb84ca1c42b79e8b2db121796dd (diff) |
Add: a bunch of stuff for slime, telephone-line config, company
-rw-r--r-- | shoshimacs.el | 78 | ||||
-rw-r--r-- | shoshimacs.org | 123 |
2 files changed, 152 insertions, 49 deletions
diff --git a/shoshimacs.el b/shoshimacs.el index cd40724..8d22251 100644 --- a/shoshimacs.el +++ b/shoshimacs.el @@ -134,21 +134,22 @@ (define-key vertico-map (kbd "M-DEL") #'vertico-directory-delete-word) (define-key vertico-map (kbd "M-j") #'vertico-quick-insert) -(package-install 'corfu) -(setq corfu-auto t - corfu-cycle t - corfu-quit-no-match t) -(global-corfu-mode t) +(package-install 'company) -(package-install 'corfu-terminal) -(unless (display-graphic-p) - (corfu-terminal-mode +1)) +(setq company-minimum-prefix-length 2 + company-idle-delay 0.3) ;; default is 0.2 + +(add-hook 'after-init-hook 'global-company-mode) (package-install 'which-key) (which-key-mode) ;;; Editing -(electric-pair-mode) +(package-install 'smartparens) +(require 'smartparens-config) +(smartparens-global-mode 1) +;(sp-local-pair 'sly-mrepl-mode "'" nil :actions nil) +(sp-local-pair 'slime-repl-mode "'" nil :actions nil) (package-install 'markdown-mode) @@ -170,6 +171,10 @@ (package-install 'org-tree-slide) +(add-to-list 'org-structure-template-alist '("se" . "src emacs-lisp")) +(add-to-list 'org-structure-template-alist '("sr" . "src ruby")) +(add-to-list 'org-structure-template-alist '("ss" . "src shell")) + (recentf-mode) (setq indent-tabs-mode nil @@ -188,6 +193,7 @@ (format "git clone %s %s" slime-repo slime-src-dir))) (add-to-list 'load-path slime-src-dir) +(require 'slime-autoloads) (let ((default-directory (concat slime-src-dir "doc/")) (buf (get-buffer-create "*slime-make-info*"))) @@ -195,9 +201,21 @@ (shell-command "make clean" "*slime-make-info*") (shell-command "make slime.info" "*slime-make-info*"))) +(defvar slime-company-repo "https://github.com/anwyn/slime-company") +(defvar slime-company-src-dir (expand-file-name "~/src/slime-company/")) + +(unless (file-directory-p slime-company-src-dir) + (shell-command + (format "git clone %s %s" slime-company-repo slime-company-src-dir))) + +(add-to-list 'load-path slime-company-src-dir) +(setq slime-company-completion 'fuzzy + slime-company-display-arglist 1) + (setq slime-contribs '( slime-fancy ;; default value, includes many fundamental contribs + slime-company slime-mrepl inferior-slime slime-fuzzy @@ -209,9 +227,15 @@ slime-quicklisp )) -(require 'slime-autoloads) (slime-setup) +(defun my-slime-return (_) + "Function to advise `slime-repl-return' to make <RET> inspect the presentation at point." + (when (slime-presentation-around-or-before-point-p) + (slime-inspect-presentation-at-point (point)))) + +(advice-add 'slime-repl-return :before #'my-slime-return) + (package-install 'json-mode) (add-hook 'ruby-mode-hook #'flymake-mode) @@ -268,17 +292,6 @@ erc-interpret-mirc-color t erc-hide-list '("JOIN" "PART" "QUIT")) -(defvar nov.el-repo "https://depp.brause.cc/nov.el.git") -(defvar nov.el-src-dir (expand-file-name "~/src/nov.el/")) - -(unless (file-directory-p nov.el-src-dir) - (shell-command - (format "git clone %s %s" nov.el-repo nov.el-src-dir))) - -(add-to-list 'load-path nov.el-src-dir) -(require 'nov) -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) - ;;; External Services (package-install 'plz) @@ -350,16 +363,21 @@ (package-install 'autothemer) (setq telephone-line-lhs - '((evil . (telephone-line-evil-tag-segment)) - (accent . (telephone-line-vc-segment - telephone-line-erc-modified-channels-segment - telephone-line-process-segment)) - (nil . (telephone-line-minor-mode-segment - telephone-line-buffer-segment)))) + '((evil . (telephone-line-evil-tag-segment)) + (accent . (telephone-line-vc-segment + telephone-line-erc-modified-channels-segment + telephone-line-process-segment)) + (nil . ( + ;; telephone-line-minor-mode-segment + telephone-line-buffer-segment)))) (setq telephone-line-rhs - '((nil . (telephone-line-misc-info-segment)) - (accent . (telephone-line-major-mode-segment)) - (evil . (telephone-line-airline-position-segment)))) + '((nil . (telephone-line-misc-info-segment + telephone-line-flymake-segment)) + (accent . (telephone-line-major-mode-segment)) + (evil . (telephone-line-airline-position-segment)))) + +(set-face-background 'telephone-line-evil-normal "deep pink") +(set-face-background 'telephone-line-evil-insert "Dark Turquoise") (telephone-line-mode t) diff --git a/shoshimacs.org b/shoshimacs.org index 65e4590..a7c35ba 100644 --- a/shoshimacs.org +++ b/shoshimacs.org @@ -545,7 +545,7 @@ this is implemented with the ~vertico-directory~ extension. (define-key vertico-map (kbd "M-j") #'vertico-quick-insert) #+end_src -** corfu +** COMMENT corfu #+begin_src emacs-lisp (package-install 'corfu) @@ -562,6 +562,29 @@ this is implemented with the ~vertico-directory~ extension. (unless (display-graphic-p) (corfu-terminal-mode +1)) #+end_src +** company - complete anywhere + +Company is a modular completion framework. Modules for retrieving completion +candidates are called backends, modules for displaying them are frontends. + +Company comes with many backends, e.g. `company-etags'. These are +distributed in separate files and can be used individually. + +Enable `company-mode' in all buffers with M-x global-company-mode. For +further information look at the documentation for `company-mode' (C-h f +company-mode RET). + +#+begin_src emacs-lisp + (package-install 'company) + + (setq company-minimum-prefix-length 2 + company-idle-delay 0.3) ;; default is 0.2 + + (add-hook 'after-init-hook 'global-company-mode) +#+end_src + + + ** which-key which-key is an excellent package that helps provide guide posts for command @@ -590,7 +613,7 @@ which has a command to show prefix key continuations. :PROPERTIES: :header-args:emacs-lisp: :noweb-ref editing :noweb-sep "\n\n" :results silent :END: -** [[info:emacs#Matching][electric pair mode]] +** COMMENT [[info:emacs#Matching][electric pair mode]] I've been using smartparens -> (bookmark-jump "smartparens package") in my main config. electric pair mode does some of what smartparens does out of @@ -601,6 +624,18 @@ config might get what i want with vanilla built ins. #+begin_src emacs-lisp (electric-pair-mode) #+end_src +** smartparens + +Going back to smartparens for some of the paredit behavior I want, plus +the paren balancing. We'll see how it goes + +#+begin_src emacs-lisp + (package-install 'smartparens) + (require 'smartparens-config) + (smartparens-global-mode 1) + ;(sp-local-pair 'sly-mrepl-mode "'" nil :actions nil) + (sp-local-pair 'slime-repl-mode "'" nil :actions nil) +#+end_src ** markdown mode #+begin_src emacs-lisp @@ -665,6 +700,13 @@ There are many settings for how it presents available, but I usually just set them on the fly, depending on the presentation, rather than in my main config. +*** Structure Templates + #+begin_src emacs-lisp + (add-to-list 'org-structure-template-alist '("se" . "src emacs-lisp")) + (add-to-list 'org-structure-template-alist '("sr" . "src ruby")) + (add-to-list 'org-structure-template-alist '("ss" . "src shell")) + #+end_src + ** recentf-mode this tracks recently operated on files (by default) and enables quick selection @@ -699,6 +741,12 @@ I primarily use SBCL, so I set it as the ~inferior-lisp-program~ (setq inferior-lisp-program "sbcl") #+end_src +*** COMMENT SLY + +#+begin_src emacs-lisp + (package-install 'sly) +#+end_src + *** Slime The ~slime~ package v2.26.1 in the nongnu repo seems to have an issue with emacs 28.1 (?) so I'm installing it from source. @@ -713,6 +761,7 @@ emacs 28.1 (?) so I'm installing it from source. (format "git clone %s %s" slime-repo slime-src-dir))) (add-to-list 'load-path slime-src-dir) + (require 'slime-autoloads) #+end_src There is a command ~slime-info~ to read the locally built manual file, @@ -726,13 +775,31 @@ but i need to ensure it is built: (shell-command "make slime.info" "*slime-make-info*"))) #+end_src -_SLIME CONTRIBS_ +**** Slime company + +Company backend for slime + +#+begin_src emacs-lisp + (defvar slime-company-repo "https://github.com/anwyn/slime-company") + (defvar slime-company-src-dir (expand-file-name "~/src/slime-company/")) + + (unless (file-directory-p slime-company-src-dir) + (shell-command + (format "git clone %s %s" slime-company-repo slime-company-src-dir))) + + (add-to-list 'load-path slime-company-src-dir) + (setq slime-company-completion 'fuzzy + slime-company-display-arglist 1) +#+end_src + +**** SLIME CONTRIBS #+name: slime-contribs #+begin_src emacs-lisp (setq slime-contribs '( slime-fancy ;; default value, includes many fundamental contribs + slime-company slime-mrepl inferior-slime slime-fuzzy @@ -744,10 +811,20 @@ _SLIME CONTRIBS_ slime-quicklisp )) - (require 'slime-autoloads) (slime-setup) #+end_src +Slime Presentations + +#+begin_src emacs-lisp + (defun my-slime-return (_) + "Function to advise `slime-repl-return' to make <RET> inspect the presentation at point." + (when (slime-presentation-around-or-before-point-p) + (slime-inspect-presentation-at-point (point)))) + + (advice-add 'slime-repl-return :before #'my-slime-return) +#+end_src + ** Javascript #+begin_src emacs-lisp @@ -786,7 +863,10 @@ I prefer pry when its available, and it generally is on my system: (setq inf-ruby-default-implementation "pry")) #+end_src -*** ruby-end +*** COMMENT ruby-end + +automatically inserts ~end~ in ruby mode for blocks that need it. conflicts/doubles +with smartparens, so its currently off. #+begin_src (package-install 'ruby-end) @@ -902,7 +982,7 @@ Emacs MultiMedia System. erc-hide-list '("JOIN" "PART" "QUIT")) #+end_src -** nov.el major mode for reading EPUBs +** COMMENT nov.el major mode for reading EPUBs #+name: install-nov.el #+begin_src emacs-lisp @@ -1157,19 +1237,24 @@ for theme development. *** telephone line #+begin_src emacs-lisp -(setq telephone-line-lhs - '((evil . (telephone-line-evil-tag-segment)) - (accent . (telephone-line-vc-segment - telephone-line-erc-modified-channels-segment - telephone-line-process-segment)) - (nil . (telephone-line-minor-mode-segment - telephone-line-buffer-segment)))) -(setq telephone-line-rhs - '((nil . (telephone-line-misc-info-segment)) - (accent . (telephone-line-major-mode-segment)) - (evil . (telephone-line-airline-position-segment)))) - -(telephone-line-mode t) + (setq telephone-line-lhs + '((evil . (telephone-line-evil-tag-segment)) + (accent . (telephone-line-vc-segment + telephone-line-erc-modified-channels-segment + telephone-line-process-segment)) + (nil . ( + ;; telephone-line-minor-mode-segment + telephone-line-buffer-segment)))) + (setq telephone-line-rhs + '((nil . (telephone-line-misc-info-segment + telephone-line-flymake-segment)) + (accent . (telephone-line-major-mode-segment)) + (evil . (telephone-line-airline-position-segment)))) + + (set-face-background 'telephone-line-evil-normal "deep pink") + (set-face-background 'telephone-line-evil-insert "Dark Turquoise") + + (telephone-line-mode t) #+end_src ** SVG Screenshot |