github.com/aretext/aretext@v1.3.0/state/config.go (about) 1 package state 2 3 import "github.com/aretext/aretext/config" 4 5 // ToggleShowTabs shows or hides tab characters in the document. 6 func ToggleShowTabs(s *EditorState) { 7 toggleFlagAndSetStatus(s, &s.documentBuffer.showTabs, "Showing tabs", "Hiding tabs") 8 } 9 10 // ToggleShowSpaces shows or hides space characters in the document. 11 func ToggleShowSpaces(s *EditorState) { 12 toggleFlagAndSetStatus(s, &s.documentBuffer.showSpaces, "Showing spaces", "Hiding spaces") 13 } 14 15 // ToggleTabExpand toggles whether tabs should be expanded to spaces. 16 func ToggleTabExpand(s *EditorState) { 17 toggleFlagAndSetStatus(s, &s.documentBuffer.tabExpand, "Enabled tab expand", "Disabled tab expand") 18 } 19 20 // ToggleShowLineNumbers shows or hides line numbers in the left margin. 21 func ToggleShowLineNumbers(s *EditorState) { 22 toggleFlagAndSetStatus(s, &s.documentBuffer.showLineNum, "Showing line numbers", "Hiding line numbers") 23 } 24 25 // SetLineNumberMode sets the line number mode. 26 func SetLineNumberMode(s *EditorState, mode config.LineNumberMode) { 27 switch mode { 28 case config.LineNumberModeAbsolute: 29 s.documentBuffer.lineNumberMode = config.LineNumberModeAbsolute 30 SetStatusMsg(s, StatusMsg{ 31 Style: StatusMsgStyleSuccess, 32 Text: "Showing absolute line numbers", 33 }) 34 case config.LineNumberModeRelative: 35 s.documentBuffer.lineNumberMode = config.LineNumberModeRelative 36 SetStatusMsg(s, StatusMsg{ 37 Style: StatusMsgStyleSuccess, 38 Text: "Showing relative line numbers", 39 }) 40 default: 41 SetStatusMsg(s, StatusMsg{ 42 Style: StatusMsgStyleError, 43 Text: "Line number mode not supported: " + string(mode), 44 }) 45 } 46 } 47 48 // ToggleLineNumberMode toggles the line number mode between absolute and relative. 49 func ToggleLineNumberMode(s *EditorState) { 50 switch s.documentBuffer.lineNumberMode { 51 case config.LineNumberModeAbsolute: 52 SetLineNumberMode(s, config.LineNumberModeRelative) 53 SetStatusMsg(s, StatusMsg{ 54 Style: StatusMsgStyleSuccess, 55 Text: "Showing relative line numbers", 56 }) 57 case config.LineNumberModeRelative: 58 SetLineNumberMode(s, config.LineNumberModeAbsolute) 59 SetStatusMsg(s, StatusMsg{ 60 Style: StatusMsgStyleSuccess, 61 Text: "Hiding line numbers", 62 }) 63 } 64 } 65 66 // ToggleAutoIndent enables or disables auto-indent. 67 func ToggleAutoIndent(s *EditorState) { 68 toggleFlagAndSetStatus(s, &s.documentBuffer.autoIndent, "Enabled auto-indent", "Disabled auto-indent") 69 } 70 71 func toggleFlagAndSetStatus(s *EditorState, flagValue *bool, enabledMsg string, disabledMsg string) { 72 *flagValue = !(*flagValue) 73 74 var msg string 75 if *flagValue { 76 msg = enabledMsg 77 } else { 78 msg = disabledMsg 79 } 80 81 SetStatusMsg(s, StatusMsg{ 82 Style: StatusMsgStyleSuccess, 83 Text: msg, 84 }) 85 }