# 存檔即時重載

本頁說明 go-rest-client 如何監控 `.http` 檔並在存檔後重新載入請求清單。

## 觸發條件

啟動時以 `fsnotify` 監控命令列指定的檔案。收到 `fsnotify.Write` 或 `fsnotify.Create` 事件後啟動 200ms 計時器；計時期間再有事件就重設計時器，因此編輯器連續寫入只會觸發一次重載。`fsnotify.Remove`、`fsnotify.Rename`、`fsnotify.Chmod` 事件不觸發重載。

## 重載流程

| 階段 | 提示列 | 說明 |
|------|--------|------|
| 開始 | 黃色 `Edited at HH:MM:SS` | 計時器到期 |
| 解析 | — | 以 `ReadFile` 重新解析整個檔案 |
| 成功 | 綠色 `Reloaded at HH:MM:SS` | 清單更新，游標回到原本索引（新清單較短時停在第一項） |
| 失敗 | 紅色 `錯誤訊息 at HH:MM:SS` | 清單與資訊面板維持重載前的內容 |

游標是依**索引**還原，不是依請求名稱：在目前請求之前插入或刪除請求，游標會落在不同的請求上。

## 監控錯誤

`fsnotify` 回報的錯誤會以紅色 `Watch error: ...` 顯示在提示列，程式持續執行。

## 與編輯器的相容性

只處理 `fsnotify.Write`／`fsnotify.Create`，且監控的是單一檔案路徑。採「寫入暫存檔再改名覆蓋」的存檔方式時，原檔會收到 `fsnotify.Rename` 或 `fsnotify.Remove`，監控不會重新加入，之後的修改便不再觸發重載；遇到這種情況請重新啟動 `gorc`。詳見 [已知限制](/zh/known-limitations)。
