option: Don't apply rmtrailingws in case of timed autosave (#2850)

This commit is contained in:
Jöran Karl 2024-03-15 18:46:51 +01:00 committed by GitHub
parent 8af304cc21
commit 4a53419c62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 6 deletions

View File

@ -418,7 +418,7 @@ func DoEvent() {
f.Function(f.Output, f.Args)
case <-config.Autosave:
for _, b := range buffer.OpenBuffers {
b.Save()
b.AutoSave()
}
case <-shell.CloseTerms:
case event = <-screen.Events:

View File

@ -93,9 +93,14 @@ func (b *Buffer) Save() error {
return b.SaveAs(b.Path)
}
// AutoSave saves the buffer to its default path
func (b *Buffer) AutoSave() error {
return b.saveToFile(b.Path, false, true)
}
// SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist
func (b *Buffer) SaveAs(filename string) error {
return b.saveToFile(filename, false)
return b.saveToFile(filename, false, false)
}
func (b *Buffer) SaveWithSudo() error {
@ -103,10 +108,10 @@ func (b *Buffer) SaveWithSudo() error {
}
func (b *Buffer) SaveAsWithSudo(filename string) error {
return b.saveToFile(filename, true)
return b.saveToFile(filename, true, false)
}
func (b *Buffer) saveToFile(filename string, withSudo bool) error {
func (b *Buffer) saveToFile(filename string, withSudo bool, autoSave bool) error {
var err error
if b.Type.Readonly {
return errors.New("Cannot save readonly buffer")
@ -118,7 +123,7 @@ func (b *Buffer) saveToFile(filename string, withSudo bool) error {
return errors.New("Save with sudo not supported on Windows")
}
if b.Settings["rmtrailingws"].(bool) {
if !autoSave && b.Settings["rmtrailingws"].(bool) {
for i, l := range b.lines {
leftover := util.CharacterCount(bytes.TrimRightFunc(l.data, unicode.IsSpace))

View File

@ -315,7 +315,10 @@ Here are the available options:
default value: `prompt`
* `rmtrailingws`: micro will automatically trim trailing whitespaces at ends of
lines. Note: This setting overrides `keepautoindent`
lines.
Note: This setting overrides `keepautoindent` and isn't used at timed `autosave`
or forced `autosave` in case the buffer didn't change. A manual save will
involve the action regardless if the buffer has been changed or not.
default value: `false`