+// LoadHistory attempts to load user history from configDir/buffers/history
+// into the history map
+// The savehistory option must be on
+func (m *Messenger) LoadHistory() {
+ if GetGlobalOption("savehistory").(bool) {
+ file, err := os.Open(configDir + "/buffers/history")
+ var decodedMap map[string][]string
+ if err == nil {
+ decoder := gob.NewDecoder(file)
+ err = decoder.Decode(&decodedMap)
+ file.Close()
+ }
+
+ if err != nil {
+ m.Error("Error loading history:", err)
+ return
+ }
+
+ m.history = decodedMap
+ } else {
+ m.history = make(map[string][]string)
+ }
+}
+
+// SaveHistory saves the user's command history to configDir/buffers/history
+// only if the savehistory option is on
+func (m *Messenger) SaveHistory() {
+ if GetGlobalOption("savehistory").(bool) {
+ // Don't save history past 100
+ for k, v := range m.history {
+ if len(v) > 100 {
+ m.history[k] = v[0:100]
+ }
+ }
+
+ file, err := os.Create(configDir + "/buffers/history")
+ if err == nil {
+ encoder := gob.NewEncoder(file)
+
+ err = encoder.Encode(m.history)
+ if err != nil {
+ m.Error("Error saving history:", err)
+ return
+ }
+ file.Close()
+ }
+ }
+}
+