WEBVTT

NOTE Ignore this part

00:00:00.031 --> 00:00:02.117
[Sacha]: Cut off at, you know, roughly an

00:00:02.217 --> 00:00:03.702
hour and seven minutes from now.

00:00:03.762 --> 00:00:05.347
She's going to come out and have lunch.

00:00:06.751 --> 00:00:07.072
Okay.

00:00:07.593 --> 00:00:07.914
All right.

00:00:07.934 --> 00:00:09.619
Going live.

00:00:13.160 --> 00:00:17.008
Alright folks, we are here a little bit early.

NOTE Opening

00:00:18.170 --> 00:00:21.917
[Sacha]: This is Emacs Chat 24 with Omar Antolin Camarena,

00:00:22.378 --> 00:00:24.963
whom we know from Embark and Orderless and a lot

00:00:25.003 --> 00:00:27.388
of other little packages that I personally use on

00:00:27.468 --> 00:00:28.190
a daily basis.

00:00:28.210 --> 00:00:29.693
I'm very much looking forward to this

00:00:29.773 --> 00:00:31.656
conversation.

00:00:31.676 --> 00:00:33.480
[Omar]: Yeah, so am I. Very excited.

00:00:34.270 --> 00:00:36.676
[Sacha]: Of course, before we dive into

00:00:36.736 --> 00:00:40.205
all these lovely details, tell us a little bit

00:00:40.225 --> 00:00:41.288
more about your context.

00:00:41.509 --> 00:00:43.454
You're a researcher at the Mathematics

00:00:43.554 --> 00:00:43.995
Institute.

00:00:44.055 --> 00:00:45.940
I can see why Emacs would be a great fit for that.

NOTE How did you get into Emacs in the first place?

00:00:46.000 --> 00:00:49.309
How did you get into Emacs in the first place?

00:00:49.795 --> 00:00:52.740
[Omar]: I think it's just by virtue

00:00:52.780 --> 00:00:53.361
of being old.

00:00:53.441 --> 00:00:55.945
When I started out looking for a text editor,

00:00:55.985 --> 00:00:57.687
there were not that many great options.

00:00:58.328 --> 00:01:03.136
When I was a teenager, 30 years ago, I

00:01:03.276 --> 00:01:05.459
decided to install Linux because I heard about it.

00:01:05.559 --> 00:01:08.063
That was the era where you went to a newsstand

00:01:08.123 --> 00:01:10.026
and you bought a Linux magazine that came with a

00:01:10.066 --> 00:01:13.452
CD, and I installed Linux from that.

00:01:13.472 --> 00:01:17.558
I think it was Slackware, maybe.

00:01:17.538 --> 00:01:22.511
I was already a hobby computer programmer.

00:01:22.751 --> 00:01:26.000
I've been learning programming languages since I

00:01:26.060 --> 00:01:28.707
was a child, when my father gave me my first

00:01:28.747 --> 00:01:30.872
computer.

00:01:31.392 --> 00:01:33.816
I think that was the main reason I switched to

00:01:33.856 --> 00:01:34.116
Linux.

00:01:34.337 --> 00:01:36.701
I noticed that people wrote many more

00:01:37.121 --> 00:01:39.665
interpreters and compilers for Linux than for

00:01:39.706 --> 00:01:40.026
Windows.

00:01:40.587 --> 00:01:42.430
That's why I wanted to use Linux.

00:01:42.650 --> 00:01:44.734
I needed a text editor that handled all sorts of

00:01:44.814 --> 00:01:46.096
weird programming languages.

00:01:47.278 --> 00:01:50.022
I was looking for a general purpose one, not an

00:01:50.123 --> 00:01:50.443
IDE.

00:01:50.904 --> 00:01:54.109
I used IDEs, younger ones, like Turbo Pascal.

00:01:54.089 --> 00:01:56.011
Probably that was the main one.

00:01:56.111 --> 00:01:56.752
I loved that.

00:01:56.772 --> 00:01:57.293
It was great.

00:01:57.973 --> 00:02:00.737
I went through the Linux distro, tried a

00:02:00.797 --> 00:02:04.779
bunch of editors.

00:02:04.780 --> 00:02:08.225
I settled on Emacs and Emacs-like editors.

00:02:08.324 --> 00:02:11.389
I tried Jove, which stands for Jonathan's Own

00:02:11.429 --> 00:02:12.350
Version of Emacs.

00:02:14.292 --> 00:02:16.975
And there was also an editor called...

00:02:17.258 --> 00:02:18.140
Oh, I forget.

00:02:18.160 --> 00:02:20.787
There was one that had its own extension language

00:02:20.847 --> 00:02:21.750
called S-Lang.

00:02:22.492 --> 00:02:23.655
I used that for a while.

00:02:24.276 --> 00:02:28.327
A little later, I remember using Slava Pestov's

00:02:28.427 --> 00:02:29.129
jEdit.

00:02:29.149 --> 00:02:31.335
I really like that, too, although

00:02:31.720 --> 00:02:34.005
Java is not that fun to write extensions in.

00:02:36.771 --> 00:02:38.976
I was looking for an editor and I wanted it to be

00:02:39.016 --> 00:02:41.200
extensible, which is funny because I hardly ever

00:02:41.240 --> 00:02:41.621
extend it.

00:02:42.263 --> 00:02:44.868
I just wanted there to be the option.

00:02:45.129 --> 00:02:46.532
I used Emacs for a long time.

00:02:47.153 --> 00:02:49.037
But when I got serious at

00:02:49.422 --> 00:02:51.400
being efficient at text-editing,

00:02:51.401 --> 00:02:53.433
I actually switched to Vim.

00:02:53.434 --> 00:02:58.918
I switched back to Emacs many years later because

00:02:58.998 --> 00:03:01.523
of one very specific problem in Vim.

00:03:01.543 --> 00:03:04.688
The syntax highlighting for LaTeX files is pretty

00:03:04.728 --> 00:03:05.490
slow.

00:03:05.510 --> 00:03:07.253
On a normal computer, you won't notice that

00:03:07.293 --> 00:03:07.693
it's slow.

00:03:08.034 --> 00:03:11.901
But I had a little netbook that was like 10 years

00:03:11.981 --> 00:03:14.485
old when I had it.

00:03:14.465 --> 00:03:17.850
I took it to class to take notes in math

00:03:17.870 --> 00:03:18.832
courses.

00:03:18.852 --> 00:03:24.941
I was writing in LaTeX Live with a bunch of

00:03:25.021 --> 00:03:26.143
macros to insert things.

00:03:26.703 --> 00:03:30.449
The syntax highlighting meant that Vim lagged

00:03:30.629 --> 00:03:32.432
behind my typing.

00:03:32.452 --> 00:03:34.856
I'm not that fast of a typist, so it was

00:03:35.036 --> 00:03:35.557
problematic.

00:03:36.158 --> 00:03:38.381
The Vim manual has an entire section on what

00:03:38.421 --> 00:03:40.424
to do if text highlighting is slow.

00:03:40.664 --> 00:03:43.088
You can look for it with

00:03:43.372 --> 00:03:45.660
Vim :help tex-slow

00:03:45.800 --> 00:03:50.597
That pops up the right section of the manual.

00:03:51.573 --> 00:03:53.776
I tried everything that it said there and they

00:03:53.816 --> 00:03:56.159
all made it slightly faster, but none of them

00:03:56.199 --> 00:03:57.921
really solved the lag, other than turning off

00:03:57.961 --> 00:03:58.622
syntax highlighting.

00:03:59.123 --> 00:04:00.925
I turned off syntax highlighting and took

00:04:01.005 --> 00:04:03.388
notes for like half a semester, and then I decided

00:04:03.429 --> 00:04:06.713
to try Emacs on that old netbook. Its syntax

00:04:06.753 --> 00:04:08.115
highlighting was perfectly snappy.

00:04:08.515 --> 00:04:10.117
This is just a weird thing in Vim that

00:04:10.278 --> 00:04:13.321
specifically LaTeX syntax highlighting is slow.

00:04:13.402 --> 00:04:17.547
I never noticed it being slow in any other...

00:04:18.100 --> 00:04:20.142
I don't know what Vim calls them, what Emacs

00:04:20.163 --> 00:04:21.065
would call a major mode.

00:04:21.987 --> 00:04:24.090
It was only ever slow in LaTeX, but that was

00:04:24.150 --> 00:04:25.753
enough to get me to try Emacs.

00:04:26.093 --> 00:04:29.239
But by then in Vim, I had learned that you want

00:04:29.940 --> 00:04:32.785
very granular motion commands to move by word or

00:04:32.845 --> 00:04:35.509
by sentence, and you want to be able to be placed

00:04:35.569 --> 00:04:37.292
at the end of the word or at the beginning of the

00:04:37.332 --> 00:04:38.995
word.

00:04:38.975 --> 00:04:43.419
All of these higher-level editing constructs that

00:04:43.459 --> 00:04:45.141
Vim really pushes you toward.

00:04:45.581 --> 00:04:47.543
In Emacs, I hadn't done any of that before.

00:04:47.583 --> 00:04:48.984
I moved around with the arrow keys.

00:04:50.225 --> 00:04:52.447
But when I came back to Emacs after having been

00:04:52.487 --> 00:04:54.069
in Vim, then I wanted to get serious about

00:04:54.109 --> 00:04:55.810
editing efficiently in Emacs.

00:04:56.491 --> 00:04:59.213
I think I actually like it better than Vim

00:04:59.233 --> 00:04:59.754
now.

00:04:59.774 --> 00:05:04.098
But yeah, that's why I switched back to Emacs.

00:05:04.218 --> 00:05:07.260
It's just this quirk that LaTeX syntax

00:05:07.441 --> 00:05:08.982
highlighting is slow in Vim.

00:05:08.962 --> 00:05:10.244
[Sacha]: Well, their loss.

00:05:10.685 --> 00:05:13.350
So you tried a whole bunch of other editors.

00:05:13.690 --> 00:05:16.435
You got into Vim because you wanted to be more

00:05:16.495 --> 00:05:17.016
efficient.

00:05:18.699 --> 00:05:22.286
Getting deeply into Vim was great, but you ran

00:05:22.346 --> 00:05:23.027
into that bug.

00:05:23.247 --> 00:05:25.351
So you switched to Emacs because it was more

00:05:25.411 --> 00:05:28.236
efficient, more performant.

00:05:28.216 --> 00:05:31.901
All that experience with Vim has made you a

00:05:31.941 --> 00:05:33.924
better Emacs user because now you're like, okay,

00:05:33.944 --> 00:05:36.188
you appreciate all the navigation and movement.

00:05:36.528 --> 00:05:38.010
And you were telling me over email...

00:05:38.070 --> 00:05:40.394
[Omar]: Things I missed from Vim.

00:05:40.414 --> 00:05:40.774
[Sacha]: Yeah,

00:05:40.794 --> 00:05:43.979
You were telling me over email how the kind of

00:05:44.019 --> 00:05:47.304
the keyboard macros that you got used to in Vim,

00:05:48.245 --> 00:05:50.428
you've translated some of that over to Emacs and

00:05:50.508 --> 00:05:51.390
how you use them.

00:05:51.410 --> 00:05:53.633
We definitely want to get into that.

00:05:53.798 --> 00:05:55.321
[Omar]: Keyboard macro-like things.

00:05:55.421 --> 00:05:58.227
In Emacs, for a while, I used multiple-cursors.

00:05:59.068 --> 00:06:00.752
I liked it a lot.

NOTE Repeating edits

00:06:01.253 --> 00:06:03.958
One thing I really missed from Vim is the dot

00:06:03.978 --> 00:06:06.723
command that repeats the last edit.

00:06:07.405 --> 00:06:09.609
But in Vim, edits are composite things.

00:06:09.709 --> 00:06:13.697
You have a command to change

00:06:13.677 --> 00:06:15.201
a sentence, for example.

00:06:15.743 --> 00:06:17.949
That will delete the current sentence,

00:06:17.969 --> 00:06:20.256
put you into insert mode, let you type a new

00:06:20.296 --> 00:06:22.703
sentence, and when you press escape, that

00:06:22.763 --> 00:06:23.465
concludes the edit.

00:06:23.485 --> 00:06:25.731
The whole edit is the operation of deleting

00:06:25.772 --> 00:06:27.557
the current sentence and replacing it with the

00:06:27.617 --> 00:06:29.121
specific thing you typed.

00:06:29.101 --> 00:06:32.106
That is a thing you can repeat.

00:06:32.387 --> 00:06:39.018
The repeatable edit commands in Vim are much

00:06:39.459 --> 00:06:43.746
coarser and more conceptually appropriate units

00:06:43.806 --> 00:06:44.407
than in Emacs.

00:06:44.427 --> 00:06:46.591
The repeat command repeats the last Emacs

00:06:46.611 --> 00:06:48.915
command, but everything runs a command in Emacs.

00:06:48.895 --> 00:06:50.778
You can repeat inserting the last character.

00:06:50.838 --> 00:06:51.720
That's not very useful.

00:06:51.780 --> 00:06:55.486
You want to repeat at least the whole consecutive

00:06:55.586 --> 00:06:57.389
stretch of characters you inserted.

00:06:57.850 --> 00:06:59.753
Undo in Emacs does do that.

00:07:00.254 --> 00:07:01.476
Undo coalesces.

00:07:01.756 --> 00:07:04.461
If you type a bunch of characters and you undo,

00:07:05.102 --> 00:07:06.665
it doesn't undo them one by one.

00:07:06.685 --> 00:07:07.867
It undoes them.

00:07:08.127 --> 00:07:10.932
It clumps them depending on pauses between your

00:07:10.972 --> 00:07:11.713
typing.

00:07:11.693 --> 00:07:12.675
That's fine.

00:07:12.715 --> 00:07:14.599
I want that sort of coarseness.

00:07:14.819 --> 00:07:16.703
I don't want to undo every single step at a time.

00:07:16.863 --> 00:07:18.586
Similarly, when you repeat things, you don't

00:07:18.606 --> 00:07:20.530
want to repeat every single step.

00:07:20.971 --> 00:07:24.337
I think Vim has like a pretty good unit of

00:07:25.139 --> 00:07:26.963
things you can repeat.

00:07:26.983 --> 00:07:28.566
I was missing that in Emacs.

NOTE dot-mode: repeating commands

00:07:28.726 --> 00:07:33.415
There's a package called dot-mode

00:07:33.597 --> 00:07:35.780
which I used to use and I like a lot.

00:07:36.280 --> 00:07:40.445
I'm not exactly sure why I stopped using it.

00:07:42.467 --> 00:07:45.771
So this gives you a more Vim-like experience for

00:07:45.991 --> 00:07:50.096
repeating commands in Emacs and what it does is

00:07:50.136 --> 00:07:55.382
that it watches you as you type and it constantly

00:07:55.462 --> 00:07:58.947
makes a keyboard macro out of the last

00:07:59.027 --> 00:08:02.811
consecutive stretch of buffer modifying commands.

00:08:03.449 --> 00:08:06.573
So, for example, in Vim, if you want to change a

00:08:06.633 --> 00:08:08.415
word, there is a change word command, and you

00:08:08.435 --> 00:08:11.099
type `c w`, and then you change the word, and then

00:08:11.139 --> 00:08:12.060
that thing gets repeated.

00:08:12.461 --> 00:08:14.483
In Emacs, to change a word, it's not a single

00:08:14.563 --> 00:08:14.924
unit, right?

00:08:14.944 --> 00:08:17.387
You delete the word, and then you type in

00:08:17.427 --> 00:08:20.811
something new, and each character you type is

00:08:21.773 --> 00:08:26.138
running insert-char. dot-mode will coalesce

00:08:26.259 --> 00:08:28.361
all of that into a single keyboard macro that you

00:08:28.381 --> 00:08:29.743
can repeat, right?

00:08:29.723 --> 00:08:33.493
If you do some motion command that doesn't modify

00:08:33.813 --> 00:08:36.139
the buffer, and then you delete a word and type a

00:08:36.179 --> 00:08:38.986
new word, everything from the deletion to the end

00:08:39.006 --> 00:08:41.373
of the typing would be what dot mode repeats.

00:08:41.653 --> 00:08:43.999
The experience is actually very similar to

00:08:44.120 --> 00:08:46.686
using dot in Vim.

00:08:46.666 --> 00:08:48.209
In my opinion, a little bit better,

00:08:48.269 --> 00:08:50.594
because in Vim, I often had this problem.

00:08:50.754 --> 00:08:53.359
It gets you into this competitive video game

00:08:53.399 --> 00:08:54.502
mentality.

00:08:54.602 --> 00:08:56.726
How do I do the edit in a single repeatable

00:08:56.766 --> 00:08:57.087
command?

00:08:57.107 --> 00:08:59.271
I want to be able to use dot to do this again.

00:08:59.672 --> 00:09:01.536
So that you have to think ahead.

00:09:01.896 --> 00:09:03.680
It's kind of distracting.

00:09:03.700 --> 00:09:06.105
Of course, if a sensible person would not get

00:09:06.405 --> 00:09:08.269
caught up in that, it would just...

00:09:08.249 --> 00:09:09.851
do the edit whichever way they can,

00:09:10.211 --> 00:09:12.575
but I wanted to maximize the repeatability.

00:09:14.157 --> 00:09:16.179
dot-mode lets you be a little bit more relaxed.

00:09:16.439 --> 00:09:20.124
It still catches all of the thing that should

00:09:20.164 --> 00:09:21.426
have been a single edit.

00:09:21.446 --> 00:09:22.928
So yeah, I like it a lot.

00:09:23.508 --> 00:09:24.390
[Sacha]: So that's dot-mode.

NOTE
block-undo: undo things as a chunk
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-01-06-05-633.jpg
#+SCREENSHOT_TIME: 01:06:05.633

00:09:24.410 --> 00:09:27.534
You also mentioned block-undo.

00:09:28.375 --> 00:09:31.799
[Omar]: That is a package of mine I can

00:09:31.939 --> 00:09:32.620
show you.

00:09:33.629 --> 00:09:36.293
That's the entire package.

00:09:36.734 --> 00:09:40.259
It just uses this `with-undo-amalgamate` command.

00:09:40.279 --> 00:09:44.246
Whatever you run inside `with-undo-amalgamate`

00:09:44.566 --> 00:09:46.549
undoes in a single step.

00:09:46.589 --> 00:09:49.714
I use it for executions of keyboard macros.

00:09:49.694 --> 00:09:54.860
A keyboard macro, if you run it all over the

00:09:54.901 --> 00:09:57.604
place, if you apply it to every line in a region,

00:09:58.024 --> 00:10:01.349
or you just repeat it a hundred times, that is a

00:10:01.449 --> 00:10:02.851
lot of tiny individual edits.

00:10:03.351 --> 00:10:05.494
If you undo that, you do not want to undo them

00:10:06.115 --> 00:10:06.635
one by one.

00:10:07.216 --> 00:10:11.221
This just makes them all undo in a single step,

00:10:11.541 --> 00:10:13.023
which is what Vim does, actually.

00:10:13.063 --> 00:10:14.565
This is one of the things that I said, no,

00:10:14.605 --> 00:10:15.426
Vim has this right.

00:10:15.486 --> 00:10:16.748
I need this in Emacs.

00:10:17.605 --> 00:10:19.067
[Sacha]: Okay, that makes sense.

00:10:19.928 --> 00:10:23.232
So dot-mode is more like implicit keyboard

00:10:23.272 --> 00:10:25.034
macro boundary definitions.

00:10:26.015 --> 00:10:28.138
This one is like the undo-ness of it.

NOTE
Starting and stopping keyboard macros
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-11-29-533.jpg
#+SCREENSHOT_TIME: 00:11:29.533

00:10:29.139 --> 00:10:31.102
I saw in your config, you also have more

00:10:31.162 --> 00:10:33.385
convenient shortcuts for starting and stopping

00:10:33.425 --> 00:10:34.766
keyboard macros.

00:10:34.866 --> 00:10:40.473
It's like a modifier and the keystroke instead

00:10:40.513 --> 00:10:42.956
of two or like function keys, which are further

00:10:43.017 --> 00:10:43.297
away.

00:10:43.477 --> 00:10:45.840
I'm guessing you use keyboard macros a lot.

00:10:46.900 --> 00:10:47.541
[Omar]: Yeah, I do.

00:10:50.524 --> 00:10:54.849
When I got rid of dot-mode, it was an experiment

00:10:54.889 --> 00:10:57.993
to see if I could just remember to record

00:10:58.053 --> 00:10:59.494
keyboard macros.

00:10:59.514 --> 00:11:02.718
The thing that the dot-mode or the dot command in

00:11:02.758 --> 00:11:05.201
Vim solves is that you don't always have the

00:11:05.261 --> 00:11:06.983
foresight to record a keyboard macro.

00:11:07.003 --> 00:11:08.645
Sometimes you realize, oh, I need to do the same

00:11:08.745 --> 00:11:10.427
at some other places,

00:11:10.407 --> 00:11:13.415
but you didn't record it ahead of time.

00:11:13.455 --> 00:11:16.163
Then you wind up doing it once, realizing you

00:11:16.203 --> 00:11:18.008
need to do it a bunch of times, then recording

00:11:18.048 --> 00:11:19.271
the macro, then doing it again.

00:11:19.732 --> 00:11:22.841
I wanted to see if I could remember to record

00:11:22.881 --> 00:11:23.563
macros.

00:11:23.583 --> 00:11:26.290
I decided that I needed to make it as

00:11:26.270 --> 00:11:28.232
as frictionless as possible.

00:11:29.514 --> 00:11:32.418
This is the command that is bound by default to

00:11:33.479 --> 00:11:37.764
F3.

00:11:37.924 --> 00:11:42.750
I like it better than the thing that's bound to

00:11:43.171 --> 00:11:46.675
C-x ( because

00:11:46.840 --> 00:11:50.245
this `kmacro-start-macro-or-insert-counter` does

00:11:50.285 --> 00:11:50.686
both things.

00:11:50.806 --> 00:11:52.789
It could start a recording, or if you are

00:11:52.849 --> 00:11:56.014
recording, it will insert the keyboard macro

00:11:56.054 --> 00:11:59.159
counter.

00:12:01.802 --> 00:12:03.225
[Sacha]: For folks who are like, what?

00:12:03.385 --> 00:12:03.926
Macros?

00:12:03.946 --> 00:12:04.446
Counters?

00:12:04.527 --> 00:12:06.590
Yes, you can have your keyboard macro

00:12:06.690 --> 00:12:09.815
automatically add one to a number, for example.

00:12:09.875 --> 00:12:10.836
There you go.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-12-10-867.jpg
#+SCREENSHOT_TIME: 00:12:10.867

00:12:10.856 --> 00:12:11.697
Hello, hello, hello.

NOTE
Keycast and Embark
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-16-44-033.jpg
#+SCREENSHOT_TIME: 00:16:44.033

00:12:15.848 --> 00:12:21.857
[Omar]: I also activated keycast.

00:12:23.259 --> 00:12:24.361
I hope people can follow along.

00:12:24.461 --> 00:12:27.786
I have some small modifications to make

00:12:28.347 --> 00:12:29.869
embark transparent to keycast.

00:12:29.889 --> 00:12:33.414
If I use embark, you see embark-act, but then

00:12:33.555 --> 00:12:35.798
you also see what command I call.

00:12:36.689 --> 00:12:38.873
[Sacha]: I just stole that from your config.

00:12:39.214 --> 00:12:41.077
I wasn't entirely sure if I was using it

00:12:41.117 --> 00:12:42.760
correctly, but it definitely looked like

00:12:42.780 --> 00:12:44.183
something interesting and useful.

00:12:44.724 --> 00:12:47.449
[Omar]: If you don't use that change, then

00:12:48.692 --> 00:12:50.355
keycast doesn't see through embark and you

00:12:50.415 --> 00:12:52.639
don't get which actions you called.

00:12:52.923 --> 00:12:54.745
[Sacha]: Yeah, the opacity of some of these

00:12:54.966 --> 00:13:02.154
kind of key binding niceties... they hide a lot of

00:13:02.195 --> 00:13:04.598
stuff from the standard Emacs ways of doing

00:13:04.658 --> 00:13:04.958
things.

00:13:05.419 --> 00:13:09.083
That's one of the criticisms of transient and

00:13:09.243 --> 00:13:10.265
other tools.

00:13:10.405 --> 00:13:12.648
I'm glad that you're finding these ways to make

00:13:12.728 --> 00:13:15.471
these packages work well with other packages.

00:13:16.514 --> 00:13:20.101
[Omar]: I think this was by request.

00:13:20.161 --> 00:13:21.022
Somebody requested it.

00:13:21.063 --> 00:13:22.145
Maybe it was Prot.

00:13:22.146 --> 00:13:24.048
It's definitely a good idea.

00:13:30.139 --> 00:13:33.105
The code for that is on the Embark Wiki as well.

NOTE apply-macro-to-lines-of-paragraph

00:13:33.575 --> 00:13:34.716
[Sacha]: The other thing that I wanted to

00:13:34.757 --> 00:13:37.921
point out that you make a convenient keyboard

00:13:38.021 --> 00:13:41.305
shortcut for in terms of keyboard macros is

00:13:41.385 --> 00:13:44.029
`apply-macro-to-lines-of-paragraph`, which I personally

00:13:44.049 --> 00:13:46.191
had not been using until I saw your config.

00:13:46.231 --> 00:13:47.593
And I was like, that is a thing.

00:13:49.796 --> 00:13:50.517
[Omar]: Yeah.

00:13:50.557 --> 00:14:00.319
Well, that's a command that I wrote.

00:14:00.320 --> 00:14:03.526
It's a wrapper around `apply-macro-to-region-lines`,

00:14:05.168 --> 00:14:07.171
but it automatically uses the paragraph.

00:14:07.191 --> 00:14:09.434
That way you don't need to select it.

00:14:09.454 --> 00:14:11.618
I find that extremely convenient.

00:14:15.779 --> 00:14:17.401
What would be a good example of that?

00:14:17.421 --> 00:14:19.204
You want to wrap something.

00:14:21.107 --> 00:14:25.753
What should I do as an example of this?

00:14:26.094 --> 00:14:28.317
For some reason, I needed to convert these things

00:14:28.998 --> 00:14:35.487
to, say, unwrap the parentheses and turn them

00:14:35.527 --> 00:14:37.149
into an Org Mode table.

00:14:38.171 --> 00:14:39.693
[Sacha]: Yeah, that makes sense.

00:14:39.713 --> 00:14:41.235
[Omar]: I just apply it to the rest of

00:14:41.275 --> 00:14:41.816
the paragraph.

00:14:42.958 --> 00:14:43.879
[Sacha]: Magic.

00:14:46.880 --> 00:14:49.533
That's great, because I would normally

00:14:49.534 --> 00:14:53.533
just start executing the macro and hope I

00:14:53.534 --> 00:14:54.533
remember to stop at the end,

00:14:54.534 --> 00:14:57.067
but then I overshoot, and then I have to undo,
j

00:14:57.068 --> 00:14:59.100
and then it's a mess.

00:14:59.101 --> 00:15:01.006
[Omar]: Or you could select the paragraph and then just

00:15:01.146 --> 00:15:04.973
use the built-in `apply-macro-to-lines-in-region`.

00:15:05.881 --> 00:15:07.945
[Sacha]: Yes, yes, that's a possibility.

00:15:08.346 --> 00:15:09.308
[Omar]: It just saves you the step of

00:15:09.388 --> 00:15:10.310
marking the paragraph.

00:15:10.390 --> 00:15:13.176
I found that I most often when I used apply macro

00:15:13.196 --> 00:15:14.999
to lines in region, the region was exactly a

00:15:15.060 --> 00:15:15.420
paragraph.

00:15:15.440 --> 00:15:16.963
So I figured like there's no point in...

00:15:17.464 --> 00:15:18.426
[Sacha]: All right, all right.

00:15:18.507 --> 00:15:22.675
[Omar]: It's undone in a single step.

00:15:22.655 --> 00:15:25.619
Like the application.

00:15:25.639 --> 00:15:28.323
The thing I recorded as a macro, that is not

00:15:28.383 --> 00:15:29.064
coalesced.

00:15:29.084 --> 00:15:30.346
Yes, of course.

00:15:30.366 --> 00:15:32.509
[Sacha]: Because that's the actual recording

00:15:32.589 --> 00:15:32.829
of it.

00:15:33.490 --> 00:15:36.054
Charlie Baker in the chat says,

00:15:36.094 --> 00:15:38.117
"Definitely going to add the keycast transparency

00:15:38.157 --> 00:15:38.798
to my config.

00:15:38.818 --> 00:15:40.160
I've been wanting that for a while."

00:15:40.540 --> 00:15:42.803
These little demos of like, oh,

00:15:42.863 --> 00:15:45.227
this is what this thing in your config does.

00:15:45.627 --> 00:15:47.390
It's very helpful for people to be able to see

00:15:48.952 --> 00:15:49.733
its awesomeness.

00:15:49.753 --> 00:15:59.239
[Omar]: Where is that?

00:15:59.240 --> 00:16:00.628
[Sacha]: One of the other interesting things

00:16:00.668 --> 00:16:02.990
you mentioned was your placeholder package.

00:16:03.010 --> 00:16:04.953
I can see how the keyword macros help you with

00:16:04.993 --> 00:16:06.314
text that's already there.

00:16:06.334 --> 00:16:07.916
Then you've got these placeholders for

00:16:08.056 --> 00:16:09.758
informal snippets or quick snippets.

00:16:10.679 --> 00:16:11.300
Show us that.

00:16:11.400 --> 00:16:13.182
You use it a lot.

00:16:13.162 --> 00:16:13.803
[Omar]: Yeah, I do.

00:16:15.046 --> 00:16:18.352
Oh, that `tmp-buffer` is a command I have for

00:16:18.673 --> 00:16:21.599
popping up temporary buffers in specific major

00:16:21.639 --> 00:16:21.939
modes.

00:16:23.122 --> 00:16:24.765
Maybe I can quickly show that first.

00:16:25.125 --> 00:16:25.707
Yeah, yeah, yeah.

00:16:26.729 --> 00:16:27.410
So let's see.

00:16:29.213 --> 00:16:30.115
Oh, yeah.

00:16:30.255 --> 00:16:31.558
So let me...

NOTE
embark-on-last-message

00:16:34.070 --> 00:16:37.474
There I used another little command I have.

00:16:38.896 --> 00:16:41.259
`embark-on-last-message`

00:16:41.279 --> 00:16:44.322
It just calls Embark on the last thing in the

00:16:44.382 --> 00:16:45.123
messages buffer.

00:16:47.306 --> 00:16:50.490
Often I want to act on the thing that is the last

00:16:50.550 --> 00:16:52.712
word in the echo area,

00:16:52.732 --> 00:16:55.015
so that's what this does.

00:16:56.429 --> 00:16:56.950
[Sacha]: Okay.

00:16:57.810 --> 00:16:59.352
[Omar]: The last thing in the echo

00:16:59.512 --> 00:17:02.375
area was this symbol `embark-on-last-message` so I

00:17:02.435 --> 00:17:04.196
can act on it directly.

00:17:04.217 --> 00:17:05.759
[Sacha]: Which is brilliant because

00:17:05.779 --> 00:17:08.121
I keep switching to the messages buffer to

00:17:08.161 --> 00:17:11.023
try to copy something, and by the time I

00:17:11.064 --> 00:17:12.906
switch, sometimes there are other messages,

00:17:12.986 --> 00:17:15.729
so it's great to just be

00:17:15.769 --> 00:17:16.770
able to do something.

00:17:16.790 --> 00:17:18.050
[Omar]: If there are other messages,

00:17:18.252 --> 00:17:20.534
then I also switch to the messages buffer, but if

00:17:20.594 --> 00:17:23.057
I want to act on the very last thing, I have that

00:17:23.097 --> 00:17:23.517
command for it.

00:17:23.497 --> 00:17:24.377
[Sacha]: Yeah.

00:17:24.397 --> 00:17:27.320
I'm saying this is faster, so I get the chance of

00:17:27.421 --> 00:17:30.344
just hitting the shortcut before another timer

00:17:30.764 --> 00:17:32.746
goes in and messes around with my messages.

00:17:33.307 --> 00:17:34.528
So yes, shortcuts.

00:17:34.548 --> 00:17:35.549
Okay, temp buffer.

00:17:36.290 --> 00:17:38.072
Tell us about that.

00:17:38.152 --> 00:17:41.836
[Omar]: You can configure single... Wait, where am I?

00:17:43.958 --> 00:17:44.839
Transcribing job.

00:17:45.259 --> 00:17:48.623
I ran Whisper by accident.

00:17:49.323 --> 00:17:50.404
[Sacha]: Which is another thing I wanted to

00:17:50.464 --> 00:17:51.245
check.

00:17:51.265 --> 00:17:52.947
Many things I want to talk to you about…

00:17:56.030 --> 00:17:57.953
[Omar]: The idea of using Whisper, I stole

00:17:58.013 --> 00:17:58.333
from you

00:17:59.835 --> 00:18:02.078
using it to dictate. I thought, oh, this looks

00:18:02.139 --> 00:18:02.579
convenient

00:18:02.619 --> 00:18:04.442
if the model is good. I tried it and it is

00:18:04.482 --> 00:18:04.862
very good.

NOTE
tmp-buffer with a major mode
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-18-10-233.jpg
#+SCREENSHOT_TIME: 00:18:10.233

00:18:06.124 --> 00:18:06.565
[Sacha]: Temp buffer.

00:18:07.045 --> 00:18:09.148
[Omar]: Different major modes.

00:18:09.869 --> 00:18:13.415
It has a customizable list of bindings for

00:18:13.655 --> 00:18:14.696
specific major modes.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-18-19-533.jpg
#+SCREENSHOT_TIME: 00:18:19.533

00:18:15.217 --> 00:18:17.520
It also has an option to just prompt you for a

00:18:17.560 --> 00:18:18.101
major mode.

00:18:19.724 --> 00:18:24.269
It pops up a temp buffer in whatever major

00:18:24.309 --> 00:18:24.990
mode you chose.

00:18:26.251 --> 00:18:30.216
I use it all the time to make new scratch buffers.

00:18:30.236 --> 00:18:31.257
[Sacha]: Yeah, I can see that's useful.

00:18:31.277 --> 00:18:35.021
I switch to a buffer that's got a name that

00:18:35.061 --> 00:18:36.923
doesn't exist yet, and then I have to press more

00:18:36.963 --> 00:18:38.104
keys to get to the major mode.

00:18:38.405 --> 00:18:39.326
[Omar]: But if you're doing certain

00:18:39.346 --> 00:18:42.409
things, just type random letters to make a new

00:18:42.489 --> 00:18:42.769
buffer,

00:18:42.930 --> 00:18:45.132
this is much better.

00:18:45.172 --> 00:18:47.014
They might as well all be called temp.

00:18:48.107 --> 00:18:50.249
[Sacha]: Do you reuse the buffers, or it's

00:18:50.289 --> 00:18:51.290
always just the one buffer?

00:18:52.091 --> 00:18:54.934
[Omar]: New buffer, then I kill it.

00:18:54.954 --> 00:18:55.655
[Sacha]: Very temporary.

00:18:56.216 --> 00:18:56.596
Gotcha.

00:18:57.177 --> 00:18:58.778
[Omar]: By the way, `kill-current-buffer` doesn't

00:18:58.818 --> 00:18:59.899
have a default key binding.

00:18:59.960 --> 00:19:01.041
I don't understand why not.

00:19:04.464 --> 00:19:05.586
OK.

00:19:05.746 --> 00:19:08.889
I bind it to `C-c C-k`, which normally, I

00:19:08.929 --> 00:19:09.790
think, is `kill-buffer`,

00:19:09.830 --> 00:19:12.833
but why would you want to kill a buffer that's

00:19:12.893 --> 00:19:15.516
not the one you're looking at?

00:19:16.930 --> 00:19:19.059
Wait, what was I going to show you?

00:19:19.481 --> 00:19:20.204
[Sacha]: You were going to show me

00:19:20.264 --> 00:19:21.067
placeholders.

00:19:22.393 --> 00:19:23.557
[Omar]: Right.

NOTE
placeholder
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-19-42-100.jpg
#+SCREENSHOT_TIME: 00:19:42.100

00:19:26.532 --> 00:19:31.279
I often need to send several similar email

00:19:31.319 --> 00:19:31.820
messages.

00:19:33.242 --> 00:19:38.109
I'm going to invite you on some day of some month

00:19:38.910 --> 00:19:41.454
to give a talk, etc.

00:19:42.075 --> 00:19:44.979
That's the body of an email.

00:19:45.440 --> 00:19:46.902
I'll write it once.

00:19:46.962 --> 00:19:51.950
Here I'm using `placeholder-insert` to insert this symbol.

00:19:52.511 --> 00:19:54.193
It appears in green,

00:19:54.832 --> 00:19:58.479
but it doesn't matter.

00:19:58.519 --> 00:19:59.200
It's just text.

00:19:59.340 --> 00:20:02.065
You could type that symbol yourself.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-20-05-633.jpg
#+SCREENSHOT_TIME: 00:20:05.633

00:20:02.566 --> 00:20:06.232
Then the `placeholder-next` and -previous

00:20:06.272 --> 00:20:10.340
commands will cycle among those and let you fill

00:20:10.740 --> 00:20:12.403
each one in.

00:20:12.644 --> 00:20:14.086
You don't have to fill it in right now.

00:20:14.708 --> 00:20:16.591
If you repeat the command, it restores the

00:20:16.631 --> 00:20:18.915
placeholder and moves you to the next location.

00:20:19.368 --> 00:20:21.231
[Sacha]: That's one of the things I liked

00:20:21.291 --> 00:20:23.815
about the implementation compared to yasnippet,

00:20:23.835 --> 00:20:25.538
because yasnippet, you’ve got to actually remember

00:20:25.578 --> 00:20:27.781
to fill in the fields before you move on to

00:20:27.821 --> 00:20:28.422
something else.

00:20:28.683 --> 00:20:31.087
If you get out of it, you can't tab to the next

00:20:31.127 --> 00:20:31.667
field.

00:20:31.688 --> 00:20:34.312
The placeholders will let you go and come

00:20:34.372 --> 00:20:36.876
back and look up some information and put that in

00:20:36.936 --> 00:20:37.697
and so forth.

NOTE enable-recursive-minibuffers

00:20:38.605 --> 00:20:40.307
[Omar]: Yeah, there's lots of things I

00:20:40.367 --> 00:20:42.690
loved about Vim, but one thing I grew to strongly

00:20:42.750 --> 00:20:45.593
dislike is modal computer programs.

00:20:46.274 --> 00:20:47.936
Not just modal editing, modal anything.

00:20:48.196 --> 00:20:50.739
I don't like being forced to finish what I

00:20:50.799 --> 00:20:51.180
started.

00:20:51.720 --> 00:20:54.424
I want to be able to get distracted and go off

00:20:54.464 --> 00:20:55.885
and do something else.

00:20:55.905 --> 00:20:58.749
For example, in Emacs, I very much dislike the

00:20:58.849 --> 00:21:02.453
default value of `enable-recursive-minibuffers`.

00:21:03.901 --> 00:21:06.886
The default value is `nil`.

00:21:06.926 --> 00:21:09.711
They don't let you use the minibuffer if you're

00:21:09.751 --> 00:21:11.213
already using the minibuffer.

00:21:11.313 --> 00:21:13.056
Emacs is supposed to be about freedom.

00:21:13.116 --> 00:21:14.639
Why is that the default value?

00:21:15.440 --> 00:21:17.523
So I set it to `t`, which is more sensible.

00:21:17.864 --> 00:21:19.767
That way you're not stuck in the minibuffer.

00:21:21.012 --> 00:21:22.214
[Sacha]: Actually, one of the things that

00:21:22.254 --> 00:21:24.558
I've been trying to figure out is when I'm in a

00:21:24.658 --> 00:21:27.182
minibuffer, sometimes I want to use Embark to

00:21:27.222 --> 00:21:29.145
insert something into the minibuffer, but then I

00:21:29.205 --> 00:21:31.850
end up inserting it into the buffer buffer.

00:21:31.870 --> 00:21:35.035
[Omar]: Yeah, there's no... Embark doesn't

00:21:35.075 --> 00:21:38.160
have any solution to that problem.

00:21:38.461 --> 00:21:40.706
It doesn't always do that.

00:21:40.746 --> 00:21:42.510
It does that if you're in the minibuffer in a

00:21:42.570 --> 00:21:44.193
completion session.

00:21:44.374 --> 00:21:46.599
If you're in the minibuffer in a non-completion

00:21:46.659 --> 00:21:49.064
session, then it acts as a regular buffer.

00:21:49.124 --> 00:21:54.148
So if you're in eval and here you had...

00:21:54.149 --> 00:21:56.480
You can use `embark-insert` in the usual way to

00:21:56.580 --> 00:21:58.444
duplicate stuff.

00:21:58.508 --> 00:22:00.412
[Sacha]: I have a workaround.

00:22:00.432 --> 00:22:03.618
I just use kill. I copy the text

00:22:03.698 --> 00:22:05.582
instead of inserting it and that works out fine.

00:22:07.125 --> 00:22:08.187
[Omar]: Yeah, I do too.

00:22:08.648 --> 00:22:11.653
The behavior of inserting into the previous

00:22:11.714 --> 00:22:14.539
buffer is so useful that I don't think I would

00:22:14.559 --> 00:22:15.321
want to change that.

00:22:15.761 --> 00:22:17.465
But yeah, it is unfortunate that for that

00:22:17.505 --> 00:22:20.230
specific instance, you can't use insert.

00:22:20.615 --> 00:22:24.241
[Sacha]: I appreciate that Embark allows

00:22:24.301 --> 00:22:26.445
us to have all of these key bindings that we can

00:22:26.485 --> 00:22:27.186
do stuff with.

00:22:27.547 --> 00:22:29.931
I noticed in your config, in

00:22:29.991 --> 00:22:32.476
addition to Embark, you also modify a lot of the

00:22:32.556 --> 00:22:37.284
standard key maps to add other shortcuts to

00:22:37.324 --> 00:22:38.927
rebind things that make sense to you.

00:22:39.717 --> 00:22:43.866
Key bindings are something that a lot of

00:22:43.906 --> 00:22:46.051
people struggle with, trying to figure out more

00:22:46.091 --> 00:22:47.935
places to put more shortcuts that make

00:22:47.975 --> 00:22:48.195
sense.

00:22:48.235 --> 00:22:51.222
What are the key shortcuts that work really well

00:22:51.282 --> 00:22:54.148
for you?

NOTE
Overriding embark-select
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-23-18-367.jpg
#+SCREENSHOT_TIME: 00:23:18.367

00:22:57.928 --> 00:23:00.210
[Omar]: One thing I don't like about the default

00:23:00.230 --> 00:23:04.875
Embark configuration is that `SPC` is used for

00:23:05.056 --> 00:23:10.101
`embark-select`, which marks a target for later use.

00:23:10.121 --> 00:23:12.824
I hardly ever use `embark-select`, so I would

00:23:12.864 --> 00:23:16.048
rather `SPC`be for marking the region, which is

00:23:16.088 --> 00:23:18.031
something I do pretty often, and have

00:23:18.032 --> 00:23:21.274
`embark-select` on `C-SPC`, which is not a command I

00:23:21.374 --> 00:23:22.515
use very often.

00:23:22.495 --> 00:23:24.237
I swapped those.

00:23:26.039 --> 00:23:29.443
I think most of this is just adding new actions

00:23:29.663 --> 00:23:31.665
that feel specific to me.

NOTE
quick-calc
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-24-05-733.jpg
#+SCREENSHOT_TIME: 00:24:05.733

00:23:32.967 --> 00:23:35.823
`quick-calc` is the thing usually found to

00:23:35.824 --> 00:23:40.195
`C-x *`... `calc-dispatch` is the command.

00:23:40.215 --> 00:23:44.540
It's `C-x * q`. That's `quick-calc`.

00:23:45.121 --> 00:23:46.622
It's useful as an Embark action.

00:23:49.124 --> 00:23:54.612
If you have an expression and you... Wait, what am I

00:23:54.652 --> 00:24:01.441
doing wrong? I forgot

00:24:01.481 --> 00:24:05.587
what my binding to mark what Vim calls a

00:24:05.707 --> 00:24:08.050
word in capital letters, which means a consecutive

00:24:08.110 --> 00:24:10.754
stretch of non-space characters... If you

00:24:10.774 --> 00:24:12.912
mark this, I can act on it with `=`,

00:24:12.913 --> 00:24:14.018
get the result.

00:24:14.487 --> 00:24:18.192
[Sacha]: And specifically this `embark-region-map` is what

00:24:19.054 --> 00:24:20.536
you can add in the selected region.

00:24:21.056 --> 00:24:23.179
Incidentally, I've been playing around with using

00:24:23.199 --> 00:24:25.102
the Selected package for this because it also

00:24:25.122 --> 00:24:26.104
gives you the key map.

00:24:27.706 --> 00:24:27.926
[Omar]: Yeah, yeah.

00:24:27.946 --> 00:24:29.829
I love the Selected package and recommend it

00:24:29.889 --> 00:24:30.109
often.

00:24:30.189 --> 00:24:34.596
I don't use it myself just because the only thing

00:24:34.656 --> 00:24:37.560
it would save me is calling `embark-act`,

00:24:37.580 --> 00:24:39.983
because the commands I would put in the selected

00:24:40.023 --> 00:24:41.986
key map are exactly the commands I have in the

00:24:42.026 --> 00:24:43.228
`embark-region-map`.

00:24:43.208 --> 00:24:46.077
For me, Selected would only save me one

00:24:46.117 --> 00:24:47.822
keystroke, which is `Embark Act`,

00:24:47.963 --> 00:24:50.712
so I don't feel it's worth it, but it's a great

00:24:50.752 --> 00:24:51.012
idea.

00:24:52.798 --> 00:24:55.206
For example, I do use the rectangle keymap.

00:24:55.948 --> 00:24:56.931
Yes.

00:24:57.485 --> 00:25:00.269
So they're the only difference.

00:25:00.489 --> 00:25:03.293
It's equally good an idea as Selected is.

00:25:03.593 --> 00:25:05.736
The only difference is that the rectangle keymap

00:25:06.016 --> 00:25:08.800
comes with Emacs and Selected is an external

00:25:08.840 --> 00:25:09.180
package.

00:25:09.200 --> 00:25:12.204
I decided it's not worth installing an

00:25:12.265 --> 00:25:14.127
external package when I could just use

00:25:14.147 --> 00:25:17.972
`Embark Act`, which I do have to use because otherwise I

00:25:18.012 --> 00:25:19.454
won't understand people's bug reports.

00:25:20.856 --> 00:25:23.900
But the rectangle mode there, that one is

00:25:23.940 --> 00:25:24.260
built in,

00:25:24.280 --> 00:25:26.243
so I just found a bunch of useful stuff in it.

00:25:26.830 --> 00:25:28.853
[Sacha]: Yeah, and I noticed you have also

00:25:28.933 --> 00:25:31.658
like you have a `narrow-to-point` so that you can

00:25:31.798 --> 00:25:34.482
use your rectangle commands to yank something

00:25:34.522 --> 00:25:34.823
into it,

00:25:35.163 --> 00:25:37.186
so I get the sense that you use rectangles a fair

00:25:37.227 --> 00:25:37.407
bit.

00:25:37.447 --> 00:25:39.891
[Omar]: You've really read my configuration

00:25:39.931 --> 00:25:41.093
very carefully.

00:25:41.153 --> 00:25:42.675
This `narrow-to-point` is subtle.

00:25:43.056 --> 00:25:45.460
I am very impressed that you figured out the

00:25:45.500 --> 00:25:46.341
reason for it.

00:25:46.456 --> 00:25:49.139
[Sacha]: I started digging through

00:25:49.239 --> 00:25:51.162
`narrow-extras` because I saw your

00:25:51.182 --> 00:25:52.103
`narrow-or-widen-dwim`

00:25:52.143 --> 00:25:54.005
and I said, yes, I need that in my life.

00:25:55.146 --> 00:25:57.189
[Omar]: I don't think... I took it from somebody.

00:25:57.870 --> 00:26:00.713
Endless Parentheses, probably.

00:26:01.694 --> 00:26:04.558
The issue with `narrow-to-point`, the reason you

00:26:04.618 --> 00:26:07.721
need it, is that if you insert a rectangle

00:26:07.782 --> 00:26:14.910
somewhere, try to insert it in a blank line,

00:26:15.329 --> 00:26:18.559
and it'll overlap with what was after it.

00:26:19.121 --> 00:26:21.649
But if you first narrow to the point and then

00:26:21.709 --> 00:26:24.718
insert the rectangle and then widen again, it

00:26:24.738 --> 00:26:25.822
gets its own blank lines.

00:26:26.464 --> 00:26:30.599
That's the reason I have it.

NOTE Multiple cursors

00:26:30.600 --> 00:26:33.080
[Sacha]: @zor_​org asks, was there a time you

00:26:33.120 --> 00:26:35.042
wanted multiple cursors?

00:26:35.062 --> 00:26:36.023
Have you ever been tempted?

00:26:36.524 --> 00:26:37.685
[Omar]: Multiple cursors.

00:26:40.468 --> 00:26:42.930
I think it gave me a false sense of security

00:26:43.010 --> 00:26:46.995
which is why I experimented not using it and then

00:26:47.035 --> 00:26:49.357
the experiment just never stopped.

00:26:49.758 --> 00:26:52.120
The thing with

00:26:52.100 --> 00:26:53.162
multiple cursors...

00:26:53.943 --> 00:26:56.068
Multiple cursors are more interactive than

00:26:56.108 --> 00:27:00.456
keyboard macros, because if you can see several

00:27:00.496 --> 00:27:03.281
cursors on the screen, you can visually make sure

00:27:03.341 --> 00:27:05.425
that what you're doing does apply correctly at

00:27:05.465 --> 00:27:06.868
each of those locations.

00:27:07.591 --> 00:27:10.394
But then I started noticing that that made me

00:27:10.474 --> 00:27:12.537
feel very confident I was doing things the right

00:27:12.557 --> 00:27:13.538
way in multiple cursors,

00:27:13.858 --> 00:27:16.301
but there were some cursors offscreen where I

00:27:16.361 --> 00:27:18.343
wasn't paying attention to what was happening

00:27:18.383 --> 00:27:19.064
there,

00:27:19.084 --> 00:27:21.607
and then I got it wrong and was more confused.

00:27:21.627 --> 00:27:23.769
Just psychologically, a keyboard macro,

00:27:23.789 --> 00:27:25.912
since I know I don't see the other places where

00:27:25.952 --> 00:27:28.274
I'm going to run it, I'm more careful when I

00:27:28.335 --> 00:27:29.616
record the keyboard macro.

00:27:29.596 --> 00:27:34.212
It's a psychological trick I'm playing on myself.

00:27:34.774 --> 00:27:36.680
By using keyboard macros instead of multiple

00:27:36.700 --> 00:27:39.510
cursors, I force myself to pay more attention to

00:27:39.550 --> 00:27:40.112
what I'm doing.

NOTE Block-undo and regular undo

00:27:40.582 --> 00:27:42.105
[Sacha]: Does the block undo still let you

00:27:42.686 --> 00:27:45.731
select a region in order to undo just the part

00:27:45.751 --> 00:27:48.235
that was within it, in case you notice offscreen

00:27:48.276 --> 00:27:50.640
that it's done something bad in just these

00:27:50.760 --> 00:27:51.541
entries?

00:27:51.561 --> 00:27:53.725
[Omar]: Yeah, that's completely independent.

00:27:53.745 --> 00:27:56.390
That built-in Emacs behavior is not affected by

00:27:56.871 --> 00:27:58.353
undo boundaries.

00:27:59.435 --> 00:28:00.497
[Sacha]: Wait, is it?

00:28:00.713 --> 00:28:03.878
[Omar]: If it overlaps with part of... I

00:28:03.938 --> 00:28:04.278
don't know.

00:28:04.318 --> 00:28:04.879
Sorry, sorry.

00:28:06.261 --> 00:28:06.802
I don't know.

00:28:08.365 --> 00:28:11.850
So if I have a big change that I amalgamated into

00:28:11.890 --> 00:28:14.995
a single undo, and then I pick a region that

00:28:15.135 --> 00:28:17.779
overlaps partially with that but not completely,

00:28:17.799 --> 00:28:19.021
what would undo and region do?

00:28:19.541 --> 00:28:20.062
I don't know.

00:28:20.343 --> 00:28:21.945
I think it...

00:28:22.398 --> 00:28:23.101
I'm just guessing.

00:28:23.241 --> 00:28:25.812
I would just think that it sees that the affected

00:28:25.872 --> 00:28:29.467
region by the big block undo is not completely

00:28:29.528 --> 00:28:31.456
contained in the region and then it doesn't undo

00:28:31.536 --> 00:28:31.817
it.

00:28:32.354 --> 00:28:34.677
[Sacha]: Okay, so I'm just going to conclude

00:28:34.737 --> 00:28:37.361
that you do not make mistakes with your keyboard

00:28:37.401 --> 00:28:37.881
macros.

00:28:39.163 --> 00:28:41.626
[Omar]: I can easily undo

00:28:41.646 --> 00:28:43.869
them instead of having to keep running on undo.

00:28:43.889 --> 00:28:46.392
So it's not that I don't make mistakes, but that

00:28:46.493 --> 00:28:49.056
I try to fix them right after running the

00:28:49.096 --> 00:28:50.558
keyboard macro.

00:28:50.578 --> 00:28:51.519
[Sacha]: All right, all right.

00:28:52.360 --> 00:28:53.599
I had another question.

NOTE Cycling through Embark targets

00:28:53.600 --> 00:28:56.085
Ou've got a lot of different Embark maps and

00:28:56.165 --> 00:28:58.689
you've got a lot of different Embark targets.

00:29:00.291 --> 00:29:01.332
How do you handle

00:29:02.611 --> 00:29:04.835
going through the

00:29:04.895 --> 00:29:08.041
different ones that are at the

00:29:08.101 --> 00:29:09.984
point? At the moment, I've got

00:29:10.005 --> 00:29:12.649
the label at the top and I just flip

00:29:12.669 --> 00:29:14.753
through it. I know sometimes I need to

00:29:14.793 --> 00:29:16.897
hit it twice or sometimes I need to hit

00:29:16.937 --> 00:29:20.704
`embark-act` three times for this kind of thing.

00:29:20.684 --> 00:29:24.372
How do you

00:29:24.412 --> 00:29:25.935
distinguish between lots of them when you're just

00:29:25.956 --> 00:29:26.376
going through it?

00:29:26.797 --> 00:29:30.145
[Omar]: I think that's the poorest part of

00:29:30.185 --> 00:29:32.690
the user experience with `Embark Act` currently.

00:29:33.131 --> 00:29:36.278
I don't really like it, but I don't have a good

00:29:36.358 --> 00:29:38.102
alternative.

00:29:38.082 --> 00:29:42.490
A lot of people like `expand-region` and I don't

00:29:42.530 --> 00:29:44.434
like it because I feel like I have to hammer it

00:29:44.674 --> 00:29:45.976
off.

00:29:45.996 --> 00:29:48.962
I prefer to have a lot of… This is another thing

00:29:49.002 --> 00:29:50.945
I learned from Vim: have a lot of commands to

00:29:50.986 --> 00:29:54.091
mark specific things and just memorize all of

00:29:54.472 --> 00:29:54.572
them.

00:29:54.552 --> 00:29:56.975
But `expand-region` says, no, don't memorize

00:29:57.015 --> 00:29:57.175
that.

00:29:57.215 --> 00:30:00.278
Just hammer on `expand-region` until you get the

00:30:00.338 --> 00:30:00.819
thing you want.

00:30:00.859 --> 00:30:06.826
Ffor me, even though it's objectively fast, it

00:30:06.846 --> 00:30:08.668
just feels very slow.

00:30:08.688 --> 00:30:10.330
It feels like I have to hit it four times

00:30:10.490 --> 00:30:11.651
whenever I want to mark something.

00:30:12.051 --> 00:30:14.474
I get the same feeling from cycling in

00:30:14.534 --> 00:30:14.694
`embark-act`.

00:30:14.915 --> 00:30:16.056
I don't really like it.

00:30:16.136 --> 00:30:19.059
But if we had come up with a better alternative,

00:30:19.079 --> 00:30:21.322
and I say we because I discussed this in the

00:30:21.362 --> 00:30:22.483
GitHub issues with

00:30:22.463 --> 00:30:28.466
with Daniel Mendler and Prot, and I think @hmelman

00:30:28.506 --> 00:30:32.502
was also in those discussions, and maybe

00:30:32.582 --> 00:30:33.566
Clemens Radermacher?

00:30:36.622 --> 00:30:39.726
I just couldn't come up with a much better

00:30:39.786 --> 00:30:40.447
alternative,

00:30:40.467 --> 00:30:42.250
so I put up with it.

00:30:42.610 --> 00:30:44.273
I don't need to cycle that much.

00:30:44.373 --> 00:30:46.976
I almost always want to act on the first target.

00:30:46.996 --> 00:30:50.942
Which is unfair, because I decided what the first

00:30:50.982 --> 00:30:52.524
target is in the default configuration,

00:30:52.544 --> 00:30:55.288
so it's sort of tuned so that I hardly ever need

00:30:55.328 --> 00:30:55.768
to cycle.

00:30:55.869 --> 00:30:58.492
I apologize if it means other people need to

00:30:58.532 --> 00:30:59.153
cycle a lot.

00:30:59.453 --> 00:30:59.934
[Sacha]: Nonsense.

00:30:59.974 --> 00:31:01.818
We can all modify our target list,

00:31:02.500 --> 00:31:04.264
so we can always tune it to what we want.

00:31:05.045 --> 00:31:06.428
[Omar]: I mean, it's a lot of work, right?

00:31:06.949 --> 00:31:09.936
I think the default Embark configuration is over

00:31:10.036 --> 00:31:11.499
half of the source code of Embark.

00:31:13.083 --> 00:31:19.116
The configuration is... Where does that start?

00:31:19.653 --> 00:31:22.035
Oh, I wish the autoload cookies were not in the

00:31:22.115 --> 00:31:22.476
outline.

00:31:24.378 --> 00:31:29.062
[Sacha]: If you do a space, oh, I guess it

00:31:29.102 --> 00:31:30.143
doesn't do that, right?

00:31:30.163 --> 00:31:31.184
[Omar]: Oh, yeah.

00:31:31.204 --> 00:31:35.188
For orderless, I use

00:31:35.248 --> 00:31:39.839
the escapable spaces, so I can do that.

NOTE Imenu for navigation

00:31:39.840 --> 00:31:41.855
[Sacha]: I should also point out that your

00:31:41.935 --> 00:31:45.638
config uses a lot of imenu also, which was

00:31:45.698 --> 00:31:47.040
another interesting thing I picked up.

00:31:47.440 --> 00:31:49.542
[Omar]: Yeah, I like imenu, yeah.

00:31:49.522 --> 00:31:51.184
I should add imenu for this.

00:31:51.304 --> 00:31:54.348
One thing I did to imenu is I added a section for

00:31:54.388 --> 00:31:57.031
key maps.

00:31:57.051 --> 00:32:00.114
[Sacha]: I saw that.

00:32:00.274 --> 00:32:02.176
You have a regular expression so you can see it

00:32:02.257 --> 00:32:03.999
easily.

00:32:05.180 --> 00:32:05.540
[Omar]: Right.

00:32:10.106 --> 00:32:12.488
It's not half, but a big chunk of Embark is just

00:32:12.528 --> 00:32:14.010
the default configuration.

00:32:14.260 --> 00:32:17.996
It would be a lot of work to configure Embark

00:32:18.036 --> 00:32:18.619
from scratch.

00:32:18.699 --> 00:32:20.467
That's why the package comes with an extensive

00:32:20.527 --> 00:32:21.672
default configuration.

00:32:22.225 --> 00:32:24.367
[Sacha]: Charlie Baker says, “I have

00:32:24.407 --> 00:32:26.869
`embark-act` set up to expand in the same way

00:32:26.929 --> 00:32:28.991
`expand-region` does, but with Embark’s type awareness,

00:32:29.071 --> 00:32:30.553
it's easy to add a contract function.”

00:32:30.573 --> 00:32:32.935
I guess maybe also some highlighting helps

00:32:32.955 --> 00:32:33.355
with that.

00:32:34.336 --> 00:32:36.738
Charlie also says, “I also have a completing

00:32:36.778 --> 00:32:38.800
read interface in the transient menu to jump

00:32:38.860 --> 00:32:41.022
directly to one of the many types under point

00:32:41.062 --> 00:32:43.144
that I'm seeking.” Charlie, you're going to

00:32:43.184 --> 00:32:44.926
share somewhere so I can steal that part of your

00:32:44.966 --> 00:32:45.666
config, right?

00:32:47.248 --> 00:32:48.609
[Omar]: I mean, that would be something I

00:32:48.649 --> 00:32:51.912
would consider adding to Embark itself.

NOTE Collaboration

00:32:51.993 --> 00:32:54.556
[Sacha]: You mentioned having all these

00:32:54.596 --> 00:32:57.500
conversations with Daniel and others through

00:32:57.520 --> 00:32:59.242
GitHub and other things.

00:32:59.282 --> 00:33:02.986
I wanted to touch on that because I think in the

00:33:03.107 --> 00:33:07.312
Emacs community, it's pretty rare to find people

00:33:07.352 --> 00:33:09.574
who are collaborating on packages and packages

00:33:09.614 --> 00:33:10.896
that work so well together.

00:33:11.717 --> 00:33:15.822
The partnership between your packages and Daniel

00:33:15.862 --> 00:33:18.505
Mendler or Minad's packages with Consult and

00:33:18.545 --> 00:33:20.768
Vertico and Marginalia is

00:33:20.748 --> 00:33:23.657
really nice. We don't see a lot

00:33:23.677 --> 00:33:26.406
of examples of that kind of inter-packaged

00:33:26.486 --> 00:33:28.813
conversation as much.

00:33:28.894 --> 00:33:31.281
How did that start?

00:33:31.632 --> 00:33:33.536
[Omar]: I think it was mostly Daniel's

00:33:33.576 --> 00:33:33.977
initiative.

00:33:34.138 --> 00:33:39.570
I had started work on Orderless and

00:33:39.670 --> 00:33:42.797
Embark. I think his first package was

00:33:42.897 --> 00:33:45.463
Consult, maybe, of this family of packages.

00:33:48.189 --> 00:33:52.600
I remember Embark was a pretty sad shape when

00:33:52.601 --> 00:33:54.600
Daniel started raising issues

00:33:54.601 --> 00:33:58.800
on the Github. He really lit a fire under me

00:33:58.801 --> 00:34:01.800
to improve Embark.

00:34:01.801 --> 00:34:04.000
It started with him complaining about things

00:34:04.001 --> 00:34:06.967
in Embark, and I immediately realized that he

00:34:06.968 --> 00:34:08.367
was thinking very carefully about

00:34:08.368 --> 00:34:11.367
the user experience, so I thought

00:34:11.368 --> 00:34:13.033
he is full of good ideas

00:34:13.034 --> 00:34:14.194
and I should listen to them.

00:34:14.174 --> 00:34:16.742
Back then at the start of Embark and

00:34:16.782 --> 00:34:19.449
Orderless, Prot was also very involved in

00:34:19.550 --> 00:34:20.672
discussing the design.

00:34:20.954 --> 00:34:22.418
All of this is on GitHub issues.

00:34:23.360 --> 00:34:26.952
Some software archaeologists can find all of it.

00:34:27.539 --> 00:34:32.130
So I think we started working together when

00:34:32.190 --> 00:34:34.357
we realized we were both writing Marginalia,

00:34:34.657 --> 00:34:36.723
so we decided to merge those two packages into a

00:34:36.783 --> 00:34:37.224
single one.

00:34:37.906 --> 00:34:41.495
I think maybe the name Marginalia was

00:34:41.514 --> 00:34:42.317
suggested by Prot,

00:34:42.456 --> 00:34:44.282
I don't remember, but it's a very good name.

00:34:44.532 --> 00:34:50.559
The collaboration was completely unplanned.

00:34:51.040 --> 00:34:54.484
We just did it because we had already talked on

00:34:54.524 --> 00:34:58.069
the Embark issues and Daniel's suggestions

00:34:58.109 --> 00:35:02.194
improved Embark a great deal in a short amount of

00:35:02.214 --> 00:35:02.534
time.

00:35:03.155 --> 00:35:06.719
So then when we both realized we were writing

00:35:06.779 --> 00:35:08.842
something like Marginalia, we decided to just

00:35:08.922 --> 00:35:11.265
merge those two packages and write a single one.

00:35:11.245 --> 00:35:13.828
Since that worked out well, we kept on

00:35:13.868 --> 00:35:14.428
collaborating.

00:35:15.510 --> 00:35:19.233
So far, we haven't co-written any other package.

00:35:20.355 --> 00:35:23.358
One thing like that is that now Daniel is a

00:35:23.418 --> 00:35:25.881
co-maintainer of Orderless, which is great

00:35:25.961 --> 00:35:28.964
because Daniel is extremely efficient at fixing

00:35:29.044 --> 00:35:29.324
bugs.

00:35:29.464 --> 00:35:32.568
He does it instantly.

00:35:32.588 --> 00:35:36.272
He figures out what's wrong and has a patch in a

00:35:36.332 --> 00:35:38.674
few minutes after he looks at the issue.

00:35:38.714 --> 00:35:40.476
He looks at the issue

00:35:40.456 --> 00:35:42.339
the day it was posted or the day after.

00:35:42.459 --> 00:35:45.142
I can't do things that quickly.

00:35:45.263 --> 00:35:49.969
It's great that he's helping out with orderless.

00:35:50.409 --> 00:35:52.312
It wasn't planned.

00:35:52.472 --> 00:35:54.315
It just felt right from the very beginning.

00:35:54.415 --> 00:35:57.819
I immediately realized he had some great ideas

00:35:57.900 --> 00:35:59.942
and implemented a lot of them.

00:36:01.444 --> 00:36:03.968
Then we started doing that the other way around.

00:36:04.068 --> 00:36:06.712
I started commenting on a bunch of issues in

00:36:07.392 --> 00:36:09.315
Consult and Vertico.

00:36:09.852 --> 00:36:13.537
I think I exerted some pressure on Daniel to add

00:36:13.577 --> 00:36:17.021
features to Vertico, like the grid view and the

00:36:17.082 --> 00:36:17.923
horizontal view.

00:36:18.884 --> 00:36:21.207
Or maybe specifically the grid view, because at

00:36:21.227 --> 00:36:23.790
the time I was... I'm sort of slow to switch

00:36:24.031 --> 00:36:25.352
basic Emacs infrastructure.

00:36:25.713 --> 00:36:27.916
I wasn't using Vertico for a long time, even

00:36:27.936 --> 00:36:28.857
though I was like

00:36:28.837 --> 00:36:33.533
opining on the Github issues for Vertico,

00:36:33.534 --> 00:36:35.033
and the reason was that

00:36:35.034 --> 00:36:38.337
I was stuck with the vastly inferior `embark-live`.

00:36:38.858 --> 00:36:41.303
There was this `embark-live` thing where you could

00:36:41.864 --> 00:36:44.360
pop up a buffer with the targets in the

00:36:44.361 --> 00:36:46.514
minibuffer, which just means a completion candidate.

00:36:46.534 --> 00:36:49.360
So you could use Embark as a kind of

00:36:49.340 --> 00:36:52.224
completion user interface.

00:36:53.346 --> 00:36:57.172
It was very slow, but it was very featureful.

00:36:57.492 --> 00:37:00.317
You could do a vertical list.

00:37:00.357 --> 00:37:01.318
You could do a grid.

00:37:01.659 --> 00:37:04.182
In the list, you could activate zebra stripes.

00:37:05.284 --> 00:37:06.806
Yeah, you can see

00:37:07.668 --> 00:37:09.110
that's been removed from Embark.

00:37:09.511 --> 00:37:13.356
But I kept saying to Daniel, I'll switch to

00:37:13.477 --> 00:37:15.359
Vertico if you add a grid view.

00:37:15.660 --> 00:37:17.743
He eventually did add the grid view.

00:37:17.723 --> 00:37:20.346
I kept my word and switched to Vertico, which is much

00:37:20.406 --> 00:37:22.168
better than the thing in Embark.

00:37:22.228 --> 00:37:23.870
I was just being stubborn by not switching

00:37:23.950 --> 00:37:24.871
earlier.

00:37:24.891 --> 00:37:26.733
But if I had switched earlier, maybe Vertico

00:37:26.773 --> 00:37:28.916
wouldn't have a grid view.

00:37:29.677 --> 00:37:31.279
[Sacha]: I think it's definitely a good

00:37:31.339 --> 00:37:38.407
example of a set of packages that has... So all

00:37:38.427 --> 00:37:40.289
this started in about 2020s or so.

00:37:41.010 --> 00:37:45.655
So we actually can see how people have gotten into

00:37:45.955 --> 00:37:49.560
using Vertico and all the other packages compared

00:37:49.600 --> 00:37:52.304
to, say, looking at more popular packages that

00:37:52.344 --> 00:37:53.686
have been around for a long time.

00:37:53.726 --> 00:37:57.431
"Of course everyone's been using

00:37:57.531 --> 00:37:58.592
Org Mode for a long time."

00:37:58.632 --> 00:37:59.333
It's there.

00:37:59.373 --> 00:38:01.079
It's part of the fabric.

NOTE Technology adoption and Emacs packages

00:38:01.080 --> 00:38:02.638
It's very interesting to see the technology

00:38:02.658 --> 00:38:04.240
adoption around it.

00:38:04.280 --> 00:38:06.303
A lot of the things that people struggle with as

00:38:06.383 --> 00:38:08.386
package authors is getting other people to try

00:38:08.426 --> 00:38:11.490
out their stuff.

00:38:11.470 --> 00:38:14.837
With Orderless and Embark probably in the early

00:38:14.897 --> 00:38:18.203
days, what was that like to put this thing out

00:38:18.224 --> 00:38:21.410
there in the world and have people start to try

00:38:21.490 --> 00:38:22.733
it?

00:38:22.753 --> 00:38:23.995
How did people find it?

00:38:25.004 --> 00:38:27.989
[Omar]: I personally found it very scary.

00:38:28.791 --> 00:38:33.159
At the beginning, I still thought Embark was a

00:38:33.500 --> 00:38:35.884
part of my personal Emacs configuration that sort

00:38:35.924 --> 00:38:38.609
of grew out of control and I decided to publish

00:38:38.649 --> 00:38:39.090
separately.

00:38:40.272 --> 00:38:42.977
But then I have all these people telling me how

00:38:43.017 --> 00:38:45.582
to improve what I still thought of as part of my

00:38:45.642 --> 00:38:48.447
personal configuration.

00:38:48.427 --> 00:38:50.470
I think one thing that helped was that people

00:38:50.510 --> 00:38:51.391
made very good suggestions.

00:38:51.411 --> 00:38:53.714
So I realized, no, no, it's worth publishing

00:38:54.134 --> 00:38:56.397
reusable parts of your configuration just for the

00:38:56.677 --> 00:38:59.401
GitHub issues, just for people finding bugs and

00:38:59.441 --> 00:39:01.804
suggesting improvements and so on.

00:39:02.645 --> 00:39:07.511
But yeah, I had to adjust to having some users.

00:39:07.551 --> 00:39:09.013
At first, it was very few people.

00:39:10.235 --> 00:39:13.459
But then they got added to Doom.

00:39:13.499 --> 00:39:16.122
I think they were made the default in Doom.

00:39:16.237 --> 00:39:19.243
That was a huge influx of users.

00:39:19.283 --> 00:39:21.248
That was very scary.

00:39:21.508 --> 00:39:23.813
We were suddenly flooded with new bug reports,

00:39:23.933 --> 00:39:25.917
like all of the packages in the family.

00:39:26.038 --> 00:39:30.327
I remember feeling like there's a horde of Doom

00:39:30.447 --> 00:39:31.950
users running at us.

00:39:34.748 --> 00:39:35.749
[Sacha]: All right.

00:39:37.070 --> 00:39:38.832
So, starter kit, then everybody gets

00:39:38.892 --> 00:39:41.534
into it, and then everybody starts talking about

00:39:41.614 --> 00:39:42.835
it because they're like, yeah, you know, it's

00:39:42.875 --> 00:39:43.055
great.

00:39:43.075 --> 00:39:45.578
You can specify things out of order.

00:39:45.638 --> 00:39:47.540
You don't have to remember what words come in,

00:39:47.560 --> 00:39:49.081
which order when you're

00:39:49.121 --> 00:39:49.882
completing things.

00:39:50.542 --> 00:39:53.465
Those of us who aren't on starter kits are

00:39:53.485 --> 00:39:55.046
like, yes, we should try that too.

00:39:55.847 --> 00:39:57.589
That's how it's done.

00:39:57.609 --> 00:39:59.991
[Omar]: Doom helped a lot to raise

00:40:00.771 --> 00:40:06.099
awareness and adoption.

NOTE Personal packages and naming conventions

00:40:06.100 --> 00:40:09.479
[Sacha]: You've got a lot of other small packages.

00:40:10.040 --> 00:40:12.724
For something as small as block-undo, which you

00:40:12.764 --> 00:40:14.947
showed us, it really just fits in one screen.

00:40:14.967 --> 00:40:16.529
Is that something that you would set up as a

00:40:16.589 --> 00:40:19.233
different repository or just as a file within

00:40:19.253 --> 00:40:19.854
your current one?

00:40:19.874 --> 00:40:21.496
[Omar]: No, those are all in my `user-lisp`

00:40:21.616 --> 00:40:22.117
directory.

00:40:23.940 --> 00:40:25.382
[Sacha]: I have actually successfully used

00:40:25.562 --> 00:40:28.226
use package to grab stuff out of your `user-lisp`

00:40:28.246 --> 00:40:31.350
directory and use them in my config.

00:40:31.330 --> 00:40:32.211
Yeah,

00:40:32.231 --> 00:40:32.751
it works.

00:40:32.891 --> 00:40:35.934
I just say, all right, my `load path` is here where

00:40:35.954 --> 00:40:37.155
I've checked out your source code.

00:40:38.276 --> 00:40:40.899
It defines these commands. Then I can bind

00:40:40.979 --> 00:40:45.243
your functions to my shortcuts.

00:40:46.063 --> 00:40:50.467
Although, because your functions are named the

00:40:50.507 --> 00:40:55.151
way that I would expect Emacs functions to be

00:40:55.191 --> 00:40:57.634
named, I've been defaliasing them so that I don't

00:40:57.754 --> 00:40:59.635
accidentally say, oh yeah, that's totally built

00:40:59.736 --> 00:41:01.337
in when it isn't.

00:41:01.317 --> 00:41:05.481
[Omar]: Yeah, I'm inconsistent with these

00:41:05.521 --> 00:41:07.464
little packages in my `user-lisp` directory.

00:41:08.244 --> 00:41:10.747
In some of them, I do stick to the convention

00:41:10.807 --> 00:41:13.350
that the package name is a prefix for all the

00:41:13.390 --> 00:41:14.491
functions,

00:41:14.511 --> 00:41:15.272
and for some, I don't.

00:41:15.312 --> 00:41:17.795
For some, I just try to name them the way exactly

00:41:17.835 --> 00:41:18.215
what you said.

00:41:18.235 --> 00:41:19.857
Like, what would these be called if they were

00:41:19.897 --> 00:41:20.778
built into Emacs?

00:41:21.278 --> 00:41:23.521
Which means they don't share a consistent prefix

00:41:23.621 --> 00:41:23.861
often.

00:41:24.362 --> 00:41:27.125
I should probably make that more

00:41:27.225 --> 00:41:28.506
consistently

00:41:28.486 --> 00:41:31.131
use the package name as a prefix so that they're

00:41:31.371 --> 00:41:32.173
easier to dot.

00:41:33.014 --> 00:41:34.697
[Sacha]: Or I have another suggestion.

00:41:34.737 --> 00:41:39.105
You could get `apply-kmacro-to-paragraph` or

00:41:39.165 --> 00:41:41.589
whatever that is into core Emacs.

00:41:41.609 --> 00:41:42.651
That would be great for everyone.

00:41:44.254 --> 00:41:45.817
[Omar]: Yeah, maybe that one is useful

00:41:45.857 --> 00:41:47.760
enough.

00:41:48.263 --> 00:41:50.526
Some of these I don't use anymore because I think

00:41:50.546 --> 00:41:53.829
I've substituted them with workflows with Embark.

00:41:53.849 --> 00:41:55.771
For example, `eval-region-advice`.

00:41:55.791 --> 00:41:58.955
It bothered me that none of the evaluate commands

00:41:59.335 --> 00:42:02.299
are “do what you mean” in the most common sense in

00:42:02.359 --> 00:42:02.779
Emacs.

00:42:02.799 --> 00:42:04.942
The most common sense of do what I mean in Emacs

00:42:05.002 --> 00:42:07.104
is if the region is active, use the region.

00:42:07.144 --> 00:42:08.846
Otherwise, do the normal thing.

00:42:09.567 --> 00:42:11.529
All of the evaluate commands should evaluate

00:42:11.549 --> 00:42:12.791
the region if the region is active.

00:42:14.012 --> 00:42:16.735
So that's what this does.

00:42:16.715 --> 00:42:19.199
But I don't use that anymore, because to evaluate

00:42:19.259 --> 00:42:25.409
a region, I usually use `embark-act` `e`. What else

00:42:25.549 --> 00:42:26.499
is here?

NOTE
find-file-at-point and directory names
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-43-06-133.jpg
#+SCREENSHOT_TIME: 00:43:06.133

00:42:26.500 --> 00:42:28.574
Oh, some of these things are like tiny things

00:42:28.594 --> 00:42:31.379
that are almost invisible, like this.

00:42:32.441 --> 00:42:34.504
In Eshell buffers,

00:42:34.889 --> 00:42:39.778
By default, `find-file-at-point` doesn't realize

00:42:39.818 --> 00:42:45.107
that if it sees the filename printed in an `eshell`

00:42:45.147 --> 00:42:48.834
buffer, it won't look at the prompt to figure out

00:42:48.894 --> 00:42:50.076
what directory it came from.

00:42:50.296 --> 00:42:51.919
If you type `ls`

00:42:52.000 --> 00:42:54.764
and you're in your current working directory,

00:42:54.784 --> 00:42:58.409
all of those listed files, the `find-file-at-point`

00:42:58.469 --> 00:43:01.714
guesses that they are files in the default

00:43:01.754 --> 00:43:03.036
directory, and that guess is correct.

00:43:03.517 --> 00:43:06.100
But if, further above, you had gone into a

00:43:06.120 --> 00:43:08.724
different directory, called `ls` there,

00:43:09.165 --> 00:43:11.829
then those files are no longer in what is now the

00:43:11.889 --> 00:43:12.810
default directory.

00:43:12.790 --> 00:43:16.856
So this just adds a little bit of smarts to

00:43:16.916 --> 00:43:17.898
`find-file-at-point`.

00:43:18.038 --> 00:43:19.981
It looks at the prior prompt to see what

00:43:20.041 --> 00:43:23.567
directory that was run in, and then tries to see

00:43:23.627 --> 00:43:25.810
if the files it sees there are in that directory.

00:43:26.151 --> 00:43:28.114
Of course, the only reason I want this is

00:43:28.174 --> 00:43:31.279
because I sometimes use `embark-act` on files I see

00:43:31.319 --> 00:43:32.841
written in the Eshell buffer.

00:43:33.665 --> 00:43:34.207
[Sacha]: I love this.

00:43:34.608 --> 00:43:37.097
I love how all these little bits of code show

00:43:37.117 --> 00:43:40.288
that at some point you were annoyed by a tiny,

00:43:40.308 --> 00:43:42.555
tiny problem and you're like, that's it,

00:43:42.596 --> 00:43:43.980
I'm just going to write some code and it's never

00:43:44.000 --> 00:43:49.199
going to be a problem again.

NOTE The value of using Emacs’s APIs

00:43:49.200 --> 00:43:51.734
[Omar]: One thing I like about this is it

00:43:51.774 --> 00:43:57.300
also shows sticking to Emacs APIs.

00:43:57.320 --> 00:43:59.983
Embark uses `find-file-at-point` to guess what things

00:44:00.283 --> 00:44:01.865
are referred to files.

00:44:02.846 --> 00:44:05.589
I did this to improve the functionality of Embark

00:44:05.849 --> 00:44:08.312
in Eshell buffers, but what it really does is

00:44:08.392 --> 00:44:10.494
improve the functionality of `find-file-at-point`,

00:44:10.594 --> 00:44:11.996
which I hardly ever use directly.

00:44:12.056 --> 00:44:15.720
I almost always use it through Embark.

00:44:16.747 --> 00:44:21.778
[Sacha]: Send it upstream!

00:44:22.920 --> 00:44:26.809
Okay, so you use Emacs for working with a shell,

00:44:26.829 --> 00:44:29.515
working with your files, doing math, doing some

00:44:29.555 --> 00:44:30.537
programming as well.

00:44:31.038 --> 00:44:33.704
Are there unexpected things that you use Emacs

00:44:33.764 --> 00:44:34.165
for?

00:44:35.360 --> 00:44:37.203
[Omar]: I don't think so.

00:44:39.167 --> 00:44:39.948
Mostly I write.

00:44:40.549 --> 00:44:42.633
It's mostly writing prose.

00:44:42.653 --> 00:44:47.541
I think I was slightly misled about what a job in

00:44:47.601 --> 00:44:48.343
academia is like.

00:44:48.583 --> 00:44:49.805
I mostly write emails.

00:44:49.825 --> 00:44:56.839
That's the bulk of my job by the time consumed.

NOTE
org-ql and usual files
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-45-18-667.jpg
#+SCREENSHOT_TIME: 00:45:18.667

00:44:56.840 --> 00:44:58.175
[Sacha]: You have some shortcuts around

00:44:59.217 --> 00:45:02.081
org-ql for managing your agenda or other things.

00:45:02.101 --> 00:45:07.029
[Omar]: This notion of the usual files.

00:45:07.189 --> 00:45:11.295
I was often using org-ql to search this set of

00:45:11.335 --> 00:45:11.635
files:

00:45:12.196 --> 00:45:15.661
every file mentioned in a refile target,

00:45:15.681 --> 00:45:17.564
every file mentioned in a capture template,

00:45:18.666 --> 00:45:23.473
and every file agenda file.

00:45:24.297 --> 00:45:24.978
Here it is.

00:45:25.739 --> 00:45:27.582
So I thought that's what I want to search.

00:45:27.622 --> 00:45:29.485
I want to search every file I mentioned in a

00:45:29.525 --> 00:45:33.310
refile target, every agenda file, and every file

00:45:33.350 --> 00:45:35.193
that I mentioned in some template.

00:45:36.054 --> 00:45:37.376
That's what this does.

00:45:38.618 --> 00:45:40.281
[Sacha]: I don't know if you trust your

00:45:42.244 --> 00:45:44.908
hiding things enough for us to try that.

00:45:45.248 --> 00:45:46.810
Since you put so much work into it...

00:45:47.311 --> 00:45:49.434
Or do you want me to hide the screen first and

00:45:49.454 --> 00:45:51.317
then you can let me know when it's safe to look?

00:45:51.449 --> 00:45:52.191
[Omar]: No, no, that's fine.

00:45:52.571 --> 00:45:54.696
I can show you the censorship process.

00:45:54.716 --> 00:45:56.820
What I thought I would do is I could show you

00:45:57.441 --> 00:46:00.267
the... Wait, what is this?

00:46:00.287 --> 00:46:01.350
Why is that not an action?

00:46:01.470 --> 00:46:02.031
Oh, library.

00:46:03.454 --> 00:46:04.797
Oh, I have not loaded this.

00:46:07.603 --> 00:46:08.725
Yes, now it's loaded.

00:46:09.126 --> 00:46:11.230
Oh, so this should be...

00:46:12.188 --> 00:46:16.072
Why is this not recognizing org-ql usual files as

00:46:16.092 --> 00:46:17.654
a variable now that this is loaded?

00:46:18.775 --> 00:46:19.115
[Sacha]: Oh, great.

00:46:19.656 --> 00:46:22.319
I'm also open to debugging demonstrations live

00:46:22.399 --> 00:46:24.922
because that is something that a lot of people do.

00:46:24.942 --> 00:46:26.143
[Omar]: Sorry, I think it just hadn't

00:46:26.203 --> 00:46:27.945
loaded this file.

00:46:27.965 --> 00:46:29.667
Now I ran a command from here and now I

00:46:29.707 --> 00:46:30.508
should have a variable.

00:46:30.528 --> 00:46:31.649
Yes, I have a variable.

00:46:32.089 --> 00:46:33.451
So we can go to Customize.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-46-33-967.jpg
#+SCREENSHOT_TIME: 00:46:33.967

00:46:33.971 --> 00:46:35.953
The ones that have sensitive information are

00:46:36.014 --> 00:46:40.238
tasks, home, health,

00:46:41.467 --> 00:46:42.208
Definitely work.

00:46:44.011 --> 00:46:44.933
Journal.

00:46:44.953 --> 00:46:46.536
I don't really mind people seeing my journal, but

00:46:46.596 --> 00:46:47.117
that's boring.

00:46:48.179 --> 00:46:48.600
There we go.

00:46:48.940 --> 00:46:49.461
Yeah.

00:46:49.561 --> 00:46:53.889
So now I got rid of all of the sensitive files.

00:46:53.949 --> 00:46:55.492
And so now I can show you.

00:46:56.013 --> 00:46:57.836
I usually just search through all of these files

00:46:57.896 --> 00:46:58.176
at once.

00:47:01.182 --> 00:47:03.606
So I had a list of things I wanted to tell you

00:47:03.646 --> 00:47:06.259
about.

NOTE Shortcuts for org-ql search syntax

00:47:06.260 --> 00:47:07.596
[Sacha]: I should also point out that your

00:47:07.656 --> 00:47:10.780
config has some stuff for inserting things into

00:47:10.920 --> 00:47:13.623
the org-ql search syntax.

00:47:13.643 --> 00:47:15.185
[Omar]: You're extremely prepared for this

00:47:15.665 --> 00:47:15.946
chat.

00:47:16.246 --> 00:47:21.512
Yes, `C-,`has a little key map that will

00:47:21.572 --> 00:47:23.315
insert stuff like priority.

00:47:25.417 --> 00:47:27.960
Oh, I don't have, let me remove “Sacha”.

00:47:28.092 --> 00:47:30.497
Oh, yes, everything that I have with priorities

00:47:30.557 --> 00:47:31.840
is in one of the files I removed.

00:47:31.900 --> 00:47:34.085
I only use priorities for work.

00:47:34.105 --> 00:47:34.827
[Sacha]: Okay, gotcha.

00:47:35.729 --> 00:47:43.399
[Omar]: We could use to-dos.

NOTE
Org TODO states: TODO, WAIT, DONE, NOPE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-47-45-733.jpg
#+SCREENSHOT_TIME: 00:47:45.733

00:47:43.400 --> 00:47:45.651
[Sacha]: I love that you have a to-do state

00:47:45.711 --> 00:47:46.793
called NOPE.

00:47:47.667 --> 00:47:49.009
[Omar]: It's for things that are

00:47:49.049 --> 00:47:51.152
cancelled, but I don't want to delete them yet.

00:47:51.673 --> 00:47:55.038
Actually, it's mainly there because when I

00:47:55.219 --> 00:47:57.402
archive them, I want to know that I had that task

00:47:57.442 --> 00:47:59.786
at some point, but decided not to do it.

00:47:59.806 --> 00:48:01.769
[Sacha]: Well, it's so much less verbose than CANCELLED,

00:48:01.949 --> 00:48:03.979
so I think I might actually just...

00:48:03.980 --> 00:48:10.302
[Omar]: For a long time, I was using monospace fonts, so I wanted to

00:48:10.542 --> 00:48:12.445
have everything fit in four letters.

00:48:13.106 --> 00:48:14.248
So I have...

00:48:14.515 --> 00:48:18.994
Yeah, all of my, I have TODO, WAIT, DONE, NOPE,

00:48:19.255 --> 00:48:20.560
and they're all four letters long.

00:48:21.653 --> 00:48:22.414
[Sacha]: Nope.

00:48:22.434 --> 00:48:22.854
Gotcha.

00:48:22.974 --> 00:48:23.214
Okay.

00:48:23.234 --> 00:48:26.459
So that's org-ql and that's your inserting thingy.

NOTE
The inserter macro
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-48-36-667.jpg
#+SCREENSHOT_TIME: 00:48:36.667

00:48:26.460 --> 00:48:28.199
The other thing that I wanted to point out

00:48:28.219 --> 00:48:30.221
that your definition of the inserter was nice

00:48:30.241 --> 00:48:31.142
because it's a macro.

00:48:31.182 --> 00:48:33.043
So you have this thing that allows you to

00:48:33.063 --> 00:48:36.466
just define all these interactive functions.

00:48:36.506 --> 00:48:38.408
You can add it to the key map because

00:48:38.428 --> 00:48:40.370
the key map expects interactive functions.

00:48:41.010 --> 00:48:43.092
If people are watching, yeah, this is

00:48:43.132 --> 00:48:43.733
something you can do.

00:48:43.753 --> 00:48:47.356
[Omar]: I should tell you that there was

00:48:47.696 --> 00:48:49.878
actually a serious performance bug previously.

00:48:49.918 --> 00:48:51.660
What I had before this…

00:48:51.640 --> 00:48:56.190
This string is a keyboard macro that inserts

00:48:56.651 --> 00:48:57.513
those letters.

00:48:58.996 --> 00:49:01.281
It is extremely slow if you do it that way for

00:49:01.321 --> 00:49:01.822
some reason.

00:49:01.942 --> 00:49:05.490
I think org-ql searches after the T, after the O,

00:49:05.590 --> 00:49:07.995
after the D, after the O, after the colon.

00:49:08.212 --> 00:49:10.876
For some reason, that was extremely slow.

00:49:11.297 --> 00:49:16.265
So I switched to these lambdas that just call

00:49:16.365 --> 00:49:16.805
insert.

00:49:17.126 --> 00:49:20.351
That does it in a single step, and it's

00:49:20.391 --> 00:49:21.012
instantaneous.

00:49:21.613 --> 00:49:23.937
But my first instinct was, oh, well, this is a

00:49:23.977 --> 00:49:25.099
good use of keyboard macros.

00:49:25.119 --> 00:49:26.881
I'll just assign these to keyboard macros.

00:49:27.082 --> 00:49:29.445
It's not a good idea in this

00:49:29.505 --> 00:49:30.227
particular case.

00:49:32.798 --> 00:49:34.761
[Sacha]: I imagine there should be some kind

00:49:34.801 --> 00:49:37.525
of debouncing on org-ql to make it not do that if

00:49:37.545 --> 00:49:40.450
you're typing very quickly, but... I don't think

00:49:40.490 --> 00:49:40.810
there is.

00:49:40.890 --> 00:49:43.054
[Omar]: Let me see if... Maybe also do a

00:49:43.094 --> 00:49:43.995
longer one so it...

00:49:46.779 --> 00:49:47.340
[Sacha]: That's okay.

00:49:47.360 --> 00:49:49.804
I take your word for the bug that you ran into.

00:49:51.467 --> 00:49:52.769
[Omar]: I wanted to show you just because

00:49:52.789 --> 00:49:55.813
it just feels like a really long pause, but it

00:49:55.853 --> 00:49:57.416
didn't work right now and I don't know why not.

00:49:58.077 --> 00:49:58.838
That's okay.

00:49:59.259 --> 00:50:00.240
[Sacha]: Curse of the live demo.

00:50:03.157 --> 00:50:04.218
So that's inserter.

NOTE
luggage: generative art experiments
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-51-32-367.jpg
#+SCREENSHOT_TIME: 00:51:32.367

00:50:05.760 --> 00:50:07.302
One thing that I definitely want to make sure we

00:50:07.342 --> 00:50:11.547
had time for was your little generative art

00:50:11.607 --> 00:50:13.089
experiment, `luggage`,

00:50:14.150 --> 00:50:15.412
because you're having fun with Emacs.

00:50:17.114 --> 00:50:17.394
[Omar]: Yes.

00:50:17.654 --> 00:50:18.155
Yeah.

00:50:18.876 --> 00:50:22.180
There are some people doing amazing generative...

00:50:22.200 --> 00:50:22.640
Oh my gosh.

00:50:22.780 --> 00:50:24.202
I do not even have it installed.

00:50:25.083 --> 00:50:25.323
Yeah.

00:50:27.246 --> 00:50:28.287
Let's...

00:50:29.060 --> 00:50:31.424
I forgot that we were going to do that.

00:50:31.945 --> 00:50:32.365
That's okay.

00:50:32.506 --> 00:50:33.487
But it should be easy.

00:50:34.449 --> 00:50:35.611
How is `:vc` used?

00:50:36.332 --> 00:50:37.234
[Sacha]: `(:vc (:url …))`.

00:50:39.237 --> 00:50:41.380
[Omar]: I have to go to a previous example

00:50:41.421 --> 00:50:41.921
to figure out.

00:50:44.265 --> 00:50:45.888
[Sacha]: I'm surprised you don't have a

00:50:45.948 --> 00:50:48.492
`consult-line` and then just `embark-insert`.

00:50:49.494 --> 00:50:50.395
[Omar]: I do that.

00:50:50.436 --> 00:50:52.098
I do that a lot.

00:50:52.118 --> 00:50:53.160
But I forgot this time.

00:50:53.258 --> 00:50:55.081
[Sacha]: Actually, looking at your config, I

00:50:55.141 --> 00:50:57.605
learned about `consult-multi-occur` because

00:50:58.447 --> 00:51:01.171
apparently there all these multi-buffer equivalents to

00:51:01.192 --> 00:51:02.494
the commands that I've been using.

00:51:03.015 --> 00:51:05.739
That is really useful for using stuff

00:51:05.779 --> 00:51:07.502
from buffers I'm not even looking at.

00:51:10.808 --> 00:51:11.529
[Omar]: Okay, load it.

00:51:12.531 --> 00:51:13.653
[Sacha]: Let's see if it actually can still

00:51:13.693 --> 00:51:14.514
do the thing.

00:51:16.417 --> 00:51:17.359
There we go.

00:51:19.533 --> 00:51:23.258
So you have some Emacs Lisp to generate this SVG.

00:51:24.119 --> 00:51:26.482
Yeah, and it's just got...

00:51:27.123 --> 00:51:29.005
[Omar]: And which other ones do I have?

00:51:30.627 --> 00:51:31.048
Luggage.

00:51:31.108 --> 00:51:31.609
There we go.

00:51:32.750 --> 00:51:34.172
Tubes.

00:51:38.998 --> 00:51:42.783
I think this one has some nice

00:51:42.903 --> 00:51:46.688
other color schemes.

00:51:48.743 --> 00:51:49.729
Classic?

00:51:50.212 --> 00:51:51.620
Classic is the one.

00:51:51.942 --> 00:51:55.463
Oh yeah, stained glasses is the one I wanted.

00:51:58.227 --> 00:51:59.589
[Sacha]: Nice.

00:52:00.791 --> 00:52:02.694
I wanted to mention it specifically because a

00:52:02.734 --> 00:52:05.218
lot of times people think, oh, Emacs is a text

00:52:05.318 --> 00:52:06.340
editor.

00:52:06.360 --> 00:52:09.024
But because it's also got support for SVG and

00:52:09.064 --> 00:52:11.307
other types of graphics, you can play around with

00:52:11.387 --> 00:52:11.488
it.

00:52:11.528 --> 00:52:13.551
Sometimes it's just doing it for fun like

00:52:13.591 --> 00:52:15.934
this, but also there might be some other

00:52:15.975 --> 00:52:18.879
visualizations that you can do with Emacs.

00:52:18.899 --> 00:52:21.643
That is actually pretty interesting.

00:52:21.663 --> 00:52:21.884
[Omar]: Yeah.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-52-26-800.jpg
#+SCREENSHOT_TIME: 00:52:26.800

00:52:21.904 --> 00:52:23.686
Have you heard of this program?

00:52:25.109 --> 00:52:26.631
[Sacha]: No, I haven't come across it.

00:52:26.797 --> 00:52:28.419
[Omar]: There's an entire book with this title.

00:52:28.699 --> 00:52:30.882
So it's a single line of BASIC.

00:52:30.902 --> 00:52:34.086
10 print.

00:52:34.106 --> 00:52:36.469
Oh, I'm not, I don't know BASIC, but the idea is

00:52:36.509 --> 00:52:39.973
like you randomly pick either forward slash or

00:52:40.073 --> 00:52:40.634
backslash.

00:52:41.374 --> 00:52:42.816
[Sacha]: Oh, yeah, yeah, that makes sense

00:52:42.936 --> 00:52:43.076
now.

00:52:45.319 --> 00:52:47.782
[Omar]: I'm sure this is not correct BASIC,

00:52:48.143 --> 00:52:49.024
but, you know, something like that.

00:52:49.064 --> 00:52:51.066
Yeah, I get the idea.

00:52:51.518 --> 00:52:52.520
Yeah.

00:52:52.720 --> 00:52:54.022
And that's what this does.

00:52:54.062 --> 00:52:54.663
And then you GOTO 10.

00:52:54.683 --> 00:52:55.544
It's like...

00:52:57.047 --> 00:52:59.290
It makes these elaborate mazes.

00:52:59.431 --> 00:53:01.173
It's an extremely simple program.

00:53:01.895 --> 00:53:03.137
[Sacha]: So this is the kind of stuff you do

00:53:03.177 --> 00:53:03.557
for fun.

00:53:04.178 --> 00:53:05.941
I mean, you probably do lots of other things for

00:53:05.981 --> 00:53:06.382
fun, too.

00:53:07.784 --> 00:53:08.205
[Omar]: Yeah.

00:53:08.225 --> 00:53:12.311
But this... No, that's not the buffer I wanted.

00:53:12.331 --> 00:53:13.914
Where is... Did I kill it?

00:53:14.034 --> 00:53:15.957
I killed it.

00:53:17.692 --> 00:53:20.261
Yeah, one of these I did.

00:53:20.723 --> 00:53:21.205
What is it?

00:53:21.225 --> 00:53:21.707
Dominoes.

00:53:21.727 --> 00:53:23.794
Yeah, this I did for a math talk I gave.

00:53:24.156 --> 00:53:26.725
It just produces random domino tilings of the

00:53:26.785 --> 00:53:28.090
board.

00:53:28.829 --> 00:53:33.737
I gave that talk from an Org file using Prot’s

00:53:35.420 --> 00:53:36.242
Logos package.

00:53:36.963 --> 00:53:40.950
I usually use PDF slides, but

00:53:40.990 --> 00:53:42.813
that time I wanted to use an Org mode buffer

00:53:42.833 --> 00:53:44.636
because I was going to run code on the computer.

00:53:45.237 --> 00:53:48.002
Like this, for example, generating random domino

00:53:48.022 --> 00:53:48.863
tilings.

NOTE Teaching and Emacs

00:53:49.383 --> 00:53:50.805
[Sacha]: So you've given a number of talks.

00:53:50.866 --> 00:53:52.168
Do you also teach any courses?

00:53:53.310 --> 00:53:57.757
[Omar]: Yeah, I do teach both undergraduate

00:53:57.797 --> 00:53:59.841
and graduate math courses.

00:54:00.001 --> 00:54:01.684
Recently, mostly graduate math courses.

00:54:02.265 --> 00:54:04.349
But yeah, I really like teaching.

00:54:04.509 --> 00:54:05.631
You always learn something.

00:54:05.671 --> 00:54:07.534
Even the subjects that you think you know very

00:54:07.574 --> 00:54:09.838
well, teaching a course always teaches you

00:54:09.958 --> 00:54:10.459
something new.

00:54:11.801 --> 00:54:13.905
[Sacha]: Have you gotten students into Emacs?

00:54:14.982 --> 00:54:16.366
[Omar]: No, I don't even try.

00:54:16.606 --> 00:54:20.698
“I use this weird text editor Emacs, it's

00:54:20.818 --> 00:54:22.763
pretty cool, but it takes a while to learn.

00:54:23.205 --> 00:54:24.909
I'm not recommending it.

00:54:25.651 --> 00:54:26.112
I love it.

00:54:26.253 --> 00:54:28.519
If you do try to use it, you can ask me anything.”

00:54:30.473 --> 00:54:32.656
[Sacha]: Yeah, it's pretty hard.

00:54:32.716 --> 00:54:35.100
I know some professors are like, okay, this is

00:54:35.140 --> 00:54:37.183
what we're going to use for the course.

00:54:37.243 --> 00:54:39.627
But I imagine, depending on your subject matter,

00:54:39.667 --> 00:54:41.369
you might already have your hands full teaching

00:54:41.389 --> 00:54:43.332
the subject matter rather than adding it.

00:54:43.352 --> 00:54:44.213
[Omar]: Oh, yeah, yeah, definitely.

00:54:44.293 --> 00:54:44.614
No, no.

00:54:45.315 --> 00:54:47.478
The students I try to talk to Emacs about are

00:54:47.498 --> 00:54:49.601
like the students that are writing their thesis

00:54:49.641 --> 00:54:51.064
with me.

00:54:51.084 --> 00:54:52.065
No, never in a course.

00:54:52.185 --> 00:54:52.906
I never mention it.

NOTE
The print10 generator
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-54-56-900.jpg
#+SCREENSHOT_TIME: 00:54:56.900

00:54:53.187 --> 00:54:53.888
Oh, there it is.

00:54:53.968 --> 00:54:56.812
In the docstring, I have the correct program in

00:54:56.872 --> 00:54:57.493
BASIC.

00:54:58.385 --> 00:55:02.453
The backslash and the forward slash are

00:55:02.553 --> 00:55:04.096
consecutive ASCII characters.

00:55:04.176 --> 00:55:10.467
206 and 207.

00:55:11.008 --> 00:55:14.415
You add a random number between 0 and 1 to

00:55:14.455 --> 00:55:16.258
this one and then round to the nearest integer.

00:55:16.508 --> 00:55:18.631
[Sacha]: All right.

00:55:18.751 --> 00:55:20.874
You can get surprisingly interesting patterns

00:55:20.994 --> 00:55:21.455
out of it.

00:55:22.997 --> 00:55:25.381
That is also very cool.

00:55:26.282 --> 00:55:27.884
Fun with Emacs.

00:55:28.485 --> 00:55:31.670
This could definitely be like a zone screensaver

00:55:32.331 --> 00:55:33.212
if you wanted to.

00:55:34.474 --> 00:55:34.975
[Omar]: Yeah.

00:55:35.295 --> 00:55:38.219
I just thought it was really nice that Emacs

00:55:38.279 --> 00:55:39.641
displays SVGs natively.

00:55:39.661 --> 00:55:42.145
Those are very easy to generate by text.

00:55:42.547 --> 00:55:46.311
[Sacha]: Are there other interesting corners

00:55:46.411 --> 00:55:49.014
of your config that might not be immediately

00:55:49.134 --> 00:55:50.936
obvious to people who are just reading the source

00:55:50.996 --> 00:55:51.957
code?

00:55:51.977 --> 00:55:53.859
What other workflow things are nice for you?

00:55:59.264 --> 00:56:02.828
[Omar]: Sorry, what were you saying?

00:56:02.908 --> 00:56:05.551
[Sacha]: I can also start just occurring

00:56:05.591 --> 00:56:08.474
through my config for all the things that I've

00:56:08.534 --> 00:56:11.457
stolen from your config in the last two days.

00:56:12.095 --> 00:56:17.804
[Omar]: I don't think I have any concrete

00:56:17.864 --> 00:56:20.428
idea of what to show now.

00:56:20.448 --> 00:56:23.599
I think we've covered most of the ones I wanted.

NOTE
arXiv
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-57-42-967.jpg
#+SCREENSHOT_TIME: 00:57:42.967

00:56:23.600 --> 00:56:26.598
As an academic, I deal a lot with preprints on

00:56:26.618 --> 00:56:28.681
the arXiv, so I have a little library that will

00:56:30.584 --> 00:56:33.208
show me the PDF or copy the URL.

00:56:33.661 --> 00:56:38.387
I like personalized software because it does

00:56:38.447 --> 00:56:39.769
exactly what you needed to do.

00:56:40.229 --> 00:56:42.693
I noticed that there were a bunch of tags on

00:56:42.773 --> 00:56:46.438
Mastodon that related to archive papers.

00:56:46.738 --> 00:56:49.782
Often when I was in a Mastodon buffer, I wanted to

00:56:50.122 --> 00:56:52.846
do something to the paper mentioned at point.

00:56:53.166 --> 00:56:54.888
That's one of the acceptable inputs for my

00:56:55.709 --> 00:57:10.419
arXiv library.

00:57:10.420 --> 00:57:12.843
So, for example, this is an arXiv link and I

00:57:12.883 --> 00:57:36.419
can ask it to show me.

00:57:36.420 --> 00:57:37.258
So that's a bug.

00:57:37.298 --> 00:57:40.742
This should definitely have `visual-line-mode`

00:57:41.003 --> 00:57:41.303
activated.

00:57:42.965 --> 00:57:45.348
I can just quickly read the

00:57:45.449 --> 00:57:47.832
abstract without visiting the archive website.

NOTE
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-57-51-200.jpg
#+SCREENSHOT_TIME: 00:57:51.200

00:57:48.793 --> 00:57:52.798
Or I can open the PDF.

00:57:53.158 --> 00:57:53.699
[Sacha]: Very cool.

00:57:53.939 --> 00:57:54.821
Very convenient.

00:57:57.850 --> 00:57:58.833
[Omar]: Yeah, so.

00:58:00.162 --> 00:58:01.864
I like that in Emacs you can do all these

00:58:02.224 --> 00:58:04.446
personal things that you'll need but are not

00:58:04.506 --> 00:58:06.708
likely to be needed by many people.

00:58:06.768 --> 00:58:08.269
They're just easy to do.

00:58:08.430 --> 00:58:11.212
Vim is also very configurable, but the Vim script

00:58:11.252 --> 00:58:14.655
language is sort of awkward, so I never did

00:58:15.156 --> 00:58:17.198
anywhere close to the amount of configuration in

00:58:17.558 --> 00:58:18.719
Vim that I do in Emacs.

00:58:23.263 --> 00:58:25.665
That's why I would never

00:58:25.726 --> 00:58:26.526
go back to Vim now.

00:58:26.546 --> 00:58:28.448
I would miss all the stuff I've written.

NOTE
Toggle keymap
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-00-59-06-133.jpg
#+SCREENSHOT_TIME: 00:59:06.133

00:58:29.103 --> 00:58:30.727
[Sacha]: One of the little personal

00:58:30.767 --> 00:58:33.234
customizations that I liked reading in your config

00:58:33.294 --> 00:58:35.179
was the fact that you have a key map just for

00:58:35.239 --> 00:58:38.527
toggling various things like the mode line or the

00:58:38.607 --> 00:58:39.149
header, you know?

00:58:39.449 --> 00:58:39.690
Yeah.

00:58:39.710 --> 00:58:43.660
You want to tell us more about your awesome

00:58:43.720 --> 00:58:45.525
key map for that?

00:58:46.163 --> 00:58:50.210
[Omar]: You don't need them that often, so

00:58:50.270 --> 00:58:52.253
it's OK if it's under a long prefix.

00:58:52.613 --> 00:58:54.416
It's just tedious when you want one of them,

00:58:54.456 --> 00:58:56.319
to have to type the command name.

00:58:56.900 --> 00:59:01.708
It also helps me remember which things I

00:59:01.888 --> 00:59:02.730
commonly toggle.

00:59:02.790 --> 00:59:06.015
I often have to hit `C-h` here and see what I

00:59:06.075 --> 00:59:08.264
have available to toggle.

00:59:09.625 --> 00:59:15.070
I don't know why toggle is a category for

00:59:15.371 --> 00:59:17.032
commands, because obviously these are very

00:59:17.132 --> 00:59:19.114
disparate commands that do very different things.

00:59:19.134 --> 00:59:21.556
But they're things that you occasionally turn on

00:59:21.617 --> 00:59:24.499
or off, and it's convenient to have them all

00:59:24.519 --> 00:59:24.840
together.

00:59:25.320 --> 00:59:27.762
Choosing the letters here was very difficult.

00:59:28.743 --> 00:59:30.445
Everybody wanted to have the same letters.

00:59:31.566 --> 00:59:33.788
L was for visual lines.

00:59:33.768 --> 00:59:37.772
P for variable pitch mode because I think of them

00:59:37.832 --> 00:59:38.873
as proportional fonts.

00:59:40.594 --> 00:59:41.996
It took a lot of tweaking.

00:59:42.016 --> 00:59:45.859
I'm sure if I looked through the GitHub history,

00:59:45.879 --> 00:59:48.782
you'd see a lot of tiny changes just changing the

00:59:48.822 --> 00:59:51.645
binding of one of these.

00:59:51.665 --> 00:59:53.547
[Sacha]: I find it difficult to get the hang

00:59:53.587 --> 00:59:56.109
of new key bindings, especially for things that

00:59:56.129 --> 00:59:58.351
I'm not using often enough for the key bindings

00:59:58.391 --> 00:59:59.833
to stick.

00:59:59.953 --> 01:00:01.294
[Omar]: I often forget that I have a key

01:00:01.334 --> 01:00:02.475
binding for something.

01:00:03.687 --> 01:00:05.009
[Sacha]: So how do you deal with that?

01:00:05.129 --> 01:00:07.072
I mean, yes, you stick it in an Embark keymap and

01:00:07.092 --> 01:00:08.455
you just bring it up to the target.

01:00:09.637 --> 01:00:16.247
[Omar]: Yeah, I do use Embark bindings in

01:00:16.267 --> 01:00:20.093
keymap a lot to just explore keymaps and remind

01:00:20.134 --> 01:00:23.379
myself. I don't need to memorize a

01:00:23.419 --> 01:00:23.699
binding.

01:00:23.719 --> 01:00:25.743
I just need to remember that I have a binding.

01:00:26.464 --> 01:00:28.247
If I have a binding, I can find it later.

01:00:28.307 --> 01:00:29.809
But sometimes I don't remember that I have a

01:00:29.849 --> 01:00:31.011
binding,

01:00:31.413 --> 01:00:35.740
so when I'm looking at my configuration, I'll

01:00:35.760 --> 01:00:38.385
just re-scan what things I have bound from time

01:00:38.425 --> 01:00:38.725
to time.

01:00:39.347 --> 01:00:44.095
Mostly I stick with just… I know under

01:00:44.195 --> 01:00:47.601
what the start of the prefix is, and then I'll

01:00:47.621 --> 01:00:49.804
just use Embark to remind me of what I have there.

01:00:50.485 --> 01:00:53.691
Which is nice, because you can also see the docstrings.

NOTE
isearch-delete-wrong
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-01-01-32-267.jpg
#+SCREENSHOT_TIME: 01:01:32.267

01:00:54.970 --> 01:00:58.619
[Sacha]: I like how you try to use some

01:00:58.819 --> 01:01:01.345
of the conventions to make it somewhat easier to

01:01:01.385 --> 01:01:01.766
remember.

01:01:02.127 --> 01:01:04.011
One of the key bindings that you have that I

01:01:04.071 --> 01:01:06.317
want to point out, because I think it's a useful

01:01:06.397 --> 01:01:09.424
technique, is you have an `isearch-delete-wrong`.

01:01:11.048 --> 01:01:16.078
[Omar]: Right.

01:01:16.919 --> 01:01:21.745
isearch keeps track of where the last portion

01:01:21.805 --> 01:01:23.888
of the search string that matched is.

01:01:24.368 --> 01:01:26.611
You can see it highlighted in the buffer,

01:01:26.631 --> 01:01:26.831
right?

01:01:27.452 --> 01:01:31.838
So this means it found up to “del”, and then it

01:01:31.898 --> 01:01:33.620
didn't find "tok".

01:01:33.640 --> 01:01:35.762
`isearch-delete-wrong` will just delete that entire

01:01:35.802 --> 01:01:36.283
part.

01:01:38.474 --> 01:01:40.076
[Sacha]: So that way, you can just

01:01:40.156 --> 01:01:42.378
restart from what actually exists.

01:01:42.959 --> 01:01:45.222
Combining that with the fact that you've got

01:01:45.262 --> 01:01:50.608
your search whitespace regular expression to be a

01:01:50.728 --> 01:01:52.239
wildcard means you can...

01:01:52.240 --> 01:01:54.032
[Omar]: Oh yes, this I stole from Prot.

01:01:54.692 --> 01:01:56.434
He recommends this.

01:01:56.454 --> 01:01:58.437
[Sacha]: Yeah, which means you can use

01:01:58.477 --> 01:02:00.439
isearch to find things, even if there's other

01:02:00.479 --> 01:02:01.400
stuff in between them.

01:02:01.720 --> 01:02:03.382
When you can't find something, you can

01:02:03.402 --> 01:02:03.823
restart.

01:02:04.884 --> 01:02:05.865
[Omar]: I'm not sure...

01:02:06.183 --> 01:02:09.588
I'm not sure if this is the best setting.

01:02:09.689 --> 01:02:13.294
I want to be able to search this way sometimes,

01:02:13.354 --> 01:02:16.279
and sometimes with whitespaces treated literally,

01:02:16.499 --> 01:02:18.603
so I should keep statistics on how often I

01:02:18.663 --> 01:02:19.745
actually have to turn this off.

01:02:19.785 --> 01:02:21.908
It might be that for me the better default is the

01:02:21.948 --> 01:02:22.589
other way around.

01:02:25.133 --> 01:02:27.437
You can turn it off with `M-s SPC`.

01:02:27.898 --> 01:02:29.620
Match spaces literally.

01:02:31.023 --> 01:02:33.827
`isearch-toggle-lax-whitespace`.

01:02:34.870 --> 01:02:36.592
I don't know.

01:02:36.632 --> 01:02:40.277
Maybe for me the default would be to treat

01:02:40.778 --> 01:02:44.142
whitespace literally, because I find that if I

01:02:44.182 --> 01:02:48.488
have a space in my search string, I often want to

01:02:48.528 --> 01:02:49.950
turn on the literal matching.

01:02:50.450 --> 01:02:52.052
But it's probably still this is the better

01:02:52.072 --> 01:02:52.353
default.

01:02:52.373 --> 01:02:54.275
I think I do it less than half of the time I have

01:02:54.295 --> 01:02:54.696
a space.

01:02:55.257 --> 01:02:57.880
But it's not that far from half, it feels.

01:02:58.200 --> 01:03:00.203
I don't have statistics.

01:03:02.630 --> 01:03:04.296
[Sacha]: How do you even collect statistics

01:03:04.396 --> 01:03:04.938
on this?

01:03:04.958 --> 01:03:06.864
Aside from making a little note every time you're

01:03:06.884 --> 01:03:07.888
like, oh, I didn't like this.

01:03:08.731 --> 01:03:11.139
[Omar]: I mean, I would instrument isearch

01:03:11.199 --> 01:03:13.045
somehow, but I haven't thought about that problem.

NOTE
isearch - continue from the beginning of the match
#+SCREENSHOT: emacs-chat-24-omar-antolin-camarena-01-03-44-400.jpg
#+SCREENSHOT_TIME: 01:03:44.400

01:03:14.105 --> 01:03:17.269
One nice thing I do with isearch is another one

01:03:17.309 --> 01:03:18.591
of those things I got from Vim.

01:03:19.792 --> 01:03:22.456
isearch, by default, leaves you at the end of the

01:03:22.496 --> 01:03:22.776
match.

01:03:23.116 --> 01:03:25.439
I almost always want to be at the beginning

01:03:25.499 --> 01:03:27.041
of the match, because that's what I got used to

01:03:27.081 --> 01:03:27.402
in Vim.

01:03:28.083 --> 01:03:30.806
I think it must be here.

01:03:31.127 --> 01:03:32.689
I have something exit at start.

01:03:33.790 --> 01:03:37.895
I tell isearch to exit at the beginning of the

01:03:37.955 --> 01:03:38.236
match.

01:03:38.476 --> 01:03:41.139
The way you use this is you install it as a

01:03:41.259 --> 01:03:43.302
hook, I believe.

01:03:44.395 --> 01:03:45.196
Is that right?

01:03:46.578 --> 01:03:47.759
[Sacha]: You seem to have options.

01:03:48.160 --> 01:03:48.360
[Omar]: Yes.

01:03:49.321 --> 01:03:49.681
[Sacha]: I see.

01:03:49.762 --> 01:03:52.665
So S-RET lets you exit at the end, and

01:03:52.705 --> 01:03:54.708
then by default... Yeah, which is Emacs default.

01:03:54.988 --> 01:03:57.811
[Omar]: But I find that the better default

01:03:57.872 --> 01:03:58.953
is to exit at the beginning.

01:03:59.313 --> 01:04:01.075
Yes, and that's the whole point of that.

01:04:01.095 --> 01:04:08.628
For example, if I want to mark until that parentheses,

01:04:08.629 --> 01:04:11.348
then I would search for the parentheses,

01:04:11.328 --> 01:04:14.713
and I don't want to include the parentheses.

01:04:14.733 --> 01:04:15.615
That's not a good example.

01:04:15.655 --> 01:04:17.718
But with a word, it's often like, I'm looking for

01:04:17.758 --> 01:04:20.602
a word, but I want to highlight up to the end of

01:04:20.642 --> 01:04:20.923
the word.

01:04:21.223 --> 01:04:24.268
It's just like, if you want to mark a region from

01:04:24.308 --> 01:04:27.513
point to some search term, with the Emacs

01:04:27.533 --> 01:04:29.536
default, what you have to search for is the thing

01:04:29.576 --> 01:04:32.661
that is at the end of the part you want to match.

01:04:32.641 --> 01:04:36.226
But often I want to say until like the thing that

01:04:36.286 --> 01:04:36.827
starts here.

01:04:37.107 --> 01:04:38.489
It's just my brain works that way.

01:04:39.130 --> 01:04:41.514
So for me, it's much better to exit at the

01:04:41.554 --> 01:04:42.255
start of the search.

01:04:44.178 --> 01:04:45.259
Which means I don't understand

01:04:45.279 --> 01:04:46.861
isearch on other people's Emacs.

01:04:46.901 --> 01:04:49.906
It just leaves the point in the wrong location

01:04:49.966 --> 01:04:50.386
all the time.

01:04:50.767 --> 01:04:52.429
If you're going quickly, you won't realize

01:04:52.449 --> 01:04:53.831
that it's just a mess.

01:04:54.192 --> 01:04:56.355
It does mean that I can only use isearch if it's

01:04:56.375 --> 01:04:57.737
configured this way.

01:04:59.928 --> 01:05:01.830
[Sacha]: Well, that's the thing about Emacs, right?

01:05:01.910 --> 01:05:04.292
Once you've got it set up, you've

01:05:04.312 --> 01:05:06.074
got to use your config because everything else

01:05:06.114 --> 01:05:07.536
just feels off.

01:05:08.076 --> 01:05:08.997
It just feels weird.

01:05:09.017 --> 01:05:09.558
[Omar]: Yeah, that's right.

01:05:10.579 --> 01:05:10.879
[Sacha]: All right.

NOTE Using keymaps to remember sets of commands

01:05:12.460 --> 01:05:16.084
Going back to the toggle keymap, @gcentauri says,

01:05:16.124 --> 01:05:16.805
I'm not lazy enough.

01:05:16.865 --> 01:05:19.087
I just M-x orderless consult, find the thing

01:05:19.107 --> 01:05:21.329
that I'm toggling, which I do a lot also.

01:05:21.349 --> 01:05:23.391
I just use M-x for all the things because I can

01:05:23.411 --> 01:05:25.553
just specify parts of it.

01:05:25.573 --> 01:05:26.755
[Omar]: There's some toggles I don't have

01:05:26.795 --> 01:05:28.797
in the keymap because I use them very rarely, but

01:05:29.177 --> 01:05:29.277
yeah.

01:05:29.257 --> 01:05:35.109
What I like also about the keymap is that it's a

01:05:35.269 --> 01:05:38.736
place to remind myself of the toggle commands.

01:05:38.756 --> 01:05:40.440
I often just do this.

01:05:40.460 --> 01:05:41.562
What was the thing?

01:05:42.132 --> 01:05:45.035
I haven't used that in a while.

01:05:45.215 --> 01:05:49.300
[Sacha]: Having a shorter list, it means you

01:05:49.340 --> 01:05:51.603
can just use recognition instead of recall, right?

01:05:53.104 --> 01:05:54.246
[Omar]: It's short enough that I can read

01:05:54.266 --> 01:05:54.566
through it.

01:05:55.367 --> 01:05:56.829
[Sacha]: I like that a lot.

01:05:56.869 --> 01:05:59.812
I like the fact that with that Embark `C-h`

01:05:59.992 --> 01:06:01.914
screen, you can use completion even to select

01:06:01.934 --> 01:06:04.377
the commands from that subset.

NOTE Other things from the config

01:06:04.981 --> 01:06:06.383
A couple of other things that I picked up from

01:06:06.403 --> 01:06:07.043
your config:

01:06:07.084 --> 01:06:10.007
There's your `dired-open-externally`, so it makes

01:06:10.047 --> 01:06:12.931
it very easy to open something in an external

01:06:13.371 --> 01:06:14.292
application.

01:06:14.312 --> 01:06:15.774
[Omar]: And it just calls Embark open

01:06:15.814 --> 01:06:16.255
externally.

01:06:18.758 --> 01:06:20.139
This function moved back and forth

01:06:20.199 --> 01:06:21.020
from different places.

01:06:21.080 --> 01:06:23.223
I think `embark-open-externally` used to be in

01:06:23.263 --> 01:06:23.744
consult.

01:06:24.444 --> 01:06:26.567
Daniel said he felt it didn't fit in

01:06:26.607 --> 01:06:27.328
with consult.

01:06:29.771 --> 01:06:34.937
`Embark consult` would put it in keymaps.

01:06:35.542 --> 01:06:36.463
He was right.

01:06:37.904 --> 01:06:40.787
Consult didn't have a very clear personality at

01:06:40.807 --> 01:06:41.247
the beginning.

01:06:41.288 --> 01:06:43.109
It was sort of like a grab bag of commands.

01:06:43.149 --> 01:06:46.953
Eventually, what gelled is that a

01:06:46.993 --> 01:06:48.995
command should be in Consult if there is a useful

01:06:49.035 --> 01:06:50.436
way to write previews for it.

01:06:50.456 --> 01:06:52.999
So, preview is the distinguishing feature of what

01:06:53.059 --> 01:06:54.220
is a good fit for Consult.

01:06:55.001 --> 01:06:57.023
Now, I hope Daniel would agree with that.

01:06:57.063 --> 01:06:59.285
That seems to be the criteria now.

01:06:59.305 --> 01:07:00.025
That's great.

01:07:00.186 --> 01:07:01.667
I absolutely love preview.

01:07:01.765 --> 01:07:04.391
That's one thing I miss a little bit with org-ql.

01:07:04.491 --> 01:07:06.755
I use org-ql mostly to search through Org files,

01:07:07.497 --> 01:07:10.343
but the preview is kind of manual in that I use

01:07:10.403 --> 01:07:11.085
Embark to do it.

01:07:11.225 --> 01:07:15.774
If I want to preview a command, I just use Embark

01:07:15.955 --> 01:07:16.616
to do what I mean.

01:07:20.003 --> 01:07:22.288
[Sacha]: Yeah, that's a good idea.

01:07:22.387 --> 01:07:23.090
I should try that.

01:07:23.331 --> 01:07:25.380
[Omar]: So any command that doesn't have a

01:07:25.400 --> 01:07:27.890
preview, I mean does, you can just use `embark-dwim`,

01:07:27.910 --> 01:07:31.907
it'll complete the command for you.

01:07:35.735 --> 01:07:37.457
[Sacha]: Okay, the kid has arrived,

01:07:37.477 --> 01:07:38.478
so I have to go off to lunch.

01:07:38.498 --> 01:07:40.580
But thank you so much for the quick peek into

01:07:40.600 --> 01:07:42.001
your config.

01:07:43.042 --> 01:07:45.604
I'll put the transcript together and then people

01:07:45.644 --> 01:07:46.005
can do that.

01:07:46.025 --> 01:07:47.706
But in the meantime, people can look at your

01:07:47.746 --> 01:07:49.728
config for all sorts of wonderful goodness.

01:07:50.649 --> 01:07:50.909
[Omar]: Thanks.

01:07:50.969 --> 01:07:53.532
[Sacha]: Thanks to everyone for hanging out.

01:07:53.932 --> 01:07:56.294
Looks like the isearch tip was popular,

01:07:56.355 --> 01:07:58.236
so you might see a lot of people getting that

01:07:58.256 --> 01:07:58.937
from your config.

01:07:59.578 --> 01:08:01.399
Anyway, thank you so much for this.

01:08:01.600 --> 01:08:02.721
I’ll see you around.

01:08:03.181 --> 01:08:03.922
[Omar]: Thanks, Sacha.

01:08:04.022 --> 01:08:05.303
This was fantastic.

01:08:05.283 --> 01:08:06.806
[Sacha]: Alright, nice.
