Commit graph

385 commits

Author SHA1 Message Date
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
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
William Carroll
8c667af902 Support Wall-E theme
Add Wall-E theme to consume the latest `doom-material` theme.
2020-01-06 15:25:25 +00:00
William Carroll
9f209f5ccd Support EXWM workspace for IRC
Supporting this since my chat workspace is already a bit populous.
2020-01-06 15:25:25 +00:00
William Carroll
74ed4b6b11 Debug lt ZSH function
Change `-all` to `--all`.
2020-01-06 15:25:25 +00:00
William Carroll
47d16e2512 Support lispyville KBDs
After deciding to support the `C-s-` prefix for lispyville KBDs, I'm
re-introducing support for:
  - `lispyville-drag-backward`
  - `lispyville-drag-forward`
  - `lispyville-end-of-defun`
  - `lispyville-beginning-of-defun`
2020-01-06 15:25:25 +00:00
William Carroll
6d87dcb710 Decrease default font size on laptop
See diff for more information.
2020-01-06 15:25:25 +00:00
William Carroll
f182410fd2 Support Freenode IRC
Previously my ERC setup just supported Google's internal IRC. Now I have
Freenode for things like #nixos, #emacs.

This complicated my KBDs for cycling through IRC channels since certain channels
only exist on certain servers. To remedy this, I introduced a temporary solution
that looks up the server given a particular channel. This isn't ideal, but it
works for now.
2020-01-06 15:25:25 +00:00
William Carroll
50f99976e0 Support set/{reduce,intersection,equal?,distinct?}
Adds additional functions for the set.el module. See the function documentation
and tests for more information.
2020-01-06 15:25:25 +00:00
William Carroll
d5cd2719e7 Support pasting in read-expression-map
This was something small that has been slightly bothering me for a *very* long
time. Now it's fixed!
2020-01-06 15:25:25 +00:00
William Carroll
d13e347b9f Prefer variadic cycle/new
TODO: Ensure all */new functions in my Elisp library share this API.
2020-01-06 15:25:25 +00:00
William Carroll
837a74f10f Support alist/{find,map-keys,map-values} and tests
Supporting iterable / enumerable functions for alists.
2020-01-06 15:25:25 +00:00
William Carroll
9d20c1b894 Prefer Telegram native over Telegram web
I installed nixpkgs.tdesktop to support dark-mode and access other useful
features of the native Telegram client.
2020-01-06 15:25:25 +00:00
William Carroll
5785a5d126 Support prelude/start-process
If you refer to the previous commit where I change shell-command usages to
start-process function calls, you'll see the rationale for why I prefer
start-process.

This commit introduces a more ergonomic API for start-process that fits most of
my current use-cases of it. This cleans up the code. I have introduced a bug in
the way that I'm tokenizing the COMMAND value. I've tracked that with a
TODO. For now it only affects the `xmodmap -e '<command-string>'` calls, which
isn't too disruptive.
2020-01-06 15:25:25 +00:00
William Carroll
c078f04526 Change &keys -> &key in cl-defun
These were latent bugs.
2020-01-06 15:25:25 +00:00
William Carroll
15d889fa0e Prefer start-process to shell-command for pulse-audio module
Continuing the series of easy-win commits that increase the speed of commands
that I was previously using `shell-command` to run by using `start-process`
instead.
2020-01-06 15:25:25 +00:00
William Carroll
7ec4dca723 Reduce latency of screen-brightness/{increase,decrease}
As promised in the previous commit, I'm refactoring usages of `shell-command` to
prefer the faster alternative `start-process`. So far, I'm pleased with the
results.
2020-01-06 15:25:25 +00:00
William Carroll
5fbe860b95 Prefer start-process to shell-command
Without doing any benchmarking (break this naughty habit), I'm preferring to
call `start-process` instead of `shell-command` in my `wallpaper/set`
function. I noticed that the `shell-command` call was unnecessarily polluting my
`pstree` call when I debugging my randomly changing wallpaper bug.

I'm mostly likely going to change a few more `shell-command` calls to prefer
`start-process`.
2020-01-06 15:25:25 +00:00
William Carroll
4e454f0466 Define new Emacs theme
Defining "Shapely Patterns" theme... surely I can come up with better names than
this... :/
2020-01-06 15:25:25 +00:00
William Carroll
7ae17daa98 Drop support for i3
While I first switched to EXWM warily and thinking it would only be temporary,
it seems like this switch is here to stay. It turns out that EXWM was exactly
the integration I've been looking for. How serendipitous it that I found it when
I did.

Thank you, @tazjin.
2020-01-06 15:25:25 +00:00
William Carroll
25ce422abd Support microphone toggling
Use pactl and exwm KBDs to support toggling my microphone setting from Emacs.
2020-01-06 15:25:25 +00:00
William Carroll
ba1034a9c8 Begin the Emacs email journey
While this commit isn't much (i.e. notmuch), it represents one brave step
forward in the quest for supporting email in Emacs -- something I'm estimating
to be somewhere between a 1.5x and 2x workflow booster.
2020-01-06 15:25:25 +00:00
William Carroll
67f060d6f9 Temporarily disable flycheck
TL;DR:
Problem: I ran into a bug where my computer wallpaper was changing every five
seconds whenever my init.el file was open and I was typing in it.

Short-term solution: Disable flycheck.

Long-term solution: Disable flycheck just for Elisp or just for init.el in
Elisp.

Post Mortem:
Warning: If you have flycheck-emacs-lisp-initialize-packages set to auto or
really anything other than nil, than the emacs-lisp flycheck-checker will spin
up a new Emacs instance, and evaluate all of the Elisp in init.el.

Why does this matter? Well, if like me, you have code anywhere in your
init.el (and any files downstream from init.el), that code will get evaluated
not just twice. But countless times... tens, hundreds, w/e. So... while you
might think you have code that is just running at startup this code will be
called incessantly.

As a dramatic, contrived example, if you had something like...

```elisp
(bank/send :amount 100 :to "wpcarro@gmail.com")
```

...anywhere in that your init.el would evaluate, you may end up sending
wpcarro@gmail.com millions of dollars. To make debugging this problem a bit more
complicated is that because this runs in a separate Emacs instance, you can't do
something like...

```elisp
(defvar already-evaluated? nil)
(unless already-evaluated? (bank/send :amount 100 :to "wpcarro@gmail.com"))
(setq already-evaluated? t)
```

...since the `already-evaluated?` variable will be local to the Emacs
instance. So if you needed a mechanism to ensure code like this runs only once,
you would need a way to share this semaphore across Emacs instances --
e.g. writing to and reading from disk.
2020-01-06 15:25:25 +00:00
William Carroll
852783827c Ensure git yday alias formats commits like git today
Prefer the --oneline flag for `git yday` so that it is formatted like the
`git today` command.
2020-01-06 15:25:25 +00:00
William Carroll
7bb4201905 Support more fish abbr's for git
I'm sure that there is a fish package that supports git aliases or
abbreviations. This time, I'm preferring to write my own.

Side note: The more that I use fish's abbreviations, the less that I like them
-- at least for the way in which I'm using them.
2020-01-06 15:25:25 +00:00
William Carroll
6cf8517cab Combine google-{stuff,tooling}
Google-related files should eventually be moved out of GitHub hosting and onto
Google infrastructure (e.g. Git on Borg).

When I do this, I should run:

```fish
> git grep --ignore-case google (git rev-list --all)
```

To assess the reference I've introduced into this repository.

Other tools that should come in handy when I do this are:
- git filter-branch
- BFG repo-cleaner
2019-12-24 15:21:34 +00:00
William Carroll
96032dbeb0 Support JS-style header in web-mode
Yasnippet supports a way to share snippets between related modes. I should do
this instead of just defining a new snippet here. Well... until then.
2019-12-24 15:21:34 +00:00
William Carroll
27c57a1f16 Drop support for purpose.el
For now, my lack of understanding of purpose results in purpose getting in my
way. One day, I may reinvestigate this. For now, I'm attempting to learn Prolog
and Nix, which is occupying most of my tolerance for new technology.
2019-12-24 15:21:34 +00:00
William Carroll
0cd3b44ce3 Support evil-magit, refine
It took me awhile to install evil-magit because I believed that evil-collection
supported it. My grasp of Emacs bindings was enough to tolerate the strangely
"inconsistent" KBD support of in magit. Eventually though my tolerance waned,
and I verified that evil-collection does *not* support magit, and suggests that
users seek evil-magit. I did that. I do not regret it.

Installing Wilfred's refine.el, which is a lovely package for interactively
editing data structures. Go LISP!
2019-12-24 15:21:34 +00:00
William Carroll
7bd668ee8f Defensively install all-the-icons assets
Wrap installation call with a predicate that checks on the file-system for the
icon assets. Along the way, document other parts of the wpc-ui package.
2019-12-24 15:21:34 +00:00
William Carroll
d1566dd0e6 Refactor strings.el tests
Ensure that string.el follows the latest whim in my Elisp testing circus.
2019-12-24 15:21:34 +00:00
William Carroll
90955a3c02 Support ensure_{file,dir} in zsh
Support functions for ensuring the existence of directories and files. These
functions represent the type of small ergonomic wins that I believe libraries
should support.
2019-12-24 15:21:34 +00:00
William Carroll
82717e3f22 Support rainbow-delimiters-mode
Why did I ever remove this? Perhaps git can help me answer that.
2019-12-24 15:21:34 +00:00
William Carroll
998646995f Support Typescript
I had previously only worked with Facebook's Flow. Typescript support in Emacs
is excellent!
2019-12-24 15:21:34 +00:00
William Carroll
3a204cec24 Update Tramp configuration
I'm unsure if this file should be included in my dotfiles, but it doesn't seem
to contain sensitive information.
2019-12-24 15:21:34 +00:00
William Carroll
274219cc63 Prefer somes? to some? in math.el
In a moment of strong opinions against variadic functions, I defined
maybe/somes? and redefined maybe/some? to be non-variadic. I'm not sure if I
feel as strongly about that change as I did when I made it. Either way, the
change remains and math.el is broken unless it consumes maybe/somes?, so... this
does that!
2019-12-24 15:21:34 +00:00
William Carroll
56692b3833 Update docs for macros/support-file-extension
I provided the wrong usage example in my documentation. This goes to show how
critical generated documentation is to the goal of documentation reliability,
which itself bolsters the goal of documentation in general.
2019-12-24 15:21:34 +00:00
William Carroll
afcd663c7c Fix typo in keyboard configuration
I was missing a trailing comma in my xmodmap call. This rectifies that mistake.
2019-12-24 15:21:34 +00:00
William Carroll
ebe67fc73d Remove aliases for personal project
I believe that I defined these aliases when I was optimistic about using them. I
never ended up habituating that usage, so these are covered in dust.
2019-12-24 15:21:34 +00:00
William Carroll
8fc68d8edb Update OCaml support
After attempting to run OCaml on a separate machine, I realized that I needed to
update the documentation in my wpc-ocaml package.
2019-12-24 15:21:34 +00:00
William Carroll
3dc1bc4f84 Delete "conflicted copy" files
TODO: It may be preferable to augment my git history to remove the traces of
these files ever existing. For now, since I value a precise git history over a
pristine git history and my tendancy to maintain the former is sometimes at odds
with my goal of the latter, I'm saving this work for a later date.
2019-12-24 15:21:34 +00:00
William Carroll
7adb776927 Support Prolog
Register the .pl file extension with `prolog-mode'. This is useful because I'm
reading the "Learn Prolog Now!" book at the moment.
2019-12-24 15:21:34 +00:00
William Carroll
f739534203 Support fish shell!
After some back-and-forth, I'm trialing fish shell instead of zsh as my default
shell. For now, I'm porting the aliases.zsh into config.fish -- defining them as
abbreviations instead of aliases; this preference may change. See the commentary
in config.fish for more information.

A spent a lot of time in zsh and built much configuration, so supporting fish
may take considerable time. Here's some work that remains:

TODO:
- Port functions.zsh
- Port variables.zsh
- Port zle.zsh
2019-12-24 15:21:34 +00:00
William Carroll
b3342afbfa Temporarily disable code that creates circular deps
After attempting to package some of my Elisp libraries using Nix, I exposed
circular dependencies between modules that has existed for awhile.

I'm temporarily disabling this code since I do not have time to refactor
everything. When I get around to packaging everything, I'll need to resolve
these issues.

For now, I must carry on.
2019-12-24 15:21:34 +00:00
William Carroll
6b456c1b7a Massive configuration overhaul
Currently paying the price of months of non-diligent git usage.

Here's what has changed.

- Theming support in Gvcci and wpgtk
- Dropping support for i3
- Supporting EXWM
- Many Elisp modules
- Collapsed redundant directories in ./configs
2019-12-24 15:21:34 +00:00
William Carroll
a7c72adb2e Support functions for navigating Google3
I had `tbz`, which toggles between a project directory and it's associated
blaze-bin.

I added three functions which support navigating to blaze-bin, blaze-genfiles,
and to the project root.
2019-05-14 17:00:28 +01:00
William Carroll
6fba42e306 Support hardware-based aliases
Hibernating, sleeping, WiFi configuration...
2019-05-13 16:39:48 +01:00
William Carroll
c41e9fe49c Support additional mercurial aliases
More analogue to git for mercurial.
2019-05-13 16:39:22 +01:00
William Carroll
940ea173f6 Delete duplicate Google3 alias
Whoops...
2019-05-13 16:38:59 +01:00
William Carroll
dac7e40a43 Prefer floating lf window
Ensures that the lf instances are floating windows when created.
2019-05-13 16:38:34 +01:00
William Carroll
5cb0aebbd3 Support sandboxes for Elixir, Haskell, Clojure
The dream is to create an offline version of something like repl.it.
2019-05-13 16:37:47 +01:00
William Carroll
011d302b9e Supports home_theater function
Helpful reminder for how to setup bluetooth, TV streaming, etc.

Sadly I need this because I still have a lot of trouble working with Linux.
2019-05-13 16:36:24 +01:00
William Carroll
a59605c756 Support alternative lock screen
Also adds some rules for the Compton configuration so, that the lock screen
isn't transparent.
2019-05-13 16:35:38 +01:00
William Carroll
aafc240c16 Support g4d for Google repositories
Support aliases to quickly navigate the Google3 source code tree.
2019-05-13 16:34:43 +01:00
William Carroll
1e84900ac9 Support alias for tput reset
Useful command to run instead of `clear` - especially after printing sensitive
information to STDOUT. E.g. after running - `pass show misc/secret`.
2019-04-15 13:25:14 +01:00
William Carroll
4e39998671 Support compton
Compton helps composite windows in X. This supports shadows, transparency, and
some other effects of which I'm unaware at the moment.
2019-04-15 13:24:28 +01:00
William Carroll
0faa588ae1 Support i3-gaps
Re-enabling support for i3-gaps after successfully installing it from source.
2019-04-15 13:23:24 +01:00
William Carroll
119ea8b6ad Don't log DONE time in org-mode
At the moment, I don't find these timestamps useful.
2019-04-15 13:21:41 +01:00
William Carroll
ef08e2228c Support directory alias for google3 experimental
I intend on using my experimental folder more regularly for Java, Blaze,
etc. tests.
2019-04-09 18:38:53 +01:00
William Carroll
748e880762 Support align KBD for evil-leader
<leader>= should align a selected region. This should have been added awhile
ago, but it's great to have now!
2019-04-09 18:38:16 +01:00
William Carroll
d26abe7edb Support Java snippet for main function
Should output: `public static void main(String[] args)`. More of these Java
snippets to come.
2019-04-09 18:37:37 +01:00
William Carroll
5144384bec Support Google IRC in irssi
Also changes a few config settings for auto{connect,join}ing. This is still a
WIP.
2019-04-08 17:19:37 +01:00
William Carroll
9bc3cbece2 Drop i3 support for spawning apps in horizontal or vertical mode
Prefer using i3's "active edge" to control where apps are spawned.
2019-04-08 17:18:47 +01:00
William Carroll
79ef9e0c63 Drop support for extending Emacs's default word regex
This was causing problems with my Emacs initialization. I don't have time to
troubleshoot, so I'm removing this for now.
2019-04-08 17:17:41 +01:00
William Carroll
7d2bfc8a28 Support alias for Google's Intellij path
Hardlink paths are hard for me to remember.

NOTE: It's now more reliable with the DISPLAY fix
2019-04-03 17:22:09 +01:00
William Carroll
a414fefa03 Reintroduce nohup to browse function
Updates the implementation to ensure that the nohup.txt file isn't
created.
2019-04-03 17:21:23 +01:00
William Carroll
c492c8f4bf Update regexp used with evil-mode's * and # KBDs
I'd bet that there is a better way to achieve this, but I couldn't find
it, and I need this experience to be better.
2019-04-03 17:20:33 +01:00
William Carroll
4c1fbe01f6 Fix $DISPLAY issues with Tmux
Ensure that DISPLAY is set correctly so that commands executed in Tmux
that require X windows don't disappear.
2019-04-03 17:19:46 +01:00
William Carroll
10aef4e40d Support dmenu integration for Chrome bookmarks
I'd like to regain control of my browsing bookmarks with a simpler solution
using `dmenu`, `i3`, and a text file.

TODO: drop support for Chrome bookmarks by porting all remaining bookmarks to
bookmarks.txt

NOTE: maybe change bookmarks.txt to bookmarks.json to support nesting. Could be
simply with `jq`.
2019-04-03 13:12:52 +01:00
William Carroll
8220336205 Support sandboxing languages like Elixir, Haskell
The previous commit foreshadows this change. This also introduces so changes for
the Docker tooling.
2019-04-02 21:29:46 +01:00
William Carroll
c88f3da4ac Augment clipmenu KBD to paste-in-place
Introduces the `xdotool` dependency, which is a way to simulate X window events
from the CLI.
2019-04-02 21:27:47 +01:00
William Carroll
7646143843 Support .docker/config file
Useful since helpful aliases and functions around creating sandboxed REPL
environments for languages like, Elixir, Haskell are on the way. Other languages
that might be interesting to support would be Clojure.
2019-04-02 21:26:01 +01:00
William Carroll
698cff169a Augment i3statusbar
- support battery indicator
- format indentation
2019-04-01 18:28:03 +01:00
William Carroll
9ef4b5bb0a Support run_java
I probably won't need this as I become more familiar with Java.
2019-04-01 18:27:20 +01:00
William Carroll
6a2d7ef035 Support dmenu clipboard manager
Still needs a bit of fine-tuning to be ideal, but it's already pretty useful.
2019-04-01 18:26:40 +01:00
William Carroll
cc3aecb1e3 Support Java alias for jshell
The `jshell` alias currently imports libs like guava and jOOL into the `jshell`,
which is nice for experimenting.

Experimenting with keeping some helpful `.jars` in `~/programming/jars`. This
may be a bad idea, and there may exist a more idiomatic way to do this instead
of wrapping `jshell` in an alias, but for now, I need to move on.

Also documents some abbreviations for applications. `jv` will be necessary so
that I don't conflict with `j` or `js` for javascript. Eventually I'll need to
be more organized to avoid naming collisions, but this is okay for now.
2019-03-29 17:19:29 +00:00
William Carroll
54c13a8848 Update Cider KBD to use google-chrome
This allows me to take advantage of the --app=<URL> flag that google-chrome
supports, which is nice for a version of cider that bleeds all the way to the
window's edges. It makes Cider feel more like a native application experience.
2019-03-28 17:32:21 +00:00
William Carroll
653ffd381a Support $mod+Return for starting up a terminal
This comes with the default configuration on i3. I removed this KBD originally
because I was hoping to use the $mod+{,Shift+}t KBDs frequently. I still do, but
as I get more comfortable with i3, splits, parent containers, etc. I may prefer
to create terminals this way. We'll see...
2019-03-28 17:30:32 +00:00
William Carroll
d69d6421b2 Support KBD to unfocus parent container
Been missing this for awhile. Useful since I'm using $mod+a more often.
2019-03-28 17:29:43 +00:00
William Carroll
97c156be88 Support SpeWall in bash variables
NOTE: consider migrating from GH private repo to Google's Git on Borg. This is
preferable since GH gets hacked and private repos can be exposed. While a path
to a Google 3 repo like SpeWall may not pose a large security risk, it certainly
isn't optimal. Imagine a path to a repository whose name leaked a secret
project. Two options:

1. embrace encryption options like Mozilla's `sops` and remain on GH private
2. switch wholesale from private GH to GoB
3. classify "sensitve" parts of dotfiles as such and move those to GoB and keep
   everything else on private GH

One added perk of switching to GoB is saving the $7 monthly fee to support
private GH repos.
2019-03-28 17:29:24 +00:00
William Carroll
79387acb96 Create generic loop fn
Might be useful for things like:

```
loop 'PAGER="" hgst' 1 y
```

```
loop 'du -hs .'
```

```
loop ll
```
2019-03-27 18:27:49 +00:00
William Carroll
370f0346de Augment browse function
The nohup.out file was creating a bunch of noise and polluting my FS. It may
have been the correct thing to add, but if it was, I'm unsure why. Removing it
for now since it's been bothering me quite a bit.
2019-03-27 18:26:58 +00:00
William Carroll
ac34df2372 Add daily Google ENG tips to prodaccess
Wraps the existing `prodaccess` executable and displays a quote from Google
ENG's fortune db.

Fortune is a GNU tool intended to support random quote compilation, display,
etc. It's pretty interesting.

NOTE: the `prodcertstatus` executable that this function is using as a guard
looks like it might be useful moving forward.
2019-03-27 18:25:11 +00:00
William Carroll
2b34daf50a Support's flagpick alias
flagpick will interactively allow users to add CLI flags. Should work for any
executable that supports a `--help` flag.
2019-03-27 18:24:00 +00:00
William Carroll
f4e3e98594 Support gca
We already have `gcan`... looks like `gca` was already defined by some ZSH git
extension. This further weakens my dependency on that extension, which I think
is a good things.
2019-03-27 18:22:59 +00:00
William Carroll
161a09e6df Adjust i3 colors, update KBDs, remove icons from i3statusbar
May need to find a better KBD for `snip_it`, since I really enjoy Tmux's M-s to
switch sessions.

Learned about i3's "edge" concept. Re-supported KBDs for settings split
directions. Also adjusted theme colors.

Also adjusts the formatting of the timezone information to show GMT as LON, EST
as NYC, and Pacific as MTV.
2019-03-27 18:21:00 +00:00
William Carroll
01ff37824d Start lf from i3 in the ~/Downloads dir
This is a pretty common directory and has proven useful.
2019-03-25 17:33:21 +00:00
William Carroll
3c96944855 Drop OSX config from .gitconfig
This is a relic from the OSX support days. It's incompatible with the Linux
setup.
2019-03-25 17:32:30 +00:00
William Carroll
72a5510dbf Support KBDs for existing fns; support size fn
- Supports `size`
- Adds KBDs for encrypt/decrypt, archive/unarchive, tar/untar, etc.
- Adds explanation behind KBDs
2019-03-24 16:28:56 +00:00
William Carroll
e1d42452b5 Resupport mod+Shift+{3,4} KBDs in i3
I originally dropped support for these because I wanted to imitate OSX's
screenshot KBDs, which were mod+Shift+{3,4}. I'm not sure I want to imitate OSX
now that I don't have any Apple hardware besides my iPhone. I'm getting more
forgetting those KBDs. At the moment, however, I cannot find a better KBD for my
snip_it function. Stay tuned...
2019-03-24 16:13:09 +00:00
William Carroll
06bf69085e Ensure GPG import.sh script is executable
I must not have tested this before adding it to the repository; otherwise, I
would have found this. Oh well... it worked like a charm when copying the GPG
information from my desktop to my laptop.
2019-03-24 16:12:03 +00:00
William Carroll
7b46b6bfe1 Adds emoji font and function to test emoji support
In my quest to learn more about terminals, I added a function to output ten
emojis. Technically this tests the same thing as test_unicode.

Unfortunately I couldn't get `st` to output any colored emojis. This is a bit of
a buzzkill for my grand plans to create a terminal-based chat client that
supports emojis.
2019-03-24 16:09:51 +00:00
William Carroll
362a623a0a Define functions, KBDs for lf
Defines functions for creating, deleting, renaming files.
Defines functions for encrypting/decrypting files.
Defines functions for archiving/unarchiving files.
Adds TODOs for wishlist items.
Adds `help` function to view `lf` documentation.

TODO: write generic explanation of desire to share KBDs between Emacs, Vim,
other programs that I can link to in documentation to avoid repeating myself.
2019-03-24 16:05:34 +00:00
William Carroll
f5ace0b0a9 Prefer $(pwd) to $PWD
I'm unsure if this is idiomatic POSIX shell scripting or not, but I generally
prefer function calls to variables. Thankfully things like Haskell don't
differentiate between the two. In other cold and hostile environments like shell
scripting, us programmers must take care to prefer functions to variables where
it makes sense.
2019-03-23 16:38:19 +00:00
William Carroll
7167764622 Support aptitude removals
If you're going to install things and support that with an aliases, might as
well support the removals of packages with an aliases. Better to keep systems
lean -- especially if entropy is the tendancy.
2019-03-23 16:36:34 +00:00
William Carroll
7bcfa26f51 Support shared, device-specific i3 configurations
Separated i3/configuration since some of my devices support XFree86 keysyms
while others do not. This introduced some cascading changes.

- Removed ~/.config/i3/config from this repo. Since I will be switching between
  devices semi-regularly and that file will be generated each time I switch to a
  different device running an X session, I don't want the i3/config to spam my
  `gst` and `gd` when I haven't changed configuration in either config.shared or
  config.device.
- Update aliases, variables, etc. to point to config.shared instead of the
  generated file.
- Ensure that X sessions generate the i3/config file.
- Ensure that i3 reload and restart command generate the i3/config file.
2019-03-23 16:31:59 +00:00
William Carroll
ef8621e7da Fixes Emacs's scroll-bar display issues
Prefer (scroll-bar-mode -1) to (toggle-scroll-bar -1).
2019-03-21 18:15:41 +00:00
William Carroll
845ebb08fe Creates wrapper around p4 filelog
Should make viewing file history a little more ergonomic.
2019-03-21 17:24:50 +00:00