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")`.
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.
Getting some practice with Python's heapq module (which I'm unsure if I used
correctly) to do a priority-first-traversal of a graph: known as Dijkstra's
algorithm.
Solves the InterviewCake.com problem that asks us to write a function that
returns the number, y, that occurs twice in a list, xs, where xs is an unsorted
list of integers from 1..n with a length of n + 1.
This is just a small org table that I created to help me
Fun fact: In Emacs, you can insert literal TAB character by pressing `C-q
TAB`. For creating tables, using TAB characters feels perfectly
acceptable. Perhaps the TAB name comes from TABle.
Solves an InterviewCake.com problem that returns the index of the element in a
list that should be the first element in that list. It's an exercise that's
useful for seeing other applications of a binary search.
Solves an InterviewCake.com problem that returns all of the permutations of a
string input. The problem states that it's acceptable to assume that your input
string will not have repeated characters, which is why using a Set is
acceptable. I like this solution because it builds a permutations tree and then
assembles all of the permutations by doing a DFT over that tree.
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.
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.
Cameron sent over some property tests for his File.split function, which is a
part of a larger effort to port f.el, a nice library for working with file
paths, over to Haskell.
While I've done these algorithms before, I'm preparing for an on-site with
DeepMind, so I created a subdirectory called deepmind where I'm storing my
second attempts at these problems. The idea of storing them in a second
directory is to remove the urge to check my existing solutions that also exist
in this repository.
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.
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.
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.
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.
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!
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.
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.