When everything is interpreted it all works fine because ‘consult’ is loaded
before the ‘with-eval-after-load’ part is run, but when byte compiling the byte
compiler doesn't know that ‘consult-customize’ is a macro unless ‘consult’ is
loaded, which it isn't when Guix compiles it.
When it's byte-compiled as if it's a function ‘consult-buffer’ is assumed to be
a variable that's passed in, so I'm guessing it's trying to dereference it first
before passing it on to a non-existent function? But of course ‘consult-buffer’
is only a function (Emacs Lisp is a Lisp-2 after all), so it fails, but only
when byte compiled (and even only when byte-compiled in a clean environment
where there are no packages loaded that aren't explicity said to be).
Hopefully this fixes my issue with being unable to switch buffers until I
explicitly load ‘consult’.
This reverts commit 961651e575.
It works in an interactive session, but still fails while starting up. Probably
has to do with autoloads not having finished loading yet, perhaps?
This macro seems to work fine when expanded at run-time even when ‘consult’
hasn't been loaded, but it doesn't work after it's been byte-compiled... Perhaps
putting it in the top-level will help. I'm wondering if somehow the byte
compiler closes over a reference to ‘consult-buffer’ during compilation that's
not available when it executes?
In the Groovy used with Jenkins it seems quite common for there to be top-level
functions that aren't explicitly in classes (they still are implicitly).
The ‘get-multifile-module-version’ and ‘get-module-version’ functions open up
the given Emacs Lisp file and search for a “Version” header, parses it out, and
then returns the file name of the module as it should look in the package
archive.
I'm working on moving my build setup to my own laminar[1] instance. To do this I
need to be able to package files up. It appears that I couldn't quite get Cask
to work, and Eldev exists in the Guix[2] package repository.
[1]: https://laminar.ryuslash.org/
[2]: https://guix.gnu.org/
I'm having some issues with my ‘consult-buffer’ setup and I'm hoping that
putting this in its own function will help me debug the issue, or at least show
me if this is part of the issue or not.
The various ‘M-<NUMBER>’ keybindings are all also bound to ‘C-<NUMBER>’, no need
to have both, and using ‘M-0’ is a lot easier than using ‘C-x 0’. This also
replaces the old keybindings with a message that tells me to use the new
keybindings instead to help me learn.
Don't load the user init file while building my Emacs packages, make sure to use
a different ‘package-user-dir’ so that bad packages don't interfere and it
doesn't accidentally work because of existing packages. Specify the
‘package-archive-upload-base’ in the Makefile so that there is only one place to
look and modify if this needs to move. Ensure that the
‘package-archive-upload-base’ exists before uploading to it.
This also happens to include changes to the font for Eshell as an experiment and
setting the page delimiter so page navigation commands work on prompts.
Instead of adding a lot of tags and adding a lot of agendas filtering on them
I'm experimenting with using org-edna to make certain contexts a dependency of a
task to filter them out of my todo list.
Current contexts I'm experimenting with are:
- ‘day-of-week?’ to filter out tasks that I can only do on certain days.
- ‘night-time?’ to filter out anything that I can't do in the evening. Usually
having to do with contacting others.
- ‘business-hours?’ to filter out anything that is outside of a certain
timezone's “business hours”, defined by me as anywhere between 9am and 6pm.
‘paredit-mode’ appears to have added keybindings for ‘C-j’ and ‘RET’ that
weren't there before (or did I enable ‘paredit-mode’ in IELM recently?) and that
interfere with executing code.
This way of removing the keybindings works in a buffer-local only way so that in
other buffers the ‘RET’ and ‘C-j’ keybindings remain untouched.
First: the match needs to be any entry that does match the names of the people
whos blogs I already follow.
Second: The search regular expression can't contain spaces. It seems to be the
same as any search query. So when a regular expression contains a space it's
considered two different search terms. This doesn't work when we're searching
for one option with a space in it (“Irreal” or “Sacha Chua” or “Andrea”) since
the syntax for the regular expression gets all messed up. Quickest workaround is
to match any whitespace instead.
Instead specify a width for the column and shrink the table. This way it still
gets truncated, but it can be expanded and the whole text is in the column.