Skip to content

Commit

Permalink
Add reload setting - finalization of #2627 (#2845)
Browse files Browse the repository at this point in the history
* Add reload setting

Can be set to:

* auto - Automatically reload files that changed
* disabled - Do not reload files
* prompt - Prompt the user about reloading the file.

* option: Add default value for reload option and documentation

---------

Co-authored-by: Wilberto Morales <[email protected]>
  • Loading branch information
JoeKar and wilbertom authored Oct 21, 2023
1 parent 9da6af9 commit f7244d0
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
34 changes: 24 additions & 10 deletions internal/action/bufpane.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,20 +395,34 @@ func (h *BufPane) Name() string {
return n
}

func (h *BufPane) getReloadSetting() string {
reloadSetting := h.Buf.Settings["reload"]
return reloadSetting.(string)
}

// HandleEvent executes the tcell event properly
func (h *BufPane) HandleEvent(event tcell.Event) {
if h.Buf.ExternallyModified() && !h.Buf.ReloadDisabled {
InfoBar.YNPrompt("The file on disk has changed. Reload file? (y,n,esc)", func(yes, canceled bool) {
if canceled {
h.Buf.DisableReload()
}
if !yes || canceled {
h.Buf.UpdateModTime()
} else {
h.Buf.ReOpen()
}
})
reload := h.getReloadSetting()

if reload == "prompt" {
InfoBar.YNPrompt("The file on disk has changed. Reload file? (y,n,esc)", func(yes, canceled bool) {
if canceled {
h.Buf.DisableReload()
}
if !yes || canceled {
h.Buf.UpdateModTime()
} else {
h.Buf.ReOpen()
}
})
} else if reload == "auto" {
h.Buf.ReOpen()
} else if reload == "disabled" {
h.Buf.DisableReload()
} else {
InfoBar.Message("Invalid reload setting")
}
}

switch e := event.(type) {
Expand Down
18 changes: 18 additions & 0 deletions internal/config/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ var optionValidators = map[string]optionValidator{
"fileformat": validateLineEnding,
"encoding": validateEncoding,
"multiopen": validateMultiOpen,
"reload": validateReload,
}

func ReadSettings() error {
Expand Down Expand Up @@ -294,6 +295,7 @@ var defaultCommonSettings = map[string]interface{}{
"mkparents": false,
"permbackup": false,
"readonly": false,
"reload": "prompt",
"rmtrailingws": false,
"ruler": true,
"relativeruler": false,
Expand Down Expand Up @@ -526,3 +528,19 @@ func validateMultiOpen(option string, value interface{}) error {

return nil
}

func validateReload(option string, value interface{}) error {
val, ok := value.(string)

if !ok {
return errors.New("Expected string type for reload")
}

switch val {
case "prompt", "auto", "disabled":
default:
return errors.New(option + " must be 'prompt', 'auto' or 'disabled'")
}

return nil
}
5 changes: 5 additions & 0 deletions runtime/help/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,11 @@ Here are the available options:

default value: `false`

* `reload`: controls the reload behavior of the current buffer in case the file
has changed. The available options are `prompt`, `auto` & `disabled`.

default value: `prompt`

* `rmtrailingws`: micro will automatically trim trailing whitespaces at ends of
lines. Note: This setting overrides `keepautoindent`

Expand Down

0 comments on commit f7244d0

Please sign in to comment.