Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: remove embark-collect-live and embark-collect-completions #466

Closed
oantolin opened this issue Feb 23, 2022 · 50 comments
Closed

Proposal: remove embark-collect-live and embark-collect-completions #466

oantolin opened this issue Feb 23, 2022 · 50 comments

Comments

@oantolin
Copy link
Owner

oantolin commented Feb 23, 2022

First of all, let me emphasize that embark-collect-snapshot is here to stay! (Although I guess that if the live and completions variants are removed, then we might as well rename embark-collect-snapshot to simply embark-collect.)

I think that probably very few people use embark-collect-completions or embark-collect-live, and removing them would let me significantly simplify the code for embark-collect-snapshot. I myself never used embark-collect-live and I bet I was probably one of the last holdouts using embark-collect-completions.

It seems like a reasonable philosophical stance to say that embark-collect-snapshot and embark-export are of a very different nature than embark-collect-live and embark-collect-completions and that the latter two are really out of scope for Embark.

In practical terms I was still using embark-collect-completions for its features. Of course its main deficiency is how slow (#101) it is, and for a long time I longed to switch to Vertico (which is what I use now), but did not switch because other than being slow, embark-collect-completions had a lot to offer:

  • It has both a list view (with annotations) and a compact grid view (withoot annotations).
  • It's easy to configure it to not be on all the time, to only popup on demand.
  • You can configure the initial view per completion category.
  • It can display multiline completion candidates, and has zebra stripes to make it clear where one ends and the next one begins.
  • It nicely aligns annotations for you.

But with (relatively) recent improvements to Vertico and Marginalia you can get almost of that in Vertico now, and Vertico has always been much, much faster. Only multiline display of multiline candidates (and zebra stripes) is missing from Vertico, but I've found I don't really need that at all! Also, let me say that if you want completions displayed only on demand like I do, vertico-unobtrusive-mode is much better than truly displaying zero completions.

I've never really recommended embark-collect-completions and would now actually recommend against using it, I mean, why wouldn't you use Vertico instead?

I'm creating this issue to give people a chance to protest or in general give their opinion before I do anything about this.

@minad
Copy link
Contributor

minad commented Feb 23, 2022

I am in full support of removing this feature, since it narrows the focus of the package as a package centered around actions. Also having shorter command names is better and there has been confusion before about the difference of embark-collect-snapshot and embark-collect-live.

As you argued there are good alternative completion systems around. In particular I want to mention @protesilaos' Mct which can be used as substitute if people like a buffer display. Furthermore Embark completions were always a bit difficult to setup in contrast to just activating vertico-mode or mct-minibuffer-mode. Regarding missing display features missing in Vertico or Mct, I think we should rather focus on adding or tweaking these packages instead of keeping this Embark code around.

If there is interest in preserving an Embark-based completion display we can move this part of the code to a separate repository and consolidate it with @karthink's Elmo (See #1). It is arguably the cleaner solution to move the completions code out of Embark instead of moving more completion code into Embark. This will help maintenance in the long term. Therefore I don't see a reason to not take this step. If there is interest we can still bring the functionality back, but at a better place, where it fits better.

@oantolin
Copy link
Owner Author

Let me just tag @yoctocell who is the only other person besides @karthink and @protesilaos whom I remember ever using a live updating variant of embark-collect.

@oantolin
Copy link
Owner Author

Furthermore Embark completions were always a bit difficult to setup

Well, part of me never really recommending embark-collect-completions is that I put the code to set things up in my personal configuration (which is public, at least) and not in Embark. 😄

minad added a commit to minad/consult that referenced this issue Feb 23, 2022
See discussion in oantolin/embark#466. In the light of
capable and flexible alternative completion systems like Vertico and Mct, Embark
will likely consolidate its feature set around actions and snapshot collections.
@minad
Copy link
Contributor

minad commented Feb 23, 2022

I removed the mentioning of Embark as completion system from the Consult README, which I feel has led to more confusion than it helped. Embark is of course still featured prominently there for all its other features!

Well, part of me never really recommending embark-collect-completions is that I put the code to set things up in my personal configuration (which is public, at least) and not in Embark.

Yes, I know. But one has to know your stuff very well to find this. I think if we want to preserve the functionality it is better to do that externally and if we are really going to do that we should also provide a mode as @karthink did in Elmo.

@protesilaos
Copy link

protesilaos commented Feb 23, 2022 via email

@karthink
Copy link
Contributor

I too am in favor of removing embark-collect-live if the cut makes sense for composability and code maintenance.

Elmo is just a thin layer of glue code over embark-collect-live, and if it makes sense to include these features in a separate embark-live (tentative) package, I'm up for it. If @oantolin wants to make the initial cut I can contribute code from Elmo.

@oantolin
Copy link
Owner Author

oantolin commented Feb 24, 2022

I'm glad the reception to this proposed removal has been positive. I started working on a no-live-collection branch: b7e4b93
That commit was very satsifying: a tiny bit of rewording here and there but mostly lots of wholesale deletion!

That should be usable, in case anyone wants to test, but I still want to simplify things a bit further: the annotations are curently computed only on demand, but without live-updating that laziness is not really necessary.

Thanks @karthink, for your willingness to put together an embark-live package. But I think that, if we do want to do something like that, it should just be me adding some of the code I just removed from Embark to your existing Elmo package via a PR. How does that sound? (Well, not just adding some code to Elmo, it would also mean a tiny bit of refactoring to Embark, which I'd be happy to do.)

@minad
Copy link
Contributor

minad commented Feb 24, 2022

I'm glad the reception to this proposed removal has been positive. I started working on a no-live-collection branch: b7e4b93
That commit was very satsifying: a tiny bit of rewording here and there but mostly lots of wholesale deletion!

Very good! This commit clearly shows that the completion functionality is separate from the main functionality provided by Embark. This is a great simplification!

That should be usable, in case anyone wants to test, but I still want to simplify things a bit further: the annotations are curently computed only on demand, but without live-updating that laziness is not really necessary.

That would be good! There was also issue #203 which may be relevant to this?

@minad
Copy link
Contributor

minad commented Feb 24, 2022

Oh, just one thing. I went over the issues again and saw #405, #407 and #408, which are relevant to this discussion. If we remove live collect we remove the live updating toc functionality too. Do we want this? I think the simplification above justifies the removal. But I wonder if there is some way to retain the live collect feature, maybe without the fancy optimizations? Is it possible to implement a simpler variant of live collect based on the static embark-collect(-snapshot), taking advantage of the simplification and improving composeability of the code? In your original live-completion package you also based a completion system on top of a static minibuffer-completion-help function (same with Mct), so it should be possible? If yes, I would then vote to keep such a command around in Embark, let's call the commands embark-collect and embark-live, where embark-live just calls embark-collect in a buffer change hook. My main criticism regarding the current implementation is that there is too much special casing and the collect feature mixes both the live and static variant. If this can be untangled, I am not opposed to more functionality. I am interested in reduced complexity and better composition, but the amount of code alone is not what bothers me. What do you think?

@hmelman
Copy link

hmelman commented Feb 24, 2022

I'm glad the reception to this proposed removal has been positive.

I don't think I knew about embark-collect-completions so I didn't care about that. I thought embark-collect-live was neat when I first tried it but I can't say I've used it since, so I didn't think I'd care about removing it. I agree the live updating TOC functionality is nice and I've definitely considered using that, though maybe something based on treeview would be better for this purpose. I'm sympathetic to the code simplification, but I think I would like to see an embark extension or package for the live functionality. If nothing else, its a neat demo. :) But I don't have strong opinions on the matter.

@minad
Copy link
Contributor

minad commented Feb 24, 2022

I agree the live updating TOC functionality is nice and I've definitely considered using that, though maybe something based on treeview would be better for this purpose.

I tried tree views for a while but I don't really like them. The point of embark-live is that it gives you a simple generic live updating TOC basically for free. But the "for free" is currently not realized due to all these kinds of special casing in the collector code for the live and collection variants. I hope it can still be realized if we just rebase it on top of a static embark-collect, even if it is less optimized than the current live collector. But being less optimized wouldn't be a big additional downside given that the current live collector is already slow. We could even use a larger value for the delay, which makes sense if this feature is used for live updating TOCs in real buffers. Obtaining the TOC there is expensive.

@oantolin
Copy link
Owner Author

Thanks @minad for collecting those particular issue numbers which was actually an item on my todo list! I am planning on storing the candidate collector and, as I said above, storing the annotations too.

Also: thanks for chiming in @hmelman!

I think it is perfectly feasible to add back an "external" embark-live, external in the sense that it is not intertwined with embark-collect, but instead just uses it (which obviously is how I should have implemented the live functionality in the first place...). Below is a quick proof of concept (it has an obvious bug if there already exists an Embark collect buffer, and it should not redisplay---and probably not even recreate---the buffer all the time; both these problems can be easily solved by a little refactoring of embark-collect).

(defun embark-live ()
  (interactive)
  (let ((live-buffer (format "*Live-updating Embark Collect for %s*"
                             (buffer-name)))
        (run-collect (make-symbol "run-collect"))
        timer)
    (setf (symbol-function run-collect)
          (lambda (_1 _2 _3)
            (unless timer
              (setq timer
                    (run-with-idle-timer
                     0.05 nil
                     (lambda ()
                       (embark-collect)
                       (when-let ((existing (get-buffer live-buffer)))
                         (kill-buffer existing))
                       (with-current-buffer "*Embark Collect*"
                         (rename-buffer live-buffer))
                       (setq timer nil)))))))
    (add-hook 'after-change-functions run-collect nil t)))

@minad
Copy link
Contributor

minad commented Feb 24, 2022

@oantolin Thanks, this looks good! Then I think we can go forward with the removal but maybe still retain the independent and simple live collector embark-live since it seems useful enough to not entirely remove this.

@hmelman
Copy link

hmelman commented Feb 24, 2022

I tried tree views for a while but I don't really like them.

Do you mean the library or the general concept? Long ago I tried speedbar and while it was neat 20 years ago, I didn't find it useful. I didn't get much benefit from seeing the directory structure all the time and I'd rather navigate with keys than the mouse (this is emacs after all). Now given other editors I see a lot of things like dir-tree, neotree, etc. mostly doing file views and I still prefer using dired-jump or some find-file equivalent when I need such things. outline-cycle in outline-minor-mode and consult-outline and consult-imenu are my gotos for outline navigation. I haven't really needed live collections for a TOC but I am starting to put more useful information in headings which might be nice to continuously see. E.g., here's a markdown file I have of Oscar nominees and which I've seen and which I haven't. I manually update the emoji counts in the headers but am now using shift-number to make that easier. But yes, I understand getting this "for free", or not, or maybe yes :)

Screen Shot 2022-02-24 at 11 24 58 AM

@minad
Copy link
Contributor

minad commented Feb 26, 2022

@oantolin Anything missing or is this ready to merge?

@hmelman

Do you mean the library or the general concept?

For me the general concept is not useful in normal day use. However I see some value for demonstration purposes for clicking around etc. In that case, the tree visualization seems useful. Regarding the libraries, there are a multiple packages around and I lost track: speedbar, neotree, treemacs, ... I think treemacs is the most powerful and most advanced. Unfortunately it is also quite opinionated with multiple dependencies, e.g., uses a posframe instead of the minibuffer to read user input. Design decision like these go against my preferences of composable packages, which conform to the commonly accepted ways of Emacs.

I haven't really needed live collections for a TOC but I am starting to put more useful information in headings which might be nice to continuously see.

You should really migrate to Org which already comes with all these features ootb. You can even make it look "modern", see https://github.com/minad/org-modern. ;)

@hmelman
Copy link

hmelman commented Feb 26, 2022

You should really migrate to Org which already comes with all these features ootb. You can even make it look "modern", see https://github.com/minad/org-modern. ;)

So I've heard ;) I'm in the Apple ecosystem so I need good iOS support. I've tracked a couple of org apps and they're not quite there yet for me. Markdown is sufficient for my needs and I kinda hate some of org's syntax.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

@hmelman Why do you need apps? Just use Emacs ;) Personally the Org syntax doesn't bother me much. It takes some time to get accustomed but the only syntax which I find noisy are the #+keyword prefixes. These prefixes have also advantages though, since they are quite unique and as such are easy to parse don't introduce conflicts with other syntax. I just hide the prefixes without serious downsides in org-modern. Another big advantage of Org is that the syntax is extensible via syntax elements like keywords, blocks and drawers.

@hmelman
Copy link

hmelman commented Feb 26, 2022

@minad I think I would love to use emacs on my phone, but then I think about trying to type C-M-e or s-g. I've been using emacs for so long I really need it for anything lengthy. I usually say I'm willing to type about a sentence on my phone, about a paragraph on my iPad and anything longer I need a computer (which is synonymous with emacs).

One of the things I loved about osx when I first switched to it was that the basic text widget used in all apps supported the basic emacs editing keys, so I have them everywhere, in every text entry box. And there was an extension system to add more commands. One of the things I hate about new versions of macOS is that they no longer support this everywhere, (e.g., I think in catalyst apps) and it's really frustrating when it doesn't work. Turns out I use M-b, and M-c a lot. Of course readline did this on the linux command-line long ago, I don't know if modern linux gui systems support something similar in text widgets.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

Regarding Emacs on phones - I think one thing I would really like to have and which I will probably set up at some point is a way to make captures/notes to Org from the phone, which are then sent via a trivial web app directly to Emacs. Furthermore Emacs generates a html from the Org agenda, which is also made accessible on a private web server. I guess that's all I would need. Org already provides many facilities to make that work, so I am sure there are a few people who have something like this running.

@hmelman
Copy link

hmelman commented Feb 26, 2022

The new hotness on IOS is Plain Org which seems to have some org-capture-like functionality via share sheets. The older beorg does have this. In both the org files are sync'ed via cloud services so your emacs should just see them. I'm not sure if that's what you mean or if you have something else in mind.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

I am not using iOS and I am also not interested in yet another proprietary app which will stop working at some point. I mean I have to bake something myself, but I am happy with something much more limited as long as I can hack it to my liking.

@hmelman
Copy link

hmelman commented Feb 26, 2022

I would think there are more options on android, but I appreciate the not wanting to use a proprietary app. My iPad editor of choice is Editorial which stopped getting updates several years ago. It still works and I still think it's the best markdown editor (and has a python interpreter in it for extensions) but it only works with dropbox and it's keeping me from moving to iCloud Drive exclusively.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

I think I don't even want an app. I am kind of an anti-app person to avoid spyware, advertisement and unnecessary disturbance. A simple web form and a plain html agenda would suffice for me.

@oantolin
Copy link
Owner Author

oantolin commented Feb 26, 2022

@hmelman I think Org's syntax is much more sensible than Markdown. First in Markdown there are two different syntaxes for headings, the # Heading syntax and the syntax where you underline with equals or dashes. That second syntax is really awkward to use, and it only works for two levels.

There are also two syntaxes for italics, ᵢtalics_ and *italics*, both of which are weird, since _ is traditionally used for subscripts and * is traditionally used for bold! I remember chat applications that rendered single asterisks as bold from long before I ever heard of Markdown. Then you have two syntaxes for bold, __bold__ and **bold**. I think Org is right to use a single syntax for each consisting of a single-character modifier and to respect the tradition of using * for bold. Also, Org correctly uses _ for subscripts.

Other parts of Markdown syntax seem OK to me, but the Org syntax corresponding to those things is different but also fine. And finally, Org is extensible and Markdown is pretty limited. So for the very basics I find Markdown to be unnecessarily complex (supporting multiple syntaxes), and needlessly going against established tradition; and for more advanced things Markdown has nothing while Org has something reasonable in most cases and is extensible.

In my opinion the only thing in which Markdown is better than Org is that it is supported in more applications.

@oantolin
Copy link
Owner Author

oantolin commented Feb 26, 2022

@minad You may want to check out the organice web app for Org on the go. It has a pretty sophisticated Org parser written in JavaScript and, while you could even host your own instance, you may not even want to: it is a purely frontend application and if you use their instance no data of your is stored on their servers. You do need to have your org files on Dropbox, GitLab, WebDAV or Google Drive to use organice, though. I guess GitLab would be fine, no? Or running your own WebDAV server, maybe.

org-modern looks very elegant! I really need to figure out how to get notified by GitHub whenever you create a new repo. I keep finding out about these cool packages you write only when the appear on GNU ELPA, MELPA or someone mentions them here or on reddit.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

Or running your own WebDAV server, maybe.

Organice sounds interesting. WebDAV seems like the only acceptable solution to me. But I think I don't need any kind of sophistication, only a quick way to drop notes directly into the Org files would be sufficient, without any further editing support.

org-modern looks very elegant! I really need to figure out how to get notified by GitHub whenever you create a new repo. I keep finding out about these cool packages you write only when the appear on GNU ELPA, MELPA or someone mentions them here or on reddit.

Haha, thanks! I just stole the style ideas from Nicolas Rougier's beautiful svg works and also org-bullets/org-superstar. The goal is to have something lightweight which uses only the basic Emacs text styling facilities. Needs more work though, maybe even pixel perfect alignment for tables with LaTeX image preview.

@oantolin
Copy link
Owner Author

I currently have a low-tech solution for capturing things on my phone: I just use the note app that came with the phone. That application has cloud storage, so later at my computer I open my phone notes in the browser and just copy and paste into Emacs. I don't even really need the cloud storage: before realizing the note app had cloud storage, I would just retype things into Emacs. It was fine, I didn't find it too onerous; but it's definitely not as comfortable as copy/paste. I guess if I captured more things into my phone I would want to automate the process of getting them into my Org files, but so far this has been sufficient.

I might try moving my Org files to GitLab and then using organice. On the Emacs end I don't really care what git forge I use. For my Emacs packages I do want GitHub but just because I believe more people have GitHub accounts already, but for my private repos I could use GitLab equally well, I guess.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

I currently have a low-tech solution for capturing things on my phone: I just use the note app that came with the phone.

Me too. The next step up in the low-tech solution hierarchy would be a way to capture directly into Org. 😄

@hmelman
Copy link

hmelman commented Feb 26, 2022

@oantolin Yeah there are some oddities, but I stick to the simple ones, ## for headers and *italics* and **bold** and of course code formatting. I have a lot of lists of things and the biggest problem is the non-standard sub-item syntax (which I keep hoping CommonMark will finally resolve). I mostly stick with just using - and I use github-flavored markdown's checklists a lot. I mostly don't care about formatting too much, I use this for note taking not writing (other than in github :) ). I usually am reading the source but sometimes want to render it so that links become more readable (less cluttered) and I can make some text stand out with bold. This is why most of org's extra features don't do much for me and the clunkier syntax gets a bit in the way, I'm not always rendering.

@oantolin
Copy link
Owner Author

@hmelman Well, for the subset of Markdown you mentioned Org's syntax is not clunkier. It is actually shorter than Markdown by one character for bold and the same length as Markdown for everything else you mentioned! Often the same syntax even, like for lists and checklists. The clunkier parts of Org syntax are for elements you didn't mention needing. That's why I prefer Org, for me it's not a case of "well, Markdown is nicer for simple things but you need Org for the fancy stuff", it's more a case of Org being the same or slightly better at everything, even the simple things.

@oantolin
Copy link
Owner Author

oantolin commented Feb 26, 2022

I remember org-bullets as slowing Emacs down a lot (I remember deciding that while I liked how it looked, the performance hit wasn't worth it and I uninstalled). I lost track of it and don't know if it fixed the performance problems, but I also seem to remember it was discontinued afterwards. Is that right? Anyway, I trust your version of it to be fast. 😉

Nicholas Rougier's packages are definitely very pretty, I love seen screenshots in reddit. I haven't tried them yet, but using SVG I'd also worry a bit about speed. I think you're version without rounded corners is nice enough and is likely to be faster. Is it?

The tables look great, that would be alignment enough for me. I think there is a package already that does pixel perfect alignment of tables. Let me see if I can find it.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

I must say that I consider the syntax differences as quite superficial. For me the main selling point is that Org just integrates so well in Emacs and feature rich, org-babel support, agenda, ... The implementation is far more powerful than markdown-mode. I would just lose to much by not using it, in particular if you like to use Emacs for many things. I also considered Asciidoc at some point a longer time ago. Asciidoc also has a nice syntax, it is also somewhat extensible, but in terms of implementation no match to Org.

@oantolin
Copy link
Owner Author

oantolin commented Feb 26, 2022

That's right, the real difference is all the tooling behind Org mode. I'd still use Org because of this even if I preferred Markdown's syntax. But while the advantages in tooling are obvious I think people often think of Org as "clunkier" than Markdown and I disagree with that (for the small subset of Org that actually has equivalents in Markdown).

@oantolin
Copy link
Owner Author

Oh, I think maybe the "package" for tables I was remembering is actually this reddit post.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

I remember org-bullets as slowing Emacs down a lot (I remember deciding that while I liked how it looked, the performance hit wasn't worth it and I uninstalled). I lost track of it and don't know if it fixed the performance problems, but I also seem to remember it was discontinued afterwards. Is that right? Anyway, I trust your version of it to be fast. wink

The successor is org-superstar. I am not aware of performance issues. So far org-modern works well for me and only relies on simple font locking and text properties. I doubt that there is a way to make it faster than it is, but one could disable style elements one by one if they lead to a performance degradation.

Nicholas Rougier's packages are definitely very pretty, I love seen screenshots in reddit. I haven't tried them yet, but using SVG I'd also worry a bit about speed. I think you're version without rounded corners is nice enough and is likely to be faster. Is it?

Yes, it should be much faster, since I don't generate images. But I've also been told that the svg tags are not that bad actually. I have a hard time to believe that. I suspect you will at least notice it. The images will definitely put more load on the Emacs display engine and Emacs overall. I also like to push a bit what I can achieve with simple means.

The tables look great, that would be alignment enough for me. I think there is a package already that does pixel perfect alignment of tables. Let me see if I can find it.

There is the valign package, but it uses one overlay per separator character for its adjustments, which is a guarantee for performance issues. Therefore this package is out of question for me. Pixel-perfect alignment matters if your table cells don't have fixed width content, see minad/org-modern#5. So I may add some code to org-modern to handle pixel-perfect alignment if I find time for that.

@hmelman
Copy link

hmelman commented Feb 26, 2022

I find org's link syntax clunkier than markdown's, and as I said, I'm limited a bit by iOS support but watching developments. I agree that Nicholas Rougier's packages are definitely very pretty. For now I'm on the macport of emacs which is 27.2, so I look forward to trying some of the features of 28 when it releases. Lars recently added vtable to Emacs 29 to support variable pitch tables, that should help a few things.

@oantolin
Copy link
Owner Author

Oh, yes, links are maybe an exception to what I was saying earlier, @hmelman. I think the inline syntax in Markdown, [title](url), is pretty comparable to Org's [[url][title]]; if you think Markdown's is nicer, fair enough. But where Markdown really shines is with reference-style links: you put something like [title][1] in the paragraph and only afterwards list the URL on a line of it's own: [1]: url. That does make text more readable. Org has the two styles for footnotes, but not for links.

@oantolin
Copy link
Owner Author

By the way, I wish info rendered links in the Markdown reference style. The Embark manual looks pretty ugly in the info reader due to links.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

By the way, I wish info rendered links in the Markdown reference style. The Embark manual looks pretty ugly in the info reader due to links.

See my complaints about Info in minad/marginalia#131 (comment) :-P

@oantolin
Copy link
Owner Author

And you're voting with your feet: I have no consult info manual!

@hmelman
Copy link

hmelman commented Feb 26, 2022

My approach would be to change the rendered info format to be the markdown link format, basically just surrounding the text with brackets (or some other delimiter) and then having the emacs Info reader render the links cleanly. I don't care what the stand-alone reader does but don't see why it couldn't do something similarly pretty. But reading archived mailing lists threads about improving info is sooooo depressing.

@minad
Copy link
Contributor

minad commented Feb 26, 2022

And you're voting with your feet: I have no consult info manual!

I didn't sabotage this intentionally 😆

@karthink
Copy link
Contributor

karthink commented Mar 3, 2022

But I think that, if we do want to do something like that, it should just be me adding some of the code I just removed from Embark to your existing Elmo package via a PR. How does that sound? (Well, not just adding some code to Elmo, it would also mean a tiny bit of refactoring to Embark, which I'd be happy to do.)

Unless the only reason to have an Embark live buffer is for use as a completion framework, I think it makes sense to have the embark-live facility available as an add-on to Embark that Elmo can require. That way folks who want a live-completion buffer for a specific task don't have to install Elmo.

Between a very actively maintained MCT and vertico-multiform, I don't think there's a niche for Elmo any more. What do you think?

@minad
Copy link
Contributor

minad commented Mar 3, 2022

@karthink The idea is to keep a cheap variant of embark-live available in embark.el, see #466 (comment). The goal is only to untangle embark-collect-live and embark-collect-snapshot. I agree that there is no real need for Elmo given that we have Mct and Vertico, but it would still be possible to implement it if needed, but then all the relevant code should be fully part of Elmo. I don't think creating an add-on which can be required is a good idea. Anyway I think this is a hypothetical discussion given that there is no real need for embark-live-completions. However I still see the value of embark-live/embark-collect-live, since this is useful for live updating TOCs and also in combination with the marking facilities (#166, #467).

@karthink
Copy link
Contributor

karthink commented Mar 4, 2022 via email

@oantolin
Copy link
Owner Author

oantolin commented Mar 21, 2022

I've merged this now. @karthink, please check out the new embark-live and let me know if it needs any changes to be used in elmo.

The new embark-live is not currently mentioned in the README, but if no major changes are needed in the next few days I'll add a mention.

@minad
Copy link
Contributor

minad commented Mar 21, 2022

Thanks! That's great. I will test the new implementation soon and then maybe I can get back to #467.

@oantolin
Copy link
Owner Author

Argh, I forgot to put in obsoletion warnings. I'll add those.

@minad
Copy link
Contributor

minad commented Mar 21, 2022

The "L" keybinding is also missing. Besides that it seems to work well.

@oantolin
Copy link
Owner Author

I added the "L" binding back.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants