-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Fix #1383: "Save with Sudo" rewrite #1424
Conversation
The code from the refactor that I have been working on is now more or less ready to be merged. These changes make some breaking changes, notably with regards to the plugin interface. Once a lot more documentation has been written, I will release this code as micro 2.0. There are a lot of new features, and in the coming days I will try to go through the open issues to see exactly which ones are addressed by the new features, and write lots more documentation regarding what has been implemented. Some highlights include: * Simple autocompletion. * Autocompletion (tab by default) will do a simple "buffer completion" which will autocomplete according to words used elsewhere in the buffer. In the future plugin support could be added along with support for interfacing with language-specific autocompletion tools. * Automatic backups. * Backup files are stored in `~/.config/micro/backups` for every open buffer and are saved roughly every 8 seconds if the buffer is being modified. Backups are removed when the buffer is closed, but if micro or the system crashes, any unsaved changes can be recovered by re-opening the file (micro will auto- recover) or by manually viewing the backup in the `~/.config/micro/backups` directory. * Configurable statusline. * Configurable linter plugin. * Resizeable splits. * Complete re-organization of the code to support better go modules and maintain a better directory structure. * Better plugin interface with better access to the Go standard library and internal Micro functions (lots of documentation still needs to be written). * Documentation still needs to be written, but in the meantime please see the default plugins as examples as they have been converted from their old versions to be compatible with the new interface. * Buffer synchronization when the same file is opened multiple times. * Keybindings and mouse support in the command bar. * Support for non-utf8 encodings. * General QoL improvements and bug fixes. * Notably I believe the autoclose plugin crash issue is fixed. * No more plugin manager. * Plugin installation will now be performed manually by git cloning into the `~/.config/micro/plug` directory. This may not be a highlight for some but I believe it is much simpler, and there is no need to have a heavyweight dependency manager. Perhaps in the future, a good command-line tool can be made to manage plugins if people would find it useful. * Other features that I have forgotten. Next I plan to write up more documentation for all the new features, and make a "release candidate" for micro 2.0. I will also be working to fix any bugs that come up (hopefully not too many, but this is a big change and bound to have some issues). After release I hope to focus more on optimization (for example loading syntax files is currently somewhat inefficient, and the bottleneck for startup time #1427). Sorry for not being so active recently, but I hope merging this big change can help me get back to more regular development. Thanks to everyone for using micro and for giving feedback and engaging with development online (even if I don't always respond). Merry Christmas! Issues that are fixed/affected by this change: Ref #1419 (configurable statusline) Ref #1413 (cursor behaves better) Ref #1401 (softwrap problems) Ref #1383 (better save with sudo) Ref #1424 (better save with sudo) Ref #1382 (go modules) Ref #1381 (install plugins from command line) Ref #1357 (sorting -- textfilter) Ref #1351 (custom linting) Ref #1350 (sudo problem might be fixed) Ref #1298 (readonly option) Ref #1250 (autoclose bug) Ref #1239 (go modules) Ref #813 (autoclose bug) Ref #812 (cursor sync across same buffers) Ref #770 (resizeable panes) Ref #635 (keybindings in infobar) Ref #596 (disable builtin plugins) Ref #550 (backups) Ref #174 (autocompletion)
Looks like 922a57b includes the |
Yes thanks so much for this fix! Since I was working on the refactor, it was easier for me to try it out manually rather than merge this PR. I hope version in 2.0 works well for you! |
Somebody please come up with a better name for that variable than writeCloser
You're welcome 🖤 I can now confirm that it's definitely fixed for me in the nightlies. |
Tested on OpenBSD 6.4-6.6 with
doas
.Changes:
tee
fordd
It also removes the Ctrl+C trap as it wasn't functional in my testing, but if required it's easy to add back in.