Commit graph

407 commits

Author SHA1 Message Date
William Carroll
106f62e4f1 Support scrot.el
Write some Elisp to work with `scrot`, Linux's CLI utility for taking
screenshots. It's been too long this that was working as expected!

As a bonus, I learned that it's possible to copy images to Linux's clipboard and
not just their file paths. This makes for a really nice UX!
2020-01-17 10:56:21 +00:00
William Carroll
6612268250 Support the JetBrainsMono font
Today Jet Brains announced the release of their open source font. I think it's
excellent!
2020-01-17 10:56:21 +00:00
William Carroll
bd0822aa66 Support Mononoki font family
Ryan recommended this font to me; it's quite nice.
2020-01-17 10:56:21 +00:00
William Carroll
1de7d7797e Consume ivy-clipmenu
Move keybindings from ivy-clipmenu.el into my clipboard.el. I didn't want to
presume users' preferences for the keybindings in ivy-clipmenu.
2020-01-17 10:56:21 +00:00
William Carroll
a3077677f9 Rename clipmenu.el to ivy-clipmenu.el
TL;DR: Preparing ivy-clipmenu for publishing.

Also:
- Removes lingering TODO items.
- Clarifies module and function documentation.
- Defines groups for custom variables.
- Supports history variable for ivy-read.
2020-01-17 10:56:21 +00:00
William Carroll
47faf8d6f0 Add headers to fs.el file
These are missing and as a code janitor that's just plain unacceptable.
2020-01-17 10:56:21 +00:00
William Carroll
f11ae9c394 Begin support for terminator.el
TL;DR: Attempting to use Elisp to manage my Terminator themes.

Read the terminal.el module docs for more context about this endeavor.
2020-01-17 10:56:21 +00:00
William Carroll
25314ff20c Ensure clipmenu/list-clips output matches clipmenu
clipmenu/list-clips previously didn't sort or deduplicate entries in the same
way that the existing clipmenu list_clips function did. After running some
tests, clipmenu/list-clips matches the output except I'm unsure my duplicate
algorithm is identical.
2020-01-17 10:56:21 +00:00
William Carroll
b20fe610a4 Support functions to toggling the display of the laptop
Since I already support toggling for the 4k monitor, I might as well support it
for my laptop too.
2020-01-17 10:56:21 +00:00
William Carroll
50f0bd3dad Support list/dedupe-adjacent
Support a function to deduplicate adjacent elements in a list.

Also tracks additional work with TODOs.
2020-01-17 10:56:21 +00:00
William Carroll
438ff66eed Support call-process-to-string
Writes an Elisp macro to use `call-process` (because it's fast) but capture the
output to a string.
2020-01-17 10:56:21 +00:00
William Carroll
34c9d74335 Add parsec.el
Ensures parsec.el is installed in Emacs.
2020-01-17 10:56:21 +00:00
William Carroll
fb5f1726df Track TODO for investigating 4k monitor scaling
It seems like something when I run `display/enable-4k` my resolution isn't at 4k
fully. However, when I call the same command on the command line it does scale
properly. This doesn't sound likely, and frankly I haven't had too much time to
try and reproduce this. Hence - the TODO!
2020-01-17 10:56:21 +00:00
William Carroll
dd9db4e318 Prefer direnv to manage ORG_DIRECTORY
Instead of keeping this in my ~/.profile, I'm going to define it in .envrc.

What I still don't know is how functions like `getenv` are supposed to interact
with direnv. I suppose maybe they aren't? Right now, when I call
`(getenv "DOTFILES")` from Emacs, it's `nil`, which I understand. Hopefully the
more I use direnv, the more reasonable expectations I'll have.
2020-01-17 10:56:21 +00:00
William Carroll
6e70cb527c Support missing Emacs dependencies
Since I moved this repository away from Dropbox, my elpa, melpa, quelpa packages
weren't automatically syncing. This crutch, once removed, cause my Emacs
initialization to fall-over.

This commit patches some of those missing dependencies.
2020-01-17 10:56:21 +00:00
William Carroll
2640397131 Drop support for nix_find fish function
This function was causing problems with my Emacs. For example, when I ran
`wpc/find-file`, which is bound <leader>f and a KBD that I call frequently, the
internals would startup fish with my configuration file. Then `nix_find
autojump` would fail and the entire command would error. To make things worse,
the error was a bit opaque.

TODO: Why do certain commands `counsel-projectile-find-file` startup fish and
load my configuration file? I'd prefer it used something like bash and didn't
attempt to load a configuration file since that would most likely slow things
down.
2020-01-17 10:56:21 +00:00
William Carroll
788edf5e2f Begin supporting Emacs client for clipmenu
After a few weeks of having this idea in the back of my mind, I began supporting
an ivy interface to clipmenu. I tried clipmon.el for awhile, but it wasn't as
good as clipmenu in my experience. To get the best of both worlds, I'm
attempting to write an Emacs client for clipmenu! Stay tuned for more updates.

If I open source this, which I'd like to, I'll need to answer a few questions:
- How should I handle libraries like my prelude.el?
- How can I eject this from my mono-repo and dotfiles?

See the TODOs scattered throughout the module for an idea of the remaining
work. I'd estimate that there's about one to three more hours of work.
2020-01-17 10:56:21 +00:00
William Carroll
d45debc8e5 Support prelude/time
Write macro that wraps Elisp's builtin `benchmark` function. I'm doing this
because `prelude/time` more closely resembles the API that I would expect.
2020-01-17 10:56:21 +00:00
William Carroll
df4eed20f4 Drop support for clipmon.el
I prefer cdown/clipmenu. Forthcoming is an ivy/counsel (I never know which word
to use) client for clipmenud!
2020-01-17 10:56:21 +00:00
William Carroll
f7047099e1 Support region.el
Create a module for working with Emacs's regions.
2020-01-17 10:56:21 +00:00
William Carroll
eba6ea6762 Support finance.el
Create a finance module to help me cheaply calculate things like the future
value of a Spotify subscription or Dropbox subscription or Jiu Jitsu
membership.
2020-01-17 10:56:21 +00:00
William Carroll
f5e19abcb3 Prefer simpler window layout for Org workspace
Prefer only seeing today.org in my Org workspace.
2020-01-17 10:56:21 +00:00
William Carroll
f5798419da Drop alias er
I think when I was writing this, I needed a quick way to edit my dotfile's
README. I haven't used it since then, so in the interest of trimming fat, I'm
removing it.
2020-01-17 10:56:21 +00:00
William Carroll
9e4c993849 Support direnv
DRY up environment variable definition by using direnv and an .envrc
file.
2020-01-17 10:56:21 +00:00
William Carroll
75aa59bac1 Support Solarized Light theme
I'm also making this my default theme for now. I'm growing a bit tired of
randomly assigning themes, since my `terminator` theme is not coupled to my
Emacs theme.
2020-01-17 10:56:21 +00:00
William Carroll
88a315eee1 Support keybindings for using 4k monitor
I'm not sure I'm sold on the "D{0,1}" keybindings. The thought was that 0 would
indicate off and 1 would indicate on. This seems sensible to me. I'm hesitant
because I don't think I have precedent for this idiom in any of my existing
keybindings.

I'm also not sure I like these being leader-prefixed keybindings.
2020-01-17 10:56:21 +00:00
William Carroll
2515304c77 Prefer eval to source for direnv in config.fish
Calling `source` on `(direnv hook fish)` was creating startup problems with
fish. These problems leaked into a few of my Emacs file-searching commands as
well, which was pretty irritating for awhile. I'm still unsure of the
differences between `eval` and `source`. I'm moving on for now.
2020-01-17 10:56:21 +00:00
William Carroll
fac128f00c Debug xrandr integration to support 4k monitor
Two things:
1. I'm unsure if what I previously committed ever worked because the arguments
to `string/format` were flipped.
2. I'm unsure why my screen devices are sometimes eDP-1 and eDP1.

Perhaps expect more commits as this becomes more clear to me.
2020-01-17 10:56:21 +00:00
William Carroll
5a1b869af3 Ensure isearch and evil-searches center vertically on the screen
I may revert this one day. Checking this in so that one day I can revert it.
2020-01-17 10:56:21 +00:00
William Carroll
eb748071ca Define light theme
Well, we have a lot of dark themes, so in the interest of diversity I now
support light themes.
2020-01-17 10:56:21 +00:00
William Carroll
5a60ab886e Reset the custom-file path for Emacs
I temporarily set it to /tmp/custom.el while I was in the midst of Nixifying my
Emacs setup. Since I'm not Nixified at the moment, I'm reverting this, so that
Emacs doesn't ask me the same questions about loading themes every day.
2020-01-17 10:56:21 +00:00
William Carroll
ae75a9df9c Configure deadgrep
Configuring deadgrep to do a number of things:
1. Set `deadgrep--context` to see more context "after" in the output.
2. Define `deadgrep/dwim` to use a region if one is present; otherwise just
   behave as `deadgrep`.

Warning: This commit relies on a patch I made to deadgrep: supporting the
`deadgrep--additional-flags`.
2020-01-17 10:56:21 +00:00
William Carroll
0681753929 Blacklist org-mode and fundamental-mode
More blacklisted modes in my crusade to define what a "source code buffer" is.
2020-01-17 10:56:21 +00:00
William Carroll
2db7edfee0 Define KBD for killing buffers
I'm tired of `C-x k`. That's right... my fingers hurt.
2020-01-17 10:56:21 +00:00
William Carroll
2e3813f169 Support additional magit modes in buffer/source-code-blacklist
I'm sure I'll discover more modes that I'd like to blacklist; I just haven't
encountered them yet.
2020-01-17 10:56:21 +00:00
William Carroll
71c24104eb Refactor MRU EXWM workspace using cycle/focus-previous!
Instead of consuming `cycle/previous-focus`, define a function
`cycle/focus-previous!` that "focuses" the element at `previous-index` and
returns that element.

This function greatly simplified the code in window-manager.el and eliminated
the unnecessary `exwm/previous-workspace` variable that was managing the state.
2020-01-17 10:56:21 +00:00
William Carroll
1399eae319 Cover struct.el
Add some basic test coverage to struct.el.
2020-01-17 10:56:21 +00:00
William Carroll
b52d210b9b Support cycle/previous-focus
Define a `cycle/previous-focus` function that returns the item that was
previously "focused" in the cycle. This is helpful for toggling back-and-forth
between buffers and EXWM workspaces for example without needing to define ad-hoc
variables to support it.

Also: Adds tests to cycle.el.

Also: Prefers `struct/set!` instead of `setf`. See the previous commit's message
for more information about that preference.
2020-01-17 10:56:21 +00:00
William Carroll
ef881e059b Prefer struct/set! to setf
I originally tried using `struct/set` instead of `setf`, which I had forgotten
was the *immutable* version of `struct/set!`. When this didn't work, I reverted
to `setf`. After a good night's sleep and with a fresh set of eyes, I dug into
the issue and discovered that `struct/set!` was what I wanted the whole.

I am curious now about `struct/update` versus `struct/update!`; shouldn't the
former be immutable and the latter be mutable? I'll save that investigation for
a later date.
2020-01-17 10:56:21 +00:00
William Carroll
5407eeb146 Add missing dependency to set.el
I had startup problems without the struct.el module being required since set.el
consumes `struct/update`.
2020-01-17 10:56:21 +00:00
William Carroll
271e7f9561 Support functions for navigating buffer caches
I've wanted an MRU/LRU sort of my "source code buffers" in Emacs. This commit
support three ways for working with a cache of source code buffers.

So first, what's a source code buffer? Well it isn't a buffer like *Messages*;
we can call these "Emacs-generated" buffers for convenience. Other problematic
buffers are buffers like `magit-status` and `dired-mode` and `erc` buffers.

I added some predicates for querying buffers for their major modes.

Supporting three KBDs for quickly accessing these functions:
1. <SPC><SPC> Toggle previous buffer
2. <SPC>b     Use ivy to fuzzily search source code buffers
3. C-{f,b}    Cycle {forwards,backwards} through the source code buffer cache.
2020-01-17 10:56:21 +00:00
William Carroll
2c03651483 Support KBDs for quickly editing common dotfiles
I had forgotten that I defined <SPC>J. Maybe I should switch to using Hydras or
transient mode to improve the discoverability of my own setup... well in the
spirit of support things that I will likely forget, here's a new KBD for editing
config files in the `~/.config` directory.
2020-01-17 10:56:21 +00:00
William Carroll
ca8cb3fe21 Support utils for finding Emacs dotfiles and Org files
Defined `dotfiles/find-emacs-file` and `org-helpers/find-file`, to clean up some
of the `find-file` calls I have with long path names. This DRYs things up as
well so that the path can be changed without breaking many other things.
2020-01-17 10:56:21 +00:00
William Carroll
a51afca1cc Support xsessionrc and config.fish in dotfiles.el
Add entries for xsessionrc and config for the `dotfiles/edit` function.
2020-01-17 10:56:21 +00:00
William Carroll
88f5791fb5 Install ts.el for timestamp functions in Elisp
I've been looking for this! Thank you, @alphapapa.
2020-01-17 10:56:21 +00:00
William Carroll
e8e5ec5f40 Install prism for scope-highlighting > syntax highlighting
I've wanted a library like this ever since I saw Douglas Crockford's JS talk
about scope highlighting as a more useful alternative to syntax highlighting.
2020-01-17 10:56:21 +00:00
William Carroll
6e77fc7978 Revert Nixified Emacs configuration
I attempted to Nixify my Emacs over winter break. I made some meaningful
progress, but not enough progress to use my Nixified Emacs setup. Since Emacs is
my primary editor and my window manager at work and at home, having a partially
baked setup is untenable at the moment.

Reverting these changes so that I can get on with my work, but checking them in
so that I can pick up where I left off one day.
2020-01-17 10:56:21 +00:00
William Carroll
069ca63082 WIP: Nixify Emacs setup
The things that I dislike about this setup are:
1. `xref-find-definitions` takes me to `/nix/store`, which is a read-only
version of the source code, so I cannot edit it, which doesn't feel lispy.

2. I need to rebuild the derivation when I change something, which also doesn't
feel lispy.

There are ways to circumvent both of these drawbacks, but for now, I'm checking
this in only to later revert it.
2020-01-17 10:56:21 +00:00
William Carroll
7175d230c2 Nixify fish configuration
This isn't 100% usable, but it works. You can build it with `nix-env` and then
run it with `wpcarros-fish`.
2020-01-17 10:56:21 +00:00
William Carroll
73e988c298 Define nix_find command in fish
Defining a function for outputting the /nix/store path to a package built with
Nix.
2020-01-06 15:25:25 +00:00