-
Notifications
You must be signed in to change notification settings - Fork 11
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
helm-system-packages-eshell bugs #35
Comments
Also, stepping back a bit, it seems crazy dicey to use eshell for system package management. Are there potential less-complex and more stable alternatives that could be used? |
Glad you find it magical, I tend to agree! :) Sorry about the bad experience with
(add-hook 'eshell-post-command-hook 'helm-system-packages-refresh nil t)
(add-hook 'eshell-post-command-hook
(lambda () (remove-hook 'eshell-post-command-hook 'helm-system-packages-refresh t))
t t) So it seems that somehow your local
|
Maybe what's throwing me off is that executing actions on helm candidates does not usually entail post execution interaction to "complete" the executed action. eshell, as one of the newest terminal packages, is a 15 on a 1-10 scale for handling a confirmation prompt lol. These are dangerous operations the user needs to be protected from, but still... I don't usually see comint-based process calling. I love the idea of unified confirmation, too, which allows using
In a manually called eshell, I was prompted a second time again (which again, worked). I stayed in this eshell session I am not very good at stack tracing/debugging yet, but will try and come back @ your second bullet. Thank you. |
I'm very confused with what you are trying to say :p Why is Eshell interaction throwing you off? What does it have to do with Helm? What's the link with My hunch is that you are saying you don't want to run interactive commands in Eshell. |
I don’t want to use eshell when a safer and lighter alternative calling method exists — I believe one exists. Above are refs to functions which don’t use eshell; in fact, I grepped my elpa directory and can’t find a package using eshell to call external processes. Apt —no-confirm is —yes in dnf, so I think we’re getting at the same thing. |
I like your idea to build in the confirmation prompt—you could make asynchronous external calls then. Going along, if we’re afraid that we’ll take away ability for users to see the installed dependencies, then we should support that—they shouldn’t be using the install command to begin with for dependency discovery. Apt/dpkg and dnf support looking up package dependencies. |
Emacs can call external process with The reason Eshell is used by Helm System Packages is for a specific purpose: to allow "shell interactivity" during the execution of the installation.
This is done by querying the package manager, and it's already supported by Helm System Packages. Look at Helm's action menu on a package, you can list the dependencies from there. |
I always have an error message when installing a package:
I never cared enough to have a look at it. I always kill the `helm-system-packages-eshell buffer after having used it so I can use it again later. I never had the tab problem you mention. I just press M-> to go to the end of the buffer and press y RET to validate. |
Letting the issue settle for the last ~two weeks I want to step back. I don't think making a sweeping change like throwing out eshell makes sense since it mostly works, and there are a lot of library dependencies that can collectively have a much bigger impact on UX from a maintenance point. Props @ on bringing all this together--helmized package-querying is very powerful. Closing for now until I can contribute when I have more time. It's on my list. |
Thanks for the heads up!
|
Hi, thanks for the package. Using helm for this type of querying is a magical experience. Installation, however, is pretty buggy at least on my setup. Using it twice within the same emacs session, I experienced bugs on both tries.
Setup:
xterm-color.el
.Repro
M-x
helm-system-packages
RET
<<a_package_to_install>>
... select/navigate to it...f2
<<your_sudo_password>>
RET
At this point, it shows the typical
dnf
pre-install summary and prompts for confirmation but misplaces the cursor by a single Tab character (see attached output). Continue anyways, pressingy
RET
like you normally would. When it fails (presumably due dnf's sanity check vs extra TAB) and the prompt appears again, pressy
RET
to successfully install.Now keep the
*helm-system-packages-eshell*
buffer,C-x b
switch away and do some work. Later repeat above workflow to install another package. This time the install action fails completely returningrun-hooks: Symbol’s function definition is void: helm-system-packages-refresh
.Inspecting
helm-system-packages-refresh
inside the*helm-system-packages-eshell*
buffer confirm it isnil
, and seemshelm-system-packages--make-init
has some missing related TODOs. xref reviewing calls tohelm-system-packages-refresh
did not make it clear how your package maybe effecting the associated eshell session at run-time though besides sending the initial constructed command.Help?
See also eshell session output:
helm-system-packages-eshell_20190830.txt
The text was updated successfully, but these errors were encountered: