package action
import (
+ "errors"
+ "fmt"
+ "io/fs"
"regexp"
"runtime"
"strings"
h.SetView(v)
}
-// If the user has scrolled past the last line, ScrollAdjust can be used
-// to shift the view so that the last line is at the bottom
+// ScrollAdjust can be used to shift the view so that the last line is at the
+// bottom if the user has scrolled past the last line.
func (h *BufPane) ScrollAdjust() {
v := h.GetView()
end := h.SLocFromLoc(h.Buf.End())
func (h *BufPane) saveBufToFile(filename string, action string, callback func()) bool {
err := h.Buf.SaveAs(filename)
if err != nil {
- if strings.HasSuffix(err.Error(), "permission denied") {
+ if errors.Is(err, fs.ErrPermission) {
saveWithSudo := func() {
err = h.Buf.SaveAsWithSudo(filename)
if err != nil {
if h.Buf.Settings["autosu"].(bool) {
saveWithSudo()
} else {
- InfoBar.YNPrompt("Permission denied. Do you want to save this file using sudo? (y,n)", func(yes, canceled bool) {
- if yes && !canceled {
- saveWithSudo()
- h.completeAction(action)
- }
- })
+ InfoBar.YNPrompt(
+ fmt.Sprintf("Permission denied. Do you want to save this file using %s? (y,n)", config.GlobalSettings["sucmd"].(string)),
+ func(yes, canceled bool) {
+ if yes && !canceled {
+ saveWithSudo()
+ h.completeAction(action)
+ }
+ },
+ )
return false
}
} else {
return true
}
-// Copy the current line to the clipboard
+// CopyLine copies the current line to the clipboard
func (h *BufPane) CopyLine() bool {
if h.Cursor.HasSelection() {
return false
- } else {
- h.Cursor.SelectLine()
- h.Cursor.CopySelection(clipboard.ClipboardReg)
- h.freshClip = true
- InfoBar.Message("Copied line")
}
+ h.Cursor.SelectLine()
+ h.Cursor.CopySelection(clipboard.ClipboardReg)
+ h.freshClip = true
+ InfoBar.Message("Copied line")
+
h.Cursor.Deselect(true)
h.Relocate()
return true
h.Relocate()
return true
- } else {
- return h.CutLine()
}
+ return h.CutLine()
}
// DuplicateLine duplicates the current line or selection
}
var curmacro []interface{}
-var recording_macro bool
+var recordingMacro bool
// ToggleMacro toggles recording of a macro
func (h *BufPane) ToggleMacro() bool {
- recording_macro = !recording_macro
- if recording_macro {
+ recordingMacro = !recordingMacro
+ if recordingMacro {
curmacro = []interface{}{}
InfoBar.Message("Recording")
} else {
// PlayMacro plays back the most recently recorded macro
func (h *BufPane) PlayMacro() bool {
- if recording_macro {
+ if recordingMacro {
return false
}
for _, action := range curmacro {
func (h *BufPane) SpawnMultiCursorUp() bool {
if h.Cursor.Y == 0 {
return false
- } else {
- h.Cursor.GotoLoc(buffer.Loc{h.Cursor.X, h.Cursor.Y - 1})
- h.Cursor.Relocate()
}
+ h.Cursor.GotoLoc(buffer.Loc{h.Cursor.X, h.Cursor.Y - 1})
+ h.Cursor.Relocate()
c := buffer.NewCursor(h.Buf, buffer.Loc{h.Cursor.X, h.Cursor.Y + 1})
h.Buf.AddCursor(c)
func (h *BufPane) SpawnMultiCursorDown() bool {
if h.Cursor.Y+1 == h.Buf.LinesNum() {
return false
- } else {
- h.Cursor.GotoLoc(buffer.Loc{h.Cursor.X, h.Cursor.Y + 1})
- h.Cursor.Relocate()
}
+ h.Cursor.GotoLoc(buffer.Loc{h.Cursor.X, h.Cursor.Y + 1})
+ h.Cursor.Relocate()
c := buffer.NewCursor(h.Buf, buffer.Loc{h.Cursor.X, h.Cursor.Y - 1})
h.Buf.AddCursor(c)