Commit graph

397 commits

Author SHA1 Message Date
William Carroll
ccd8907e22 Exposing the text-mode snippest to lisp-mode
This gives me access to some generic-purpose snippets that allow me to easily
insert characters like this: ✓ and ✗!
2020-01-23 14:56:01 +00:00
William Carroll
fcfed99600 Assert that the labels used in the bookmark/magit-status are defined
My current self hoping to help my future self.
2020-01-23 14:55:22 +00:00
William Carroll
e11ba0598e Move the location of tazjins-depot
Since I spend a decent amount of time scouring the excellent work of my
colleague, @tazjin, I figured having some functions and KBDs setup to make this
work cheaper would be beneficial.

Also preferring the name `"depot"` to `"tazjins-depot"`. I don't think the
namespace `"tazjin-"` is useful at this time. I'm considering renaming my
mono-repo `"universe"`... a bit grandiose, but hey, let me get my kicks.
2020-01-23 14:53:43 +00:00
William Carroll
7edd5d81f5 Explicitly set that yasnippet directory
I'd like to limit the available snippets to those snippets that I have
explicitly defined. I ran into this problem when defining the `defpackage`
snippet for `lisp-mode`; it appeared that another snippet for `defpackage`
existed somewhere on my machine.
2020-01-23 14:52:18 +00:00
William Carroll
190d5e4406 Support set/{super,sub}set
Define predicates for testing whether two sets are supersets or subsets.
2020-01-23 14:51:50 +00:00
William Carroll
d7c52e4e64 Define CL snippet for a module header
Since I'm new to the CL world, snippets are a useful note-taking analogue with
the added benefit of potentially speeding up my workflow should the
muscle-memory set.
2020-01-23 13:51:53 +00:00
William Carroll
3732ed4795 Define CL snippet for an untyped function
For the times when I'd like to be DyNaMiC.
2020-01-23 13:51:27 +00:00
William Carroll
37f8ca04f2 Update dired-mode-map KBDs
- Ensure `"<SPC>"` is available for my "leader" KBDs
- Define `"o"` as `#'dired-find-file-other-window`
2020-01-23 13:50:18 +00:00
William Carroll
df112d34b6 Support CL snippet for a typed function
This depends on the `type` macro that's defined in my mono-repo. Perhaps another
reason why my dotfiles needs to be merged into the mono-repo.
2020-01-23 13:49:31 +00:00
William Carroll
1a2ae5499e Support bookmark/magit-status
Add function to quickly get `magit-status` buffers for some repositories in
which I spend time.
2020-01-22 21:55:33 +00:00
William Carroll
857ef43d2d Support bookmark/from-label
Add function to resolve a bookmark from its label.
2020-01-22 21:55:07 +00:00
William Carroll
589349282f Format bookmark.el
Move `bookmark/install-kbds?` to the top of the module.
2020-01-22 21:54:22 +00:00
William Carroll
61c2050f23 Support additional bookmarks
- Adds bookmark for my mono-repo
- Adds bookmark for tazjins-depot
2020-01-22 21:53:43 +00:00
William Carroll
5a66f175e5 Support magit-popup
One of my Google Emacs libraries depends on the `magit-popup` library. I believe
it's `fig-status` and I'm unsure why that library didn't ship with
`magit-popup`... tune in next week for more packaging woes.
2020-01-22 21:13:10 +00:00
William Carroll
b3e24a1783 Support Emacs restclient
An excellent HTTP and REST client built into Emacs! Consider reaching for this
instead of reaching for `httpie`, `curl`.
2020-01-22 21:13:06 +00:00
William Carroll
0caca5985e Track work to support individual modules for each LISP dialect
Instead of one, big wpc-lisp.el, I think it might be better if each LISP dialect
that I supported had its own module.
2020-01-22 21:13:06 +00:00
William Carroll
1943c2a643 Lint wpc-lisp.el
Remove dead TODOs that are TODOne along with a few other strange text
artifacts.
2020-01-22 21:13:06 +00:00
William Carroll
397174ebd2 Support Common Lisp
After a bedazzling demonstration of Emacs + Common Lisp, I needed to download
Sly and `sbcl` and give it a try.
2020-01-22 21:13:06 +00:00
William Carroll
92f5773421 Consolidate Racket KBDs
Instead of three separate `general-define-key` statements consolidate all
three. I'm not sure I was aware of this feature of general when I originally
defined all three keybindings.
2020-01-22 21:13:06 +00:00
William Carroll
595280690c Prefer JetBrainsMono font for Terminator
TODO: Consider completing terminator.el and allow things like that font and
font-size to be parameterized.
2020-01-22 21:13:06 +00:00
William Carroll
df7385af0d Support snippet for python function
Many of my other commonly used languages have a similar snippet as well.
2020-01-22 21:13:06 +00:00
William Carroll
4b00548768 Extend {default,max}-cache-ttl in gpg-agent.conf
I recall making these changes days ago, but I cannot seem to find any evidence
of those changes.

