Commit graph

26 commits

Author SHA1 Message Date
Vincent Ambo
c806ee0eb8 feat(tazjin/emacs): add M-x-always-same-window
Following a discussion on Telegram about window management ... might
come in useful!

Change-Id: If50741e4281c658bccc55e2f591ef945ef4b3b5d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10592
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-10 15:23:52 +00:00
Vincent Ambo
696d02ab16 chore(tazjin/emacs): minor configuration cleanups
Deletes some stuff that I think isn't necessary anymore, and
consolidates the modes.el content into settings.el.

Change-Id: Ib682dbdb4eb89b3a7ee2eca89da4151af806a508
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10187
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-12-02 20:58:26 +00:00
Vincent Ambo
84a846a3a2 refactor(tazjin/emacs): move global-mode-line info into tab-bar
This removes the wonky hack with detecting the bottom right window,
and gives me saner, unified handling of this display in the tab
bar (of which there is only one!)

Change-Id: Id21c6b2472d0c89fc4d000a10a9e90d2ddba86b6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10165
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-11-28 12:34:48 +00:00
Vincent Ambo
e5f7fe430d refactor(tazjin/gio-list-apps): refactor into dynamic Emacs module
Instead of producing a binary that gets called by Emacs, with
input/output serialisation, use a dynamic Emacs module that lets Emacs
more-or-less directly call the relevant GTK functions.

I'm doing this mostly as an experiment. Might be interesting to end up
with a dynamic module that I can dump some experimental code into that
improves my workflows.

To do this, I've exposed the emacs binary used by my Emacs
configuration in an additional `passthru` field. This ensures that the
module is linked against the right version of Emacs.

Change-Id: I1426994fe3455ed1b2a685c5a09705e29fa40950
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9163
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
2023-08-29 14:07:11 +00:00
Vincent Ambo
690f73074c feat(tazjin/emacs): add occasionally useful advice-remove-all helper
Change-Id: I66981e8bec300dff48d7a549f2d2847c637a4557
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9160
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-08-28 19:40:49 +00:00
Vincent Ambo
c6224c9ef5 feat(tazjin/emacs): implement run-xdg-app using gio-list-apps tool
Change-Id: I43111dfc7091c416035be563ca7fc17265667b33
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9158
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-08-26 23:30:21 +00:00
Vincent Ambo
184020a6f2 feat(tazjin/emacs): annotate remote files in reliably-switch-buffer
Change-Id: I0fa460f2d455114ca9387ad23d5a72bcb5a5d9ea
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9156
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-08-26 23:30:21 +00:00
Vincent Ambo
e78b79c6cd refactor(tazjin/emacs): ivy,swiper,counsel -> vertico,consult
vertico and consult are more modern versions of interactive narrowing
helpers, as those implemented by ivy and its related packages.

The primary differences (and what I care about here) is that they are
more focused on integration with the core Emacs primitives, rather
than building an ecosystem around them.

For example:

* vertico enhances `completing-read' and friends, but does not attempt
  to provide its own ecosystem of functions to *trigger* completions.

* vertico integrates with the default `completion-style' system,
  meaning that I can continue to use things like prescient without
  extra packages that integrate it with vertico

* consult does not rely on vertico or any other specific completion
  framework (such as counsel/swiper do with ivy), and simply
  implements its functions using completing-read

This reduces the overall amount of code in the dependency closure and
leads to a less special setup.

Functionality is basically equivalent, except for two things which
counsel came with that I will need to substitute:

* counsel-notmuch (actually this was a separate package, but I didn't
  use it much anyways, so just ignoring it for now)
* counsel-linux-app (opening desktop shortcuts, this I will need to make)

As a side note, consult notes "This package is a part of GNU Emacs",
but it doesn't seem to be the case.

Change-Id: Ia046b763bf3d401b505e0f6393cfe1ccd6f41293
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9155
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-08-26 23:30:21 +00:00
Vincent Ambo
9afa1dacf8 chore(tazjin/emacs): remove a bunch of unused code
Change-Id: Ife854e83ef97f1e9a26072f2ab2a3b23f5d64840
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9154
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-08-26 13:25:57 +00:00
Vincent Ambo
e9bbc5f2af fix(tazjin/emacs): suppress incredibly ennoying EPA error buffer
When entering an incorrect GPG key password, I don't want my whole
buffer layout ruined. A small error message in the modeline is enough.

