Skip to content

Commit df600ce

Browse files
committedApr 13, 2021
improve jupyter-qtconsole support: distinguish between incomplete and invalid inputs
1 parent a1c0fea commit df600ce

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed
 

‎go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/gopherdata/gophernotes
33
go 1.13
44

55
require (
6-
github.com/cosmos72/gomacro v0.0.0-20210316200708-0b986404ea46
6+
github.com/cosmos72/gomacro v0.0.0-20210413180755-590dbc3d0bcd
77
github.com/go-zeromq/zmq4 v0.9.0
88
github.com/gofrs/uuid v3.3.0+incompatible
99
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1

‎go.sum

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
github.com/cosmos72/gomacro v0.0.0-20210316200708-0b986404ea46 h1:OsccoDca2/mpwQBivqw4GA9DfZpbz8HYyZ+yba4c8t0=
2-
github.com/cosmos72/gomacro v0.0.0-20210316200708-0b986404ea46/go.mod h1:70Ia4ft7PpdHfiZoVU9yiSFfMqJNnbHINgQrG5G90MM=
1+
github.com/cosmos72/gomacro v0.0.0-20210413180755-590dbc3d0bcd h1:ocEDJBevsRo4DIpcfyjUIHQpwxga3KQYl8VTQYBxKSA=
2+
github.com/cosmos72/gomacro v0.0.0-20210413180755-590dbc3d0bcd/go.mod h1:3DM7MOSzfashFNCWmtoL2psorgFBc7jzDVf/sSBDZW4=
33
github.com/go-zeromq/goczmq/v4 v4.2.2 h1:HAJN+i+3NW55ijMJJhk7oWxHKXgAuSBkoFfvr8bYj4U=
44
github.com/go-zeromq/goczmq/v4 v4.2.2/go.mod h1:Sm/lxrfxP/Oxqs0tnHD6WAhwkWrx+S+1MRrKzcxoaYE=
55
github.com/go-zeromq/zmq4 v0.9.0 h1:aFkxnxJvYhXCrE7UhoRR6oP6wqanjkuO2nA0nMsnm0g=
66
github.com/go-zeromq/zmq4 v0.9.0/go.mod h1:hCJ0OxYnL3Y3erSLQ025VLGi/W63zJjvr9i17oU2P24=
77
github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84=
88
github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
99
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
10-
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
11-
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
12-
github.com/peterh/liner v1.2.0 h1:w/UPXyl5GfahFxcTOz2j9wCIHNI+pUPr2laqpojKNCg=
13-
github.com/peterh/liner v1.2.0/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
10+
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
11+
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
12+
github.com/peterh/liner v1.2.1 h1:O4BlKaq/LWu6VRWmol4ByWfzx6MfXc5Op5HETyIy5yg=
13+
github.com/peterh/liner v1.2.1/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
14+
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
15+
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
1416
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
1517
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
1618
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -26,12 +28,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
2628
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
2729
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2830
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
31+
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
32+
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2933
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
3034
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
3135
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
3236
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
33-
golang.org/x/tools v0.0.0-20201023150057-2f4fa188d925 h1:iGGR3nU1TUd+WTF17QPTTShBEDG66IKsDIDKtC4EseY=
34-
golang.org/x/tools v0.0.0-20201023150057-2f4fa188d925/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
37+
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
38+
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
3539
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3640
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3741
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=

‎kernel.go

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"bufio"
45
"context"
56
"encoding/json"
67
"errors"
@@ -375,10 +376,21 @@ func sendKernelInfo(receipt msgReceipt) error {
375376

376377
// checkComplete checks whether the `code` is complete or not.
377378
func checkComplete(code string, ir *interp.Interp) (status, indent string) {
378-
status, indent = "incomplete", ""
379+
status, indent = "unknown", ""
379380

380381
if len(code) == 0 {
381-
return
382+
return status, indent
383+
}
384+
readline := base.MakeBufReadline(bufio.NewReader(strings.NewReader(code)))
385+
for {
386+
_, _, err := base.ReadMultiline(readline, base.ReadOptions(0), "")
387+
if err == io.EOF {
388+
return "complete", indent
389+
} else if err == io.ErrUnexpectedEOF {
390+
return "incomplete", indent
391+
} else if err != nil {
392+
return "invalid", indent
393+
}
382394
}
383395

384396
var parser mp.Parser
@@ -387,10 +399,12 @@ func checkComplete(code string, ir *interp.Interp) (status, indent string) {
387399
parser.Init(g.Fileset, g.Filepath, g.Line, []byte(code))
388400

389401
_, err := parser.Parse()
390-
if err == nil {
402+
if err != nil {
403+
status = "incomplete"
404+
} else {
391405
status = "complete"
392406
}
393-
return
407+
return status, indent
394408
}
395409

396410
// handleIsCompleteRequest sends a is_complete_reply message.

0 commit comments

Comments
 (0)