Extending the lifetimes of GPG cache to improve the UX of using `pass` and
similar tools.
2020-01-22 21:13:06 +00:00
William Carroll
16dfa55df7 Ensure EDITOR and similar variables work with EXWM setup
After some confusion about my `emacsclient` is currently working as
expected. Perhaps it always did. I had `emacs --daemon` in my
`~/.xsessionrc.shared` for awhile, which may have confused
`emacsclient`. Whatever happened, I'm glad it's working now.
2020-01-22 21:13:06 +00:00
William Carroll
b843e0f8f6 Remove opam-install variable and assertion
The `prelude/assert` for the existence of the `opam-install` directory was
failing.

I believe this assertion would have been failing sooner, but a bug in my
initialization was preventing Emacs from evaluating `wpc-ocaml.el`. It seems
that I removed whatever was jamming the initialization and as such, I uncovered
some more bugs.

Let this serve as a reminder that just because it hasn't bitten you yet, doesn't
mean that your software doesn't have a bug.
2020-01-22 21:13:06 +00:00
William Carroll
59be1ee981 Support today-{expected,actual}
"Everybody has a plan until they get punched in the mouth"
- Mike Tyson
2020-01-22 21:13:06 +00:00
William Carroll
514c5797de Support keynav
I'm trying a mouse-less workflow supported by `keynav`. So far, everything works
pretty well... and then I needed to take a screenshot and I don't know how to
use `scrot --select` without a mouse.
2020-01-22 21:13:06 +00:00
William Carroll
3d6b521919 Ensure scrot.el initializes
- Adds scrot to init.el
- Moves the EXWM keybindings to keybindings.el
2020-01-22 21:13:05 +00:00
William Carroll
16fd606f91 Whitelist keybindings.el in init.el
Also tracking a TODO to consolidate all of my keybinding and keyboard related
modules.
2020-01-22 21:13:05 +00:00
William Carroll
d590fdae42 Debug fonts.el
Removing call to `fonts/fontify`: a function that no longer exists.
2020-01-22 21:13:05 +00:00
William Carroll
3e3ba41c5d Bind chrome/browse to EXWM keybinding
I'm hoping to use `chrome/browse` more often!
2020-01-22 21:13:05 +00:00
William Carroll
84eeb374b7 Debug keybindings.el
Change `keybindings/` -> `keybinding/`. Whoops...
2020-01-22 21:13:05 +00:00
William Carroll
b4a6551dd5 Drop support for evil-leader
Preferring to use the `general` package for defining leader-prefixed keybindings
than `evil-leader`.

This TODO has existed for quite awhile, so I'm pleased to finish it!

During the cleanup, I deleted some keybindings that I no longer used.
2020-01-22 21:13:05 +00:00
William Carroll
40742c612a Track TODO for extending alist/new
See TODO for more information.
2020-01-22 21:13:05 +00:00
William Carroll
64cf4ac920 Begin supporting list/index
This currently doesn't work and as such is a work-in-progress.
2020-01-22 21:13:05 +00:00
William Carroll
0c59df8327 Add tests for vector.el
Adds a few tests for vector{set,set!} functions.
2020-01-22 21:13:05 +00:00
William Carroll
a11af57666 Add --debug-init flag to Emacs startup command
This should tighten my feedback loop slightly.
2020-01-22 21:13:05 +00:00
William Carroll
ddd5d3a7a0 Drop support for ORG_DIRECTORY in envrc
When Emacs starts it's called from xsessionrc.shared, which is called outside of
direnv's .envrc scope. Because of this variables defined therein, like
ORG_DIRECTORY, are undefined and prevent Emacs from initializing.

I'm hard-coding the `org-directory` variable for now and removing references to
`(getenv "ORG_DIRECTORY")`.
2020-01-22 21:13:05 +00:00
William Carroll
8a657fff7f Temporarily prefer start-process instead of prelude/start-process
While my `prelude/start-process` function cannot support arguments in the form
of `'single quotes'`, I'm using `start-process`.
2020-01-22 21:13:05 +00:00
William Carroll
2a9fadd092 Change current-project to mono-repo
Point the constants/current-project variable to my mono-repo.

The constants.el file isn't as populated as I was expecting and I think
supporting it introduces indirection in my code. I'm considering removing it.
2020-01-22 21:13:05 +00:00
William Carroll
ec21e072a1 Prefer general to evil-leader
Another small step towards dropping support for evil-leader, which general
supplants.
2020-01-22 21:13:05 +00:00
William Carroll
d85df45bab Attempt to tidy Emacs mode line
Removing the major-modes and VCS information from my mode line, since I don't
use this much and I think my mode line is noisy enough as is.
2020-01-22 21:13:05 +00:00
William Carroll
cb39efd0ac Remove unused keybindings
In the interest of slimming down, removing these dusty keybindings.
2020-01-18 22:51:27 +00:00
William Carroll
66f597ac39 Format modules
Add missing headers and remove gratuitious whitespace.
2020-01-18 22:50:56 +00:00
William Carroll
77d46eb5e1 Debug failed initialization of keybindings
Some more pains of weening off of Dropbox is that my Emacs initialization is
sensitive to dependencies and missing require statements. I'm still debugging
everything.

Some modules called `exwm-input-set-key` before the `window-manager` module
loaded, which itself requires EXWM. This broke initialization. To get around
this I could've called `(require 'exwm)` in each of those modules. I chose to
define a `keybindings.el` module to whitelist some of my EXWM keybindings. I'm
not sure if this is the best way forward, but it is *some* way forward.
2020-01-18 22:47:11 +00:00
William Carroll
068a648736 Support string/contains?
Simple wrapper around s-contains? but in the interest of avoiding a mixture of
s.el and stirng.el functions, the wrapper was defined.
2020-01-18 22:37:27 +00:00
William Carroll
fa681ffdf0 Use assert in prelude/start-process
Since the tokenizing isn't working as expected, my keyboard.el function
keyboard/swap-caps-lock-and-escape was silenting failing.

I'm adding a prelude/refute in that function to make the failures noisy until
the tokenizing is properly supported.
2020-01-18 22:34:55 +00:00
William Carroll
158b66fbb5 Support Gruvbox theme
Add Gruvbox theme in themes.el.

Also made a note to consider supporting themes:
- with solid colors as wallpaper
- without compton's transparency
2020-01-18 17:00:22 +00:00
William Carroll
2e4092f67e Prefer general to evil-leader
One small change in a larger effort to drop support for evil-leader.
2020-01-18 16:59:46 +00:00
William Carroll
b00fa4ffe8 Load entr.el at Emacs initialization
Also make a note to rename entr.el to something else. That module should be
refactored, but it gets the job done currently.
2020-01-18 16:58:43 +00:00
William Carroll
1ba65acfd6 Don't start emacs server at login
Since I'm using EXWM, I'm unsure what benefits starting the Emacs server gives
me. In the interest of cleaning up my xsessionrc, I'm deleting this.
2020-01-17 19:07:50 +00:00
William Carroll
68395b29f9 Re-order functions.el module
Move `wpc/find-file-split` directly below `wpc/find-file`.

TODO: This module is quite old and served as a bit of a dumping grounds for me
for a long time. As such, I think I should consider deleting dead code and
moving some of these functions to other modules.
2020-01-17 19:06:09 +00:00
William Carroll
7bd17ed07c Remove xset and xmodmap calls from xsessionrc
These are defined in keyboard.el, so these are redundant.
2020-01-17 18:55:03 +00:00
William Carroll
dd058004fe Don't start a tmux session when X starts
I've stopped using Tmux almost entirely.
2020-01-17 18:53:53 +00:00
William Carroll
cd3b879e7b Support clipboard/contents
This function returns the contents of the clipboard without calling paste.
2020-01-17 18:52:16 +00:00
William Carroll
e197dc5aba Re-enable wpc-org with direnv support
After moving some environment variables out of `~/.profile` and into a `.envrc`
file, I broke some of my modules because Emacs, which is started in
`~/.xsessionrc.shared`, is started from outside of the `.envrc` scope.

Thankfully someone wrote an excellent Emacs integration with `direnv` so now the
world keeps turning and it is even more beautiful than it was previously.
2020-01-17 10:56:21 +00:00
William Carroll
2108ee933a Support google3 as a citc alias
Sometimes I just want to visit //google3.
2020-01-17 10:56:21 +00:00
William Carroll
9108c3fa7d Drop support for prism-mode
Many times when I run `prism-mode` the contrast between the colors isn't strong
enough. This is unfortunate because I really like the idea.

Perhaps one day I can submit a PR to ensure that it uses the highest-contrast
colors available to it.
2020-01-17 10:56:21 +00:00
William Carroll
97fd83272c Prefer fullscreen for magit-status
Magit as a fullscreen buffer helps me focus by removing the noise of additional
buffers.
2020-01-17 10:56:21 +00:00
William Carroll
6ad100c5fa Debug colorscheme.el
`colorscheme/prev` was calling `colorscheme/load`, which has been changed to
`colorscheme/set`.
2020-01-17 10:56:21 +00:00
William Carroll
cab39b89af Only whitelist doom- prefixed themes
I find that I continually reach for the Doom themes rather than any of the
base16 or others.
2020-01-17 10:56:21 +00:00
William Carroll
190686fee1 Suppress load-theme from confirming changes
I don't feel like the confirmation dialog adds much value.
2020-01-17 10:56:21 +00:00
William Carroll
2f41167a6f Drop support for window-manager/screenshot
After defining the scrot.el module, I don't have much use for this function. In
fairness, I never used this function too much; I wrote it early on when I first
switched from i3 to EXWM. As such, it's a bit sloppy. Happy whenever I get a
change to do some spring cleaning.
2020-01-17 10:56:21 +00:00
William Carroll
f4d588b683 Consume Mononoki and JetBrainsMono in themes.el
I'm liking both of these fonts enough to prefer them over "Input Mono"... at
least for the time being.
2020-01-17 10:56:21 +00:00
William Carroll
8c3cd62ae3 Support package-lint
This library exposes a function called `package-lint-current-buffer` that I
needed to call when attempting to publish `ivy-clipmenu` to MELPA.
2020-01-17 10:56:21 +00:00
William Carroll
3de091ba2b Whitelist Mononoki and JetBrainsMono in fonts.el
What's the point of adding them if I'm not going to use them?
2020-01-17 10:56:21 +00:00
William Carroll
7a6ed72bf5 Allow message overrides in clipboard/{copy,paste}
In case libraries consuming this would like a way to control the message that's
output.
2020-01-17 10:56:21 +00:00
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