From 97ba4c8bcfd0badec53fe5589a87038dbd0fae11 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 23 Aug 2020 17:15:43 +0100 Subject: ~moving some stuff around, +ido, ido-completing-read+ and smex --- Emacs/.config/emacs/config.org | 177 ++++++++--------------------------------- 1 file changed, 32 insertions(+), 145 deletions(-) diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index b35cc82..9170899 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -461,163 +461,50 @@ functions so that they run ivy-switch-buffer once they're finished. (advice-add #'evil-window-vsplit :after #'ivy-switch-buffer) (advice-add #'evil-window-split :after #'ivy-switch-buffer))) #+end_src -* Xwidget -Xwidget is a package (that must be compiled at source) which allows -for the insertion of arbitrary xwidgets into Emacs through -buffers. One of its premier uses is in navigating the web which it -provides through the function =xwidget-webkit-browse-url=. This -renders a fully functional web browser within Emacs. +*** Ido +Ido is a very old completion package that still works great to this +day. Though it is limited in its scope (and may thus be called a +completion add-on rather than a full on framework), it is still a very +powerful package. With the use of ido-completing-read+, it may be used +to as a fully fledged completion framework. -Though I am not to keen on using Emacs to browse the web /via/ xwidget -(EWW does a good job on its own), I am very interested in its -capability to render full fledged HTML documents, as it may come of -use when doing web development. I can see the results of work very -quickly without switching windows or workspaces. #+begin_src emacs-lisp -(use-package xwidget - :straight nil +(use-package ido + :hook (after-init-hook . ido-mode) :general - (leader "au" #'xwidget-webkit-browse-url) (general-def - :states 'normal - :keymaps 'xwidget-webkit-mode-map - "q" #'quit-window - "h" #'xwidget-webkit-scroll-backward - "j" #'xwidget-webkit-scroll-up - "k" #'xwidget-webkit-scroll-down - "l" #'xwidget-webkit-scroll-forward - (kbd "C-f") #'xwidget-webkit-scroll-up - (kbd "C-b") #'xwidget-webkit-scroll-down - "H" #'xwidget-webkit-back - "L" #'xwidget-webkit-forward - "gu" #'xwidget-webkit-browse-url - "gr" #'xwidget-webkit-reload - "gg" #'xwidget-webkit-scroll-top - "G" #'xwidget-webkit-scroll-bottom)) -#+end_src - -* Avy -Setup avy with leader. -#+begin_src emacs-lisp -(use-package avy - :after evil - :general - (leader - :infix "s" - "l" #'avy-goto-line - "g" #'avy-goto-char-2)) -#+end_src -* Ace window -Though evil provides a great many features in terms of window -management, much greater than what's easily available in Emacs, ace -window can provide some nicer chords for higher management of windows -(closing, switching, etc). - -#+begin_src emacs-lisp -(use-package ace-window - :after evil - :custom - (aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) - :general + :keymaps '(ido-buffer-completion-map + ido-file-completion-map + ido-file-dir-completion-map + ido-common-completion-map) + (kbd "M-j") #'ido-next-match + (kbd "M-k") #'ido-prev-match) (general-def - :states 'normal - [remap evil-window-next] #'ace-window)) -#+end_src -* Projectile -Setup projectile, along with the tags command. Also bind "C-c C-p" to -the projectile command map for quick access. -#+begin_src emacs-lisp -(use-package projectile - :after evil - :hook (prog-mode-hook . projectile-mode) - :general - (leader "p" #'projectile-command-map) + [remap find-file] #'ido-find-file + [remap switch-to-buffer] #'ido-switch-buffer + [remap dired] #'ido-dired + [remap make-directory] #'ido-make-directory) :init - (setq projectile-tags-command "ctags -Re -f \"%s\" %s \"%s\"") - :config - (projectile-global-mode)) + (setq ido-separator "\n" + ido-everywhere t)) #+end_src -** Counsel projectile -Counsel projectile provides the ivy interface to projectile commands, which is really useful. +**** Ido-completing-read+ +Ido completing-read+ is a package that extends the ido package to work +with more text based functions. #+begin_src emacs-lisp -(use-package counsel-projectile - :after (projectile counsel) +(use-package ido-completing-read+ + :after ido :config - (counsel-projectile-mode +1)) -#+end_src -* Mail -Mail is a funny thing; most people use it just for business or -advertising and it's come out of use in terms of personal -communication in the west for the most part (largely due to "social" -media applications). However, this isn't true for the open source and -free software movement who heavily use mail for communication. - -Integrating mail into Emacs helps as I can send source code and -integrate it into my workflow just a bit better. -** Notmuch -#+begin_src emacs-lisp -(setq +mail/signature "---------------\nAryadev Chavali") -(defconst +mail/local-dir (concat user-emacs-directory ".mail/")) -(defun +mail/sync-mail () - "Sync mail via mbsync." - (interactive) - (start-process-shell-command "" nil "mbsync -a")) - -(use-package notmuch - :commands notmuch - :general - (leader "am" #'notmuch) - :custom - ((notmuch-show-logo nil) - (mail-signature +mail/signature) - (mail-default-directory +mail/local-dir) - (mail-source-directory +mail/local-dir) - (message-signature +mail/signature) - (message-auto-save-directory +mail/local-dir) - (message-directory +mail/local-dir)) - :config - ;; sync mail after refresh - (advice-add #'notmuch-poll-and-refresh-this-buffer :before - #'+mail/sync-mail) - (evil-collection-notmuch-setup)) + (ido-ubiquitous-mode +1)) #+end_src -** Smtpmail -#+begin_src emacs-lisp -(use-package smtpmail - :commands mail-send - :after notmuch - :custom - ((smtpmail-smtp-server "mail.aryadevchavali.com") - (smtpmail-smtp-user "aryadev") - (smtpmail-smtp-service 587) - (smtpmail-stream-type 'starttls)) - :init - (setq send-mail-function #'smtpmail-send-it - message-send-mail-function #'smtpmail-send-it)) -#+end_src -** Org message -Org message allows for the use of org mode when composing mails, -generating HTML multipart emails. This integrates the WYSIWYG -experience into mail in Emacs while also providing powerful text -features with basically no learning curve (as long as you've already -learnt the basics of org). +**** Amx +Amx is a fork of Smex that works to enhance the previous +interfaces. It also provides support for ido or ivy (though I'm likely +to use ido here) and allows you to switch between them. #+begin_src emacs-lisp -(use-package org-msg - :after notmuch - :hook (message-mode-hook . org-msg-mode) - :config - (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t tex:dvipng" - org-msg-greeting-fmt "Dear %s,\n" - org-msg-greeting-name-limit 3 - org-msg-text-plain-alternative t) - - (add-to-list 'org-msg-enforce-css - '(img latex-fragment-inline - ((transform . ,(format "translateY(-1px) scale(%.3f)" - (/ 1.0 (if (boundp 'preview-scale) - preview-scale 1.4)))) - (margin . "0 -0.35em"))))) +(use-package amx + :hook (after-init-hook . amx-mode)) #+end_src * Dired Setup for dired. Firstly, as it's an inbuilt package don't let -- cgit v1.2.3-13-gbd6f