Skip to content

Instantly share code, notes, and snippets.

@LCamel
Last active July 25, 2025 09:12
Show Gist options
  • Save LCamel/8d1cf08fc8cd725f51613904f7de52b6 to your computer and use it in GitHub Desktop.
Save LCamel/8d1cf08fc8cd725f51613904f7de52b6 to your computer and use it in GitHub Desktop.
editTexts 的 callback 中, 即便晚了 10 秒再去 readSource, 讀到的也是舊的. 但隨後的 didChange 去讀就能讀到新的.
Jul 25 16:53:05 json: decoding request
Jul 25 16:53:05 JSON content: {"filePath":"/workspaces/gcl-all/gcl-vscode/example/gcd.gcl"}
Jul 25 16:53:05 json: decoding succeeded
Jul 25 16:53:05 Reload handler >>>> /workspaces/gcl-all/gcl-vscode/example/gcd.gcl
Jul 25 16:53:05 load: start
Jul 25 16:53:05 ask file state ref
Jul 25 16:53:05 ask file state map
Jul 25 16:53:05 lookup file state map
Jul 25 16:53:05 found
Jul 25 16:53:05 readSource: version: 3
Jul 25 16:53:05 source read
Jul 25 16:53:05
Jul 25 16:53:05 ===================================================
Jul 25 16:53:05 con A, B : Int { A > 0 ∧ B > 0}
Jul 25 16:53:05 var gcd : Int -> Int -> Int
Jul 25 16:53:05 var x, y : Int
Jul 25 16:53:05
Jul 25 16:53:05 x, y := A, B
Jul 25 16:53:05
Jul 25 16:53:05 { gcd x y = gcd A B ∧ x > 0 ∧ y > 0,
Jul 25 16:53:05 bnd: x + y }
Jul 25 16:53:05 do x < y -> y := y - x
Jul 25 16:53:05 | x > y -> x := x - y
Jul 25 16:53:05 od
Jul 25 16:53:05 ?
Jul 25 16:53:05 { x = gcd A B }
Jul 25 16:53:05
Jul 25 16:53:05 ===================================================
Jul 25 16:53:05 source parsed
Jul 25 16:53:05 should dig holes
Jul 25 16:53:05 < DigHoles [/workspaces/gcl-all/gcl-vscode/example/gcd.gcl [192-193] 12:1-2]
Jul 25 16:53:05 load: end
Jul 25 16:53:05 Reload handler <<<< /workspaces/gcl-all/gcl-vscode/example/gcd.gcl
Jul 25 16:53:05 holes digged
Jul 25 16:53:15 load: start
Jul 25 16:53:15 ask file state ref
Jul 25 16:53:15 ask file state map
Jul 25 16:53:15 lookup file state map
Jul 25 16:53:15 found
Jul 25 16:53:15 readSource: version: 3
Jul 25 16:53:15 source read
Jul 25 16:53:15
Jul 25 16:53:15 ===================================================
Jul 25 16:53:15 con A, B : Int { A > 0 ∧ B > 0}
Jul 25 16:53:15 var gcd : Int -> Int -> Int
Jul 25 16:53:15 var x, y : Int
Jul 25 16:53:15
Jul 25 16:53:15 x, y := A, B
Jul 25 16:53:15
Jul 25 16:53:15 { gcd x y = gcd A B ∧ x > 0 ∧ y > 0,
Jul 25 16:53:15 bnd: x + y }
Jul 25 16:53:15 do x < y -> y := y - x
Jul 25 16:53:15 | x > y -> x := x - y
Jul 25 16:53:15 od
Jul 25 16:53:15 ?
Jul 25 16:53:15 { x = gcd A B }
Jul 25 16:53:15
Jul 25 16:53:15 ===================================================
Jul 25 16:53:15 source parsed
Jul 25 16:53:15 should dig holes
Jul 25 16:53:15 < DigHoles [/workspaces/gcl-all/gcl-vscode/example/gcd.gcl [192-193] 12:1-2]
Jul 25 16:53:15 load: end
Jul 25 16:53:15 STextDocumentDidChange start
Jul 25 16:53:15 readSource: version: 4
Jul 25 16:53:15 ======== >>>> OnDidChangeTextDocument: source ========
Jul 25 16:53:15 con A, B : Int { A > 0 ∧ B > 0}
Jul 25 16:53:15 var gcd : Int -> Int -> Int
Jul 25 16:53:15 var x, y : Int
Jul 25 16:53:15
Jul 25 16:53:15 x, y := A, B
Jul 25 16:53:15
Jul 25 16:53:15 { gcd x y = gcd A B ∧ x > 0 ∧ y > 0,
Jul 25 16:53:15 bnd: x + y }
Jul 25 16:53:15 do x < y -> y := y - x
Jul 25 16:53:15 | x > y -> x := x - y
Jul 25 16:53:15 od
Jul 25 16:53:15 [!
Jul 25 16:53:15
Jul 25 16:53:15 !]
Jul 25 16:53:15 { x = gcd A B }
Jul 25 16:53:15 ======== <<<< OnDidChangeTextDocument: source ========
Jul 25 16:53:15 ask file state ref
Jul 25 16:53:15 ask file state map
Jul 25 16:53:15 lookup file state map
Jul 25 16:53:15 found
Jul 25 16:53:15 ====== /workspaces/gcl-all/gcl-vscode/example/gcd.gcl ======
Jul 25 16:53:15
Jul 25 16:53:15 ask file state ref
Jul 25 16:53:15 ask file state map
Jul 25 16:53:15 lookup file state map
Jul 25 16:53:15 found
Jul 25 16:53:15 loaded
Jul 25 16:53:15 []
Jul 25 16:53:15 =======================
Jul 25 16:53:15 didChange: fileState modified
Jul 25 16:53:15 ask file state ref
Jul 25 16:53:15 ask file state map
Jul 25 16:53:15 lookup file state map
Jul 25 16:53:15 found
Jul 25 16:53:15 didChange: upate notification sent
Jul 25 16:53:15 STextDocumentDidChange end
Jul 25 16:53:15 semantic token: start
Jul 25 16:53:15 ask file state ref
Jul 25 16:53:15 ask file state map
Jul 25 16:53:15 lookup file state map
Jul 25 16:53:15 found
Jul 25 16:53:15 holes digged
Jul 25 16:53:25 load: start
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Jul 25 16:53:25 readSource: version: 4
Jul 25 16:53:25 source read
Jul 25 16:53:25
Jul 25 16:53:25 ===================================================
Jul 25 16:53:25 con A, B : Int { A > 0 ∧ B > 0}
Jul 25 16:53:25 var gcd : Int -> Int -> Int
Jul 25 16:53:25 var x, y : Int
Jul 25 16:53:25
Jul 25 16:53:25 x, y := A, B
Jul 25 16:53:25
Jul 25 16:53:25 { gcd x y = gcd A B ∧ x > 0 ∧ y > 0,
Jul 25 16:53:25 bnd: x + y }
Jul 25 16:53:25 do x < y -> y := y - x
Jul 25 16:53:25 | x > y -> x := x - y
Jul 25 16:53:25 od
Jul 25 16:53:25 [!
Jul 25 16:53:25
Jul 25 16:53:25 !]
Jul 25 16:53:25 { x = gcd A B }
Jul 25 16:53:25
Jul 25 16:53:25 ===================================================
Jul 25 16:53:25 source parsed
Jul 25 16:53:25 all holes digged
Jul 25 16:53:25 abstract program generated
Jul 25 16:53:25 program elaborated
Jul 25 16:53:25 fileState created
Jul 25 16:53:25 fileState updated
Jul 25 16:53:25 load: success
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Jul 25 16:53:25 load: update notification sent
Jul 25 16:53:25 load: end
Jul 25 16:53:25 STextDocumentDidChange start
Jul 25 16:53:25 readSource: version: 5
Jul 25 16:53:25 ======== >>>> OnDidChangeTextDocument: source ========
Jul 25 16:53:25 con A, B : Int { A > 0 ∧ B > 0}
Jul 25 16:53:25 var gcd : Int -> Int -> Int
Jul 25 16:53:25 var x, y : Int
Jul 25 16:53:25
Jul 25 16:53:25 x, y := A, B
Jul 25 16:53:25
Jul 25 16:53:25 { gcd x y = gcd A B ∧ x > 0 ∧ y > 0,
Jul 25 16:53:25 bnd: x + y }
Jul 25 16:53:25 do x < y -> y := y - x
Jul 25 16:53:25 | x > y -> x := x - y
Jul 25 16:53:25 od
Jul 25 16:53:25 [!
Jul 25 16:53:25
Jul 25 16:53:25 !]!
Jul 25 16:53:25
Jul 25 16:53:25 !]
Jul 25 16:53:25 { x = gcd A B }
Jul 25 16:53:25 ======== <<<< OnDidChangeTextDocument: source ========
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Jul 25 16:53:25 ====== /workspaces/gcl-all/gcl-vscode/example/gcd.gcl ======
Jul 25 16:53:25
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Jul 25 16:53:25 loaded
Jul 25 16:53:25 [(4,/workspaces/gcl-all/gcl-vscode/example/gcd.gcl [-1--1] 12:1-16:3)]
Jul 25 16:53:25 =======================
Jul 25 16:53:25 didChange: fileState modified
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Jul 25 16:53:25 didChange: upate notification sent
Jul 25 16:53:25 STextDocumentDidChange end
Jul 25 16:53:25 semantic token: start
Jul 25 16:53:25 ask file state ref
Jul 25 16:53:25 ask file state map
Jul 25 16:53:25 lookup file state map
Jul 25 16:53:25 found
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment