Commit graph

220 commits

Author SHA1 Message Date
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