Introduction
Introduction Statistics Contact Development Disclaimer Help
Re: Emacs everything
juli 25th, 2020
Kensanata posted about his use of emacs "for everything". I thought
this was a great idea, so here is a summary of what I use emacs for
and how. First of all, I use evil mode. As a former vim user, I was
never able to get my head around emacs navigation, and evil mode
solved this problem for me. For some modes, however, I've deactivated
evil mode to be able to access the original keyboard shortcuts
(e.g. for EMMS, mu4e, elfeed, etc. See below).
For email I use mu4e. Mu4e comes with a command line utility called
"mu" which is used for indexing and searching mails. Fetching mails is
not part of mu, it just expects a maildir directory. So I use
offlineimap to fetch mails from my fastmail account. The configuration
is a bit more complicated, so refer to [1] for details.
For reading news, I use elfeed [2]. The configuration is quite simple,
I just set up a list over feeds I want to follow, including some tags:
```
(setq elfeed-feeds
'(("http://nullprogram.com/feed/" blog emacs)
("http://endlessparentheses.com/atom.xml" blog emacs)
...)
(global-set-key (kbd "C-x w") 'elfeed)
(add-to-list 'evil-emacs-state-modes 'elfeed-search-mode)
(add-to-list 'evil-emacs-state-modes 'elfeed-show-mode)
```
Occasionally, I use elpher for this, but I'm a bit biased, so most
gopher and gemini browsing is done with ncgopher [3], a client I wrote
in Rust.
The past years I had some (read: a lot) of trouble with repetitive
strain injury. Ace mode lets me navigate quickly within the visible
text. I've set up two simple shortcuts for ace:
```
(autoload 'ace-jump-mode "ace-jump-mode"
"Emacs quick move minor mode" t)
(define-key global-map (kbd "C-c SPC") 'ace-jump-line-mode)
(define-key evil-normal-state-map (kbd "SPC") 'ace-jump-mode)
```
At work, I do a lot of remote editing. Tramp provides an easy solution
for this, and lets me edit my files in my local emacs instance. I also
like the combination with eshell, which lets me open a shell on the
remote server.
```
(require 'tramp)
(eval-after-load 'tramp '(setenv "SHELL" "/bin/bash"))
(setq tramp-default-user "jans")
```
Whenever I want to look up something in external documentation, for
like pyhton, php, rust or whatever, I use zeal. zeal-at-point [4]
provides an easy way to find the documentation for a function under
the cursor:
```
(autoload 'zeal-at-point "zeal-at-point"
"Search the word at point with Zeal." t nil)
(global-set-key "\C-cd" 'zeal-at-point)
(global-set-key "\C-ce" 'zeal-at-point-with-docset)
```
Sometimes I'd like to open a file from my shell in emacs. A collegue
showed me a simple alias to do this:
```
alias e='emacsclient --no-wait'
```
This lets me open a file in emacs with `e FILENAME` from the command
line.
Org mode, for me, is the killer feature of emacs. Without it, I'd
probably switch back to vim. I can easily take notes, create todos,
meeting summaries, journal entries or make phone call notes by hitting
C-c c, and return to what I was doing before. I also keep a wiki-like
collection of notes in org-mode. My home page is also written in
org-mode. These files are converted to markdown with ox-hugo, which,
again, calls zola [5], a static site generator written in Rust.
My complete org-mode configuration is too long to post here, but refer
to [1] for the full configuration.
Kensanata's post made me reconsider emms for playing music. Before
that, I used mostly cmus [6] to play music, but I switched to MPD [7],
which provides several clients. EMMS is one of them, and I have to say
that I like it quite a lot so far. It's easy to browse my music
collection and select albums to play.
```
(require 'emms)
(require 'emms-setup)
(require 'emms-player-mpd)
(require 'emms-librefm-scrobbler)
(require 'emms-info-libtag)
(require 'emms-lyrics)
(require 'emms-volume)
(setq emms-info-functions '(emms-info-libtag))
(emms-lyrics 1)
(emms-librefm-scrobbler-enable)
(setq emms-volume-change-function 'emms-volume-mpd-change)
(emms-all)
(setq emms-seek-seconds 5)
(setq emms-player-list '(emms-player-mpd))
h: cannot create [2]: Permission denied
h: cannot create [3]: Permission denied
h: cannot create [4]: Permission denied
h: cannot create [5]: Permission denied
h: cannot create [6]: Permission denied
h: cannot create [7]: Permission denied
(setq emms-info-functions '(emms-info-mpd))
(setq emms-player-mpd-server-name "localhost")
(setq emms-player-mpd-server-port "6600")
(global-set-key (kbd "s-m p") 'emms)
(global-set-key (kbd "s-m b") 'emms-smart-browse)
(global-set-key (kbd "s-m r") 'emms-player-mpd-update-all-reset-cache)
(global-set-key (kbd "C-c +") 'emms-volume-mode-plus)
(global-set-key (kbd "C-c -") 'emms-volume-mode-minus)
(define-key mode-specific-map (kbd "e s") 'emms-smart-browse)
(add-to-list 'evil-emacs-state-modes 'emms-browser-mode)
(add-to-list 'evil-emacs-state-modes 'emms-playlist-mode)
```
Back
______________________________________________________________________________
Gophered by Gophernicus/3.0.1 on FreeBSD/arm64 14.2
You are viewing proxied material from jan.bio. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.