Commit graph

15477 commits

Author SHA1 Message Date
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
Vincent Ambo
14fb1ff1bc fix(third_party/lisp): Fix name of cl-ppcre package 2020-01-17 00:01:07 +01:00
Carlos O'Ryan
80c043faf9
chore: bump release numbers for future releases (#33) 2020-01-16 14:01:52 -05:00
Carlos O'Ryan
7bf4c67daa
chore: bump version numbers (#32)
I need to create a v0.4.x release and the version numbers are at v0.3.0
2020-01-16 13:00:54 -05:00
Carlos O'Ryan
52758bec03
feat: add Cloud Pub/Sub protos (#31) 2020-01-16 11:04:40 -05:00
Carlos O'Ryan
20009f59de
ci: verify pkg-config files actually work (#30)
Change the CI builds to verify the pkg-config files we create actually
work. Some improvements in the `.*ignore` files.
2020-01-15 17:44:36 -05:00
William Carroll
8d00a456a0 Beging work to port f.el to Haskell
This is a work-in-progress. I'd like to add a README to this project to explain
my intention. The goal, roughly, is to port Elisp's fantastic f.el module to
Haskell. I consider Haskell APIs to be useful but somewhat sloppily designed. In
the same spirit as Elixir wrapping Erlang APIs, many of the functions I intend
to define will simply wrap existing Haskell APIs, but with a hopefully cleaner
API that I find more intuitive.
2020-01-15 14:29:18 +00:00
William Carroll
d4d8397e5f Add InterviewCake.com examples
Adds some of the code I generated while studying for a role transfer at Google
using the fantastic resource, InterviewCake.com. This work predates the
mono-repo.

I should think of ways to DRY up this code and the code in
crack_the_coding_interview, but I'm afraid I'm creating unnecessary work for
myself that way.
2020-01-15 14:25:33 +00:00
William Carroll
b4ee283b23 Add "Crack the Coding Interview" examples
I believe I have multiple other snippets and attempts scattered across /tmp,
~/programming, and other directories. Again, I created these files and others
before the mono-repo.
2020-01-15 14:23:37 +00:00
William Carroll
456d358cd7 Upload my 2019 Advent of Code attempts
Well, unexpectedly (perhaps naively so), I only made it to Day 7. I created
these before I stumbled upon the idea of the mono-repository; otherwise, I like
to think I would have more granular commits introducing this work.
2020-01-15 14:21:45 +00:00
William Carroll
d480b6f08b Initialize repo
Adding a README and a basic .gitignore to initialize this mono-repo. I'm quite
excited about this undertaking!
2020-01-15 14:21:08 +00:00
Vincent Ambo
bfd0bc2a79 feat(emacs.d): Configure Sly for Common Lisp
Sets up Lisp modes in Sly REPL and points at the local hyperspec
checkout.

In fact the Hyperspec bit should probably be managed by Nix, but one
step at a time.
2020-01-15 11:42:19 +01:00
nlewycky
a2e6adecc2 Use https links. (#586) 2020-01-13 14:12:06 -05:00
Vincent Ambo
c2a797ed8b feat(third_party/cgit): Render timestamps in dottime
Using the DATE_DOTTIME format support in git.
2020-01-12 03:12:34 +00:00
Vincent Ambo
8d8932840e chore(web/cgit-taz): Use in-tree cgit version instead
Drops the previous patch setup to use //third_party/cgit instead.
2020-01-12 02:53:01 +00:00
Vincent Ambo
ac6485efeb feat(third_party/cgit): Add derivation to build cgit
This is pretty much exactly the derivation from nixpkgs, with some
things removed to reduce the closure size (e.g. the various formatters
used in the default cgit version, which are replaced by cheddar in my
setup).
2020-01-12 02:49:44 +00:00
Vincent Ambo
93cc05d363 feat(third_party/git): Add derivation to build git
This overrides the upstream derivation to:

* use local sources
* build `git send-email`

It also calls autoreconf before building because files that are
included in the git distribution tarball (which the normal derivation
uses) are missing from source.
2020-01-12 01:55:23 +00:00
Vincent Ambo
9e67451750 chore(web/cgit-taz): Remove patches which have been integrated
These patches now live as commits at //third_party/cgit
2020-01-11 23:47:41 +00:00
Vincent Ambo
be2f51e1dd feat(third_party/cgit): Generate links to about pages from subtrees
If you're on tree/foo/bar, the about link will now point to
about/foo/bar.

Currently the annoying thing about this is that it will also do it for
files.
2020-01-11 23:47:41 +00:00
Vincent Ambo
0294eec9da feat(third_party/cgit): Use README at each subtree
This means that individual subtrees of a repository will also have
their READMEs rendered on the about page, for example:

    /foo/bar/README.md

Will render on:

    /about/foo/bar/

This is useful for monorepo setups in which subtrees represent
individual projects.
2020-01-11 23:47:39 +00:00
Vincent Ambo
8de22f654c feat(third_party/cgit): Generate monorepo compatible URLs
Generates URLs that do not include the repository name.

On git.tazj.in, only one repository (depot) is served - hence URLs
generated by cgit need not include the name.
2020-01-11 23:47:36 +00:00
Vincent Ambo
8082d87da3 feat(third_party/git/date): add "dottime" format
Adds dottime (as defined on https://dotti.me) as a timestamp format.

This format is designed to simplify working with timestamps across
many different timezones by keeping the timestamp format itself in
UTC (and indicating this with a dot character), but appending the
local offset.

This is implemented as a new format because the timestamp needs to be
rendered both as UTC and including the offset, an implementation using
a strftime formatting string is not sufficient.
2020-01-11 23:43:50 +00:00
Vincent Ambo
7ef0d62730 merge(third_party/git): Merge squashed git subtree at v2.23.0
Merge commit '1b593e1ea4' as 'third_party/git'
2020-01-11 23:40:29 +00:00
Vincent Ambo
1b593e1ea4 Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git
git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
2020-01-11 23:36:56 +00:00
Vincent Ambo
6a2a300707 chore(third_party/git): Remove plain patch check-in 2020-01-11 23:36:38 +00:00
Vincent Ambo
5a069d5888 merge(third_party/cgit): Import at master of 2020-01-11
Imported commit '723dc8fbcb' as
'third_party/cgit'.
2020-01-11 23:31:05 +00:00
Vincent Ambo
723dc8fbcb Squashed 'third_party/cgit/' content from commit 8fc0c81
git-subtree-dir: third_party/cgit
git-subtree-split: 8fc0c81bbbed21ee30e8a48b2ab1066a029b7b32
2020-01-11 23:30:06 +00:00
Vincent Ambo
829de752da fix(emacs.d): Trim superfluous whitespace from TODO comments 2020-01-11 23:23:46 +00:00
Vincent Ambo
700a4c2e05 fix(build): Pass 'lib' as readTree argument to packages 2020-01-11 22:23:20 +00:00
Vincent Ambo
2236d43ff7 feat(cheddar): Implement callout paragraphs
Implements support for tagging paragraphs that begin with a callout
word (TODO, WARNING, QUESTION, TIP) with an additional `cheddar-*`
class that makes it possible to render these callouts specially.

This is currently not the nicest implementation, but it works.
2020-01-11 05:06:36 +00:00
Vincent Ambo
d4e469508f refactor(cheddar): Extract code block highlighting into function
Since I am going down the path of adding additional Markdown
extensions it makes sense to avoid letting `format_markdown` turn into
a giant beast of a function.

Therefore this commit extracts the logic for rendering code blocks via
syntect and changes the innards of `format_markdown` to instead
provide arbitrary AST value replacements.
2020-01-11 02:17:19 +00:00
Vincent Ambo
97f069db9e docs: Add buildLisp & cheddar to README 2020-01-11 02:01:39 +00:00
Abseil Team
564001ae50 Export of internal Abseil changes
--
5448463d79c8473d29b6aae62359eaec09e517b0 by Greg Falcon <gfalcon@google.com>:

Rename absl_types_options.h to absl_alternate_options.h, to reflect that we are testing more than just types with this file.

PiperOrigin-RevId: 289099882

--
8008a5662d1b27c4ea442575405eb0538f63a636 by Abseil Team <absl-team@google.com>:

Internal change

PiperOrigin-RevId: 289097666

--
0e9398fae540bdb7dd752245b83456f3784c50ca by Abseil Team <absl-team@google.com>:

Internal change

PiperOrigin-RevId: 288985613
GitOrigin-RevId: 5448463d79c8473d29b6aae62359eaec09e517b0
Change-Id: I5bc1ee156294793cacf3acbc447c0ea27ce8af4f
2020-01-10 13:37:41 -05:00
Vincent Ambo
4adaf29043 feat(third_party/lisp): Add derivation for cl-ansi-text 2020-01-10 00:38:35 +00:00
Vincent Ambo
b90a5bbfbc feat(third_party/lisp): Add derivation for cl-colors2 2020-01-10 00:38:10 +00:00
Vincent Ambo
98836812eb feat(third_party/lisp): Add derivation for cl-ppcre 2020-01-10 00:27:25 +00:00