Change-Id: I7318d685e74fa4e110a9bff30d0de9f7f18b2be4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9149
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-08-23 20:22:25 +00:00
Vincent Ambo
df4a09864a feat(tazjin/emacs): implement reliably-switch-buffer
Adds a completing-read function (defaulting to ivy for me, but it
doesn't matter) that offers a reliable alternative to standard
buffer-switching implementations.

In particular, this implementation retains a mapping of
buffer names to their buffer *objects*, so that the correct buffer is
selected even if some renaming took place during the selection.

I tried to account for a bunch of the common behaviours I could think
of:

* invisible buffers are ... invisible
* entering a buffer name manually creates that buffer, if there is no
  match
* ... unless that buffer is an invisible buffer, in which case it is
  selected and switched to
* the first element is always `(other-buffer (current-buffer))`,
  because of the ordering of #'buffer-list

Yet, the entire code of my implementation is less than the *setup*
code of ivy-switch-buffers, so it's possible I missed something. Well,
I'll find out ...

Change-Id: I08be0da0863d06c9a930e5efaf916719655db90e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9147
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2023-08-23 20:22:25 +00:00
Vincent Ambo
261ae2de95 feat(tazjin/emacs): make zoxide project opener work without git
Work projects are not in git, but I still want to fuzzy jump to them.

Change-Id: Iced78519da69b6992d253e2a0c9ed485f1347164
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9005
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Autosubmit: tazjin <tazjin@tvl.su>
2023-08-04 16:35:47 +00:00
Vincent Ambo
d73e8fb041 fix(tazjin/emacs): don't crash in find-cargo-project
Change-Id: I8a94892a527958946c975047204000eaf15395f2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8946
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
2023-07-08 22:16:25 +00:00
Vincent Ambo
f687f5c3a3 fix(tazjin/nixos): scrot is out, maim is in
Scrot doesn't work very well anyways, it keeps producing crazy
artifacts. Maim seems more sane.

Change-Id: I0823b1755b7810c8b35a9c53f232d2e7f1722943
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8414
Tested-by: BuildkiteCI
Autosubmit: tazjin <tazjin@tvl.su>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-04-01 15:21:30 +00:00
Vincent Ambo
e70ef017ff feat(tazjin/emacs): add find-cargo-project function
This is useful for eglot launching rust-analyzer when I'm outside of a
depot project.

Change-Id: I1fa1dc11e3eabe4bdedbd6389b55411641391c7e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6176
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2022-08-26 17:26:30 +00:00
Vincent Ambo
8f4beaaba2 feat(tazjin/emacs): add helper function for navigating tvix tests
the upstream Nix test suite uses the pattern of having `.nix` and
`.exp` files for input/expected output, and with this shitty function
navigating between them is a lot simpler

Change-Id: I9d91290057521fe1e1599f69fd6b0f35e1b59960
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6058
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2022-08-10 16:48:30 +00:00
Vincent Ambo
e4f2797e01 fix(tazjin/emacs): Set defaults for multiple-cursor hydra commands
Change-Id: Ic07ed0d507ffd112f46953efbf6554b93a208671
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5325
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
2022-02-26 10:52:01 +00:00
Vincent Ambo
6328f1c7c8 feat(tazjin/emacs): add zoxide-open-magit and a binding for it
Change-Id: Ibe3264769ab6e6d1400088e8a72d3ef22dc4cd78
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4514
Reviewed-by: tazjin <mail@tazj.in>
Autosubmit: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2021-12-20 08:52:49 +00:00
Vincent Ambo
bef01b1419 feat(tazjin/emacs): Add #'rg-in-project
Uses project.el to anchor the ripgrep search. In combination with my
project detection logic, this means that grepping in TVL subprojects
works automatically.

Change-Id: I2705466d1de156c08ff0401a71112864aa24f976
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2542
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2021-02-22 13:50:34 +00:00
Vincent Ambo
8ad3e84e40 chore(tazjin/emacs): Remove #'fefes-blog
It's not worth reading anymore, he's getting old.

Change-Id: Ia9bac99169949c3f057c0e9c526cbc99e925af76
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2283
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2020-12-20 16:25:54 +00:00
Vincent Ambo
2485006197 refactor(tazjin/emacs): Always use completing-read instead of ivy
This is a step towards making the completing-read framework more
easily interchangeable (I'm eyeing selectrum).

Change-Id: I7a066e212a5384136defbba8f11ef9ed57abf22e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2240
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
2020-12-09 14:09:23 +00:00
Vincent Ambo
48235517f6 feat(tazjin/emacs): Add function for quick Songwhip lookups
Adds a function `songwhip-lookup-url` which looks up the supplied URL
on Songwhip and copies the Songwhip link if a result was found.

This is bound to `s-s w` for convenience.

Change-Id: I3b529a058ee56f992942760910822490e6324259
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2002
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-09-27 21:02:41 +00:00
Vincent Ambo
35b214ae9f feat(tazjin/emacs): Add magit-find-file-worktree function
This will look up a file in the current worktree of the git repository
enclosing `default-directory'.

In combination with project-find-file this lets me toggle between
switching to a file within a project, and within the whole depot.

Change-Id: Ie1011f10051fc2c4bd4279b0944a79c7edf92f3b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1838
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-23 23:47:46 +00:00
Vincent Ambo
937469509b feat(tazjin/emacs): Add depot-aware project.el extension
If this ends up working well I'll extract it to tvl.el

Change-Id: I83722abf33a3346ccc7957c8d64d6381b15c6ee9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1837
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
2020-08-23 22:48:04 +00:00
Vincent Ambo
9266b3947d feat(emacs-pkgs/tvl): Add #'tvl-depot-status function
This function opens the depot in magit. By default the depot path is
assumed to be `/depot`, but that is made available as a customise
option that users can override.

Change-Id: Iefc127cad515dbae330d7af3aa69a0c53aa02015
Reviewed-on: https://cl.tvl.fyi/c/depot/+/504
Reviewed-by: glittershark <grfn@gws.fyi>
2020-06-19 17:54:46 +00:00
Vincent Ambo
0b0e8c2da7 chore(tazjin/emacs): Move //tools/emacs to //users/tazjin/emacs
Change-Id: I9dfbd0bb1fd3e215bb91c5734fb0934ee3faeae6
2020-06-18 20:19:50 +01:00
Renamed from tools/emacs/config/functions.el (Browse further)