Commit graph

268 commits

Author SHA1 Message Date
William Carroll
bdd9d963be Conditionally start Emacs server
Only attempt to start the Emacs server if there isn't already one
running.
2020-09-07 16:14:42 +01:00
William Carroll
0f2a13a32a Vertically align search results conditionally
Only when `window-system` is set.
2020-09-07 16:14:42 +01:00
William Carroll
3dc10f167b Install keybindings for bookmark.el
I would like to restore these KBDs.
2020-09-07 16:14:42 +01:00
William Carroll
a366f352e6 Suppress cl deprecation warnings during initialization
See the URL I linked to for more information.
2020-09-07 15:47:47 +01:00
William Carroll
cc1a91078a Drop support for building emacs.glinux
I'm defining a fork of this function in my work configuration, so I longer want
this here.
2020-09-07 15:47:17 +01:00
William Carroll
12b5a10b05 Debug project-find-file for briefcase
As the name suggests, `f-parent-of?` only returns true when A is a *parent* of
B. What I want instead if `f-ancestor-of?`.
2020-09-07 15:41:54 +01:00
William Carroll
9773bc32ee Expose withEmacsPath on emacs attribute
I need this for Nix code that exists outside of this repository.
2020-09-07 10:52:54 +01:00
William Carroll
43fc1d93fb Prefer 'vc as the project-find-file type when at briefcase's root
See the explanatory comment that I left in the code.
2020-09-06 18:20:19 +01:00
William Carroll
5cf6a0b23d Add defgroup vterm-mgt for vterm-mgt
In the past I used `defconst` in many of my Elisp libraries where I should've
used something like:

```elisp
;; some/path/to/some-lib.el

(defgroup some-lib nil)

(defcustom some-lib-setting nil
  :group 'some-lib)
```

When I encounter code that I should've structured this way, I'm cleaning it up
to prefer this more idiomatic pattern.
2020-09-06 13:49:53 +01:00
William Carroll
b89d1f0a1f Call make-process instead of call-process in scrot.el
While attempting to debug why pressing `C-s-s` from an X-window screenshots my
entire screen, I switched from `call-process` to `make-process`, which is
async.

I still haven't debugged the original issue, but I think this is an improvement
regardless.
2020-09-04 21:06:18 +01:00
William Carroll
4763c7ca45 Restore KBDs for changing my font size
When I removed the KBD logic from fonts.el, I should have moved it here, but I
did not.
2020-09-04 21:04:56 +01:00
William Carroll
73af825389 Debug broken pulse-audio KBDs
Looks like when I linted my Emacs I forgot to change the prefix from
`pulse-audio/` to `pulse-audio-`.
2020-09-04 21:04:10 +01:00
William Carroll
aae5b4c88c Enable font ligatures for Emacs 27!
Now that Emacs is capable a rendering font ligatures, I defined a function to
enable them in fonts.el. Everything works, and it's beautiful.
2020-09-04 21:03:16 +01:00
William Carroll
97c2706821 Prevent warning during Emacs initialization
Now that my `script.el` is behaving as expected (wahoo!), start linting away
anything that shows up in the `*Warnings*` and `*Errors*` buffers.
2020-09-02 15:24:30 +01:00
William Carroll
f089f3c550 Linting Elisp
TL;DR:
- Prefer cl-lib
- Prefer spaces to tabs
- Resolve various checkdoc complaints
2020-09-02 15:23:46 +01:00
William Carroll
ea274f924a Remove KBD installations from more Elisp modules
I originally liked this pattern, but now I'd prefer to put everything in
keybindings.el.
2020-09-02 15:03:04 +01:00
William Carroll
d1ee517461 Require general.el for packages that depend on it
Since I'm calling `(require 'general)` in `wpc-package.el`, which gets called at
the beginning of my `init.el` file, all sub-modules have `general`. I originally
wanted this, but I'm beginning to rethink that preference.

After `script.el` broke my CI because of a missing `general` dependency, I'm
fixing it for `buffer.el` and all other modules that consume `general`.
2020-09-02 15:01:43 +01:00
William Carroll
f9be81b23e Add missing ts.el dependency to buffer.el
Since script.el depends on buffer.el now, buffer.el fails to evaluate because of
a missing dependency on ts.el.

Blindspots like this make me want to eventually support testing individual loads
of each of the libraries in my .emacs.d/wpc directory.
2020-09-02 14:52:17 +01:00
William Carroll
924c7fa419 Debug undefined add-hook-before-save
`use-package` complains that `add-hook-before-save` doesn't exist. This is
because it's now named `macros-add-hook-before-save`.

This fixes that.
2020-09-02 14:49:10 +01:00
William Carroll
2200daeea4 Add missing Elisp dependencies
TL;DR:
- Require cl-macs.el for modules using CL-style macros like `cl-defun`
- Require struct.el for call to `struct-set!`
2020-09-02 14:39:41 +01:00
William Carroll
fd16fec666 Delete unused slack-snippets module
I haven't used Slack in awhile -- let alone Slack from Emacs.
2020-09-02 14:38:42 +01:00
William Carroll
4a69371065 General Elisp linting
TL;DR:
- Remove `require` statements from init.el
- Remove unused, auto-install KBDs for bookmark.el
- Remove unused `require` statements from clipboard
- Remove unused, commented-out code

I would like for an Elisp linting stage to test for unused `require` statements,
but I'm unsure how practical that is to support.
2020-09-02 14:09:15 +01:00
William Carroll
dffb224023 Remove circular Elisp dependency
maybe.el -> prelude.el -> maybe.el

I should test for circular-dependencies in CI...
2020-09-02 14:08:14 +01:00
William Carroll
9c71c78abc Pull Emacs 27 from @tazjin's depot
Here's what happened:

My `emacs.glinux` derivation relies on gLinux `/usr/bin/emacs`, and Google
recently published version 27, so all corporate machines (i.e. this laptop)
switched from Emacs 26 to Emacs 27 overnight.

However, my Nix derivation was building all of the packages for Emacs 26, so
some packages were compatible while others weren't.

The Elisp package, `emr`, doesn't build for version 27, so I dropped it
altogether.
2020-09-02 14:07:39 +01:00
William Carroll
c17796a60d Rename alist.el to al.el
After switching my namespace separator from "/" to "-" the function,
`alist-get`, clashed (surprise!) with the pre-existing function, `alist-get`. As
I was struggling to debug my broken Emacs (it broke bc Emacs 27 rolled out), and
I changed the module name, "alist", to "al" attempting to defuse the issue.
2020-09-02 14:00:43 +01:00
William Carroll
1fe5d0373e Delete unused org-clubhouse
Sorry, @grfn! I haven't used Clubhouse is awhile...
2020-09-02 13:58:34 +01:00
William Carroll
baf08416cf Apply checkdoc fixes to set.el
While I don't agree with what checkdoc is advising here, I'd rather not fight
it.
2020-09-01 16:27:42 +01:00
William Carroll
75a9a156a0 Redefine >> macro as >-> in >.el
I created a strangely named Elisp module, >.el, just to appease the CI gods. My
gut tells me that this is a desperate idea and fails the smell test. I'm pretty
eager to pass the linting phase of my Elisp CI, however, and I can always revert
this.
2020-09-01 16:26:39 +01:00
William Carroll
718899c629 More Elisp linting
In order for this to scale, I need to solve two things:
1. Ad-hoc ignore fill-column rules for URLs and other exceptions.
2. Run Elisp flychecker without evaluating my Elisp code and firing its
   side-effects.
2020-09-01 14:00:42 +01:00
William Carroll
fb5ec068dd More Elisp linting
This should cover most of the remaining linting errors. After this, I expect
fewer than ten linting errors.
2020-09-01 10:17:43 +01:00
William Carroll
a638e15c0d Lint string, macros.el
More of the same type of linting... basically preferring `namespace-` instead of
`namespace/`.
2020-08-31 23:33:25 +01:00
William Carroll
158f810981 Delete bills.el
Another cold, stale Elisp module.
2020-08-31 23:28:22 +01:00
William Carroll
644e01eb21 Fix fill-column errors
- removing stale comments
- dropping stale KBDs
2020-08-31 17:20:04 +01:00
William Carroll
ff8277625f Lint prelude.el
This was a doozey because I use it everywhere. Is there a better way to globally
rename things? Aye aye aye... computers, man!
2020-08-31 17:08:56 +01:00
William Carroll
5d3bb0b7ea Additional linting
Running `M-x checkdoc` on some of the modules that passed the package-lint but
failed additional lints.
2020-08-31 16:07:11 +01:00
William Carroll
2a51698672 Lint more Elisp files, delete others
I may regret this, but I delete Ocaml and ReasonML modules; I can alway restore
them thanks to Git.

Added more ceremony to other modules to appease the linting gods.
2020-08-31 15:57:34 +01:00
William Carroll
1e253a756b Delete entr.el
As I strive to lean down my Emacs configuration modules like this must go.
2020-08-31 15:49:27 +01:00
William Carroll
b475f7166e Delete unused .nix expressions
These were never more than scratch buffers that I used when I was feeling around
in the dark trying to learn Nix.
2020-08-31 15:48:25 +01:00
William Carroll
d6cf2fe462 Remove (require 'kaomoji) from init.el
I should've done this when I deleted kaomoji.el because this broke my
"Initialize Emacs" step.
2020-08-31 15:47:41 +01:00
William Carroll
69a14dd37f Delete unused Elisp modules
It is striking how much Elisp I wrote after switching to EXWM... I think I'm
finally coming down from that high.
2020-08-31 15:06:49 +01:00
William Carroll
a35f723d92 Lint maybe.el
This change had rippling implications.
2020-08-31 14:59:48 +01:00
William Carroll
1c87082648 Lint pulse-audio.el
Next commit will contain all of the remaining linting...
2020-08-31 14:53:34 +01:00
William Carroll
59881551a7 Delete pushover.el
Again: another strong cup of coffee bred overzeal.
2020-08-31 14:51:57 +01:00
William Carroll
1ea996b676 Lint random.el
Usual lints... fixes usage in tree.el.
2020-08-31 14:51:27 +01:00
William Carroll
5b50e34e12 Delete ghost module, scheduler.el
Must've had a particularly strong cup of coffee the day I decided to attempt to
write this.
2020-08-31 14:49:45 +01:00
William Carroll
c78b2339f9 Lint region.el
Business as usual...
2020-08-31 14:49:45 +01:00
William Carroll
8d02e5a5ef Lint timestring.el
Sidenote: I have *no* idea when or why I wrote this... sleep-writing Elisp
2020-08-31 14:46:47 +01:00
William Carroll
2844c1ffbd Lint tree.el
- add Version, URL, Package-Requires sections
- prefer `tree-` prefer to `tree/`
2020-08-31 14:44:53 +01:00
William Carroll
1aa4b3a547 Lint tuple.el
- add Version, URL, Package-Requires sections
- prefer `tuple-` prefix to `tuple/`
2020-08-31 14:43:50 +01:00
William Carroll
9661a3ff36 Lint vector.el
- add Version, URL, Package-Requires sections
- prefer `vector-` prefix to `vector/`
2020-08-31 14:42:06 +01:00
William Carroll
91083d1ac5 Lint vterm-mgt.el
- Add Version, URL, Package-Requires sections
2020-08-31 14:42:04 +01:00
William Carroll
b09980f681 Lint window.el
- remove "Emacs" from description
- add Version, URL, Package-Requires sections
- prefer `window-` prefix to `window/`
2020-08-31 14:42:03 +01:00
William Carroll
84d6fb8f39 Lint window-manager.el
- change `exwm/` prefixes to `window-manager-`
- add Version, URL, Package-Requires sections
- move `pkill` into wpc-misc.el
- unify `window-manager,` `exwm` competing prefixes
2020-08-31 14:42:03 +01:00
William Carroll
a2d45c8db7 Lint wpc-clojure.el
- change clojure.el to wpc-clojure.el
- delete stale, commented code
- add Configuration header
- add Version, URL, Package-Requires sections
2020-08-31 14:28:22 +01:00
William Carroll
28cdbb18b6 Lint wpc-company.el
- change company.el to wpc-company.el
- add Version, URL, Package-Requires sections
2020-08-31 14:27:06 +01:00
William Carroll
8d9e4f4865 Lint wpc-dired.el
- change dired.el to wpc-dired.el
- add Version, URL, Package-Requires sections
2020-08-31 14:26:24 +01:00
William Carroll
85a0cddf8b Lint wpc-elixir.el
- Add Version, URL, Package-Requires sections
2020-08-31 14:25:44 +01:00
William Carroll
6ddad2dc4b Lint wpc-flycheck.el
- change flycheck.el to wpc-flycheck.el
- add Version, URL, Package-Requires sections
2020-08-31 14:24:59 +01:00
William Carroll
e0574e2299 Lint wpc-golang.el
- change wpc-ocaml.el to wpc-golang.el
- Add Version, URL, Package-Requires sections
2020-08-31 14:23:58 +01:00
William Carroll
657efa85f4 Lint wpc-lisp.el
- Add Version, URL, Package-Requires, Commentary sections
- Prefer `wpc-lisp-` prefix to `wpc/`
2020-08-31 14:23:56 +01:00
William Carroll
6267c782a0 Lint wpc-javascript.el
- Add Version, URL, Package-Requires sections
- Prefer `wpc-javascript-` prefix to `wpc/`
2020-08-31 14:23:56 +01:00
William Carroll
13a81435c3 Lint wpc-haskell.el
- add Version, URL, Package-Requires sections
- change haskell.el to wpc-haskell.el
- prefer `wpc-haskell-` prefix to `haskell/`
2020-08-31 14:23:56 +01:00
William Carroll
d3d94cbbac Lint wpc-misc.el
- prefer user-emacs-directory
- prefer wpc-misc- prefix
2020-08-31 14:10:08 +01:00
William Carroll
d813128e90 Lint wpc-nix.el
- add "Code:" header
- replace forward-slash with dash
- prefer wpc-nix- prefix to nix/
2020-08-31 14:09:24 +01:00
William Carroll
d98fa38aca Lint wpc-ocaml.el
- Prefer `user-emacs-directory` to literal path.
2020-08-31 14:09:01 +01:00
William Carroll
3b9656ca4a Use zle-minor-mode in sh-mode
After I wrote zle.el, it seems that I forgot about it. Attempting to revive it
by using it during sh-mode.
2020-08-31 13:45:50 +01:00
William Carroll
7a2ca2b5c0 Lint zle.el
- Prefer dash instead of forward-slash
- Remove stale TODOs
- Add Version, Package-Requires
2020-08-31 13:45:14 +01:00
William Carroll
76b1bcd59a Drop support for wpc-java
1. I don't use this.
2. This is breaking CI because google-java-format cannot be found.
2020-08-31 12:22:58 +01:00
William Carroll
9065c575aa Prevent all-the-icons-install-fonts from running in CI
While I would like my CI build to closely resemble a non-CI build, supporting
the `all-the-icons-install-fonts` call is a low priority with a medium amount of
work required.
2020-08-31 12:08:30 +01:00
William Carroll
70d87eaf24 Drop support for wpgtk
I'd like to stabilize on using solarized-light.
2020-08-31 12:04:49 +01:00
William Carroll
7f4e23e431 Apply prefix arg to all-the-icons-install-fonts
This prevents the prompt, which blocks my CI build.
2020-08-31 12:03:38 +01:00
William Carroll
b5de71f1f9 Drop support for neotree
I don't use neotree anymore.
2020-08-31 12:03:18 +01:00
William Carroll
2c3dbe61b7 Remove keybinding logic from fonts.el
For two reasons:
1. I don't use these keybindings.
2. I'm trying to centralize all keybinding logic in keybindings.el.
2020-08-31 12:02:35 +01:00
William Carroll
453596adb2 Define constants/ci?
Create a top-level flag encoding whether or not Emacs is running in CI.
2020-08-31 12:02:04 +01:00
William Carroll
711820411c Delete {themes,wallpaper}.el
After my CI build for Emacs failed because the .local/share/wallpaper directory
was missing I had two options:
  A. include .local/share/wallpaper in default.nix, which is cumbersome
  B. drop support for managing system wallpaper from Emacs

I chose option B.
2020-08-31 11:53:32 +01:00
William Carroll
aa1b927ad2 Add xset to Emacs PATH
My CI failed after a call to xset resulted in a "file-missing Searching for
program" error.
2020-08-31 11:31:57 +01:00
William Carroll
a640e42e6a Prefer inherit pattern to import Nix dependencies
I'm starting to prefer the `inherit (builtins) path` pattern in my Nix
expressions. I know this is idiomatic, so even if I don't like it, I am trying
to learn to like it.
2020-08-31 11:31:00 +01:00
William Carroll
bb83c8a12c Delete unused Emacs packages
Cleaning things up...
2020-08-31 11:30:23 +01:00
William Carroll
e166e74c2c Allow configurable BRIEFCASE env var for CI
These were hard-coded as $HOME/BRIEFCASE, which won't work in CI, since CI runs
as the user buildkite-agent-socrates, whose $HOME directory doesn't exist.
2020-08-31 01:16:31 +01:00
William Carroll
3e23a86d0e Set Emacs line-spacing to 0
vterm.el has a bug because it uses `(window-body-height)` to compute the number
of lines it can render, but it doesn't account for `line-spacing`.
2020-08-31 00:49:07 +01:00
William Carroll
9c820e663f Restore "l" as evil-forward-char in magit-status-mode-map
Remap "l" -> "L"
2020-08-28 17:40:24 +01:00
William Carroll
78172233f8 Add build, lint Emacs steps to post-receive pipeline
TL;DR:
- Define runEmacsScript to emacs/default.nix for ci/pipelines/post-receive
- Write script.el to call (load init.el) and catch any errors
- Lint Elisp with gonewest818/elisp-lint

Also nice how Buildkite supports :gnu: emojis!
2020-08-27 18:29:48 +01:00
William Carroll
d67dbec7e8 Clean up emacs/default.nix
- Prefer prepending wpcDir, vendorDir to EMACSLOADPATH instead of using the
  --directory flag
- Remove --load ${wpcPackageEl} because init.el calls (require 'wpc-package)
- Surround $@ in 2x-quotes
2020-08-27 18:25:14 +01:00
William Carroll
a1a2f0bbbd Remove exported DEPOT env var from wpcarros-emacs
wpcarros-emacs no longer depends on this being set.
2020-08-27 17:31:25 +01:00
William Carroll
eb0e1d8c5d Prefer builtins.path
Following the advice of Domen's nix.dev anti-patterns, I'm preferring something
like...

```nix
builtins.path { path = /path/to/some.where; name = "some.where"; }
```

...to

```nix
/path/to/some/where
```

While the former is more verbose, it will fail to build when the path doesn't
exist, which I prefer.
2020-08-27 17:31:15 +01:00
William Carroll
ea0788fd62 Delete unused parts of bookmark.el
Trimming more fat.
2020-08-26 18:30:10 +01:00
William Carroll
8fef6c0408 Remove bookmark for <depot>
Since depot now support cs.tvl.fyi, I don't need this, and that is a *massive*
upgrade.
2020-08-25 14:20:46 +01:00
William Carroll
8eed16dc67 Replace calls to (getenv "BRIEFCASE") with constants/briefcase
I would prefer to define constants/briefcase in terms of `(getenv "BRIEFCASE")`
and assert that `(f-exists? (getenv "BRIEFCASE"))`, in one location:
constants.el
2020-08-25 14:19:19 +01:00
William Carroll
21ce27b0ca Prefer <leader>jb to <leader>jd for searching all of briefcase
Feels more natural...
2020-08-25 14:16:41 +01:00
William Carroll
504cf0daab Delete org-helpers
I'm trying to tidy things up, so I'm trying to apply some of the principles from
"Essentialism" to my Emacs configuration.
2020-08-25 14:15:58 +01:00
William Carroll
23a41528bb Remove unnecessary TODO
The Nix expression that builds `wpcarros-emacs` sets BRIEFCASE, so the .envrc
isn't relied on.
2020-08-25 14:02:32 +01:00
William Carroll
64afb11d60 Remove unnecessary code from wpc-nix.el
TL;DR:
- Prefer `(getenv "BRIEFCASE")` to `(f-expand "~/briefcase")`. I should audit my
  Emacs for references to ~/briefcase and replace those calls with `getenv`.
- Remove calls setting <nixpkgs> and <depot> and rely exclusively on <briefcase>
- Prefer ~/nixpkgs-channels to ~/nixpkgs.

Notes:
- I need a better way of calling `home-manager switch` that resides within my
  briefcase
2020-08-25 13:55:14 +01:00
William Carroll
7a1e56e7d1 Prefer simpler, more idiomatic project-find-function
This version avoids installed all of the custom `cl-defmethods` for a
`'monorepo` type and instead uses the existing `'transient`.
2020-08-24 11:19:47 +01:00
William Carroll
5b6862ea39 Call git secret hide whenever //secrets.json is saved
Having `git secret hide` as a pre-commit hook doesn't make much sense to me. I
will detail why when/if I write a blog post on briefcase's secret mgt setup.

The problem is, if I change secrets.json and then run `git status`, I won't see
any pending changes. This is because secrets.json is gitignore'd. If I run `git
secret hide` everytime I save secrets.json, I can rest assured that my `git
status` will be consistent with any updates to secrets.json.
2020-08-20 18:41:39 +01:00
William Carroll
4d8ce34a7e Simplify EXWM init hook
Anytime something before or during window-manager.el fails to evaluate,
I lose the ability to type, but I *can* still click.

@tazjin recommended that I use the mouse to cycle to the *Warnings*
buffer, which led me to another bug in a series of bugs that I'm
uncovering: ~/briefcase/org didn't exist.

A simple mistake like this should break my WM startup, so I decided to
remove most of my init hook logic.
2020-08-20 11:26:32 +01:00
William Carroll
c9da7c5214 Add XMODIFIERS=emacs
This fixes the latest segfault I encountered after
/usr/bin/{google-emacs,emacs} was updated...
2020-08-20 11:26:32 +01:00
William Carroll
9d7331d63b Debug evil-want-keybindings issue
Problem: dependency loading order

I originally assumed that keybindings.el was the first module to `require
'evil` because init.el shows:

```elisp
(require 'keybindings)
(require 'window-manager)
```

The problem is that keybindings.el calls `require 'window-manager` and
window-manager.el requires evil! I admit, I've created a bit of a birds nest for
myself.

A few thoughts:
- keybindings.el doesn't need to `require 'window-manager`. Fixed!
- window-manager.el shouldn't need to `require 'evil`. TODO...
2020-08-20 11:26:32 +01:00
William Carroll
53be40b1a6 Drop use-package in keybindings.el
I'm attempting to kill that zombie bug about evil-want-keybinding...
2020-08-20 11:26:32 +01:00
William Carroll
39622607ff Add missing dependencies to emacs/default.nix
While debugging some broken Emacs config, I ran Emacs in X, where for some
reason my PATH doesn't have my nix-env dependencies... because of this, when I
call `~/.nix-profile/bin/wpcarros-emacs` to start my Emacs, I saw warnings about
missing packages that I hadn't seen before. Nice!
2020-08-20 11:26:32 +01:00
William Carroll
3dc7f7758b Drop support for wpc-keybindings
In favor of keybindings.el!

Now I have:
- kbd.el: There are no keybindings in this file. It's just a library for working
  with keybindings in Emacs.
- keybindings.el: (hopefully) all of my keybindings for EXWM, evil, etc.
2020-08-20 11:26:32 +01:00