Conversation
7da78b5 to
5038a42
Compare
|
Very cool. What happens when loc spans more than one line? |
|
If a location spans more than one line, we're in the But that can be improved later. Similarly, we can add colors, etc 😃 . |
|
That would indeed be nice. I'll let you implement that at your spare time. |
|
Btw, a bit of a nit, but I think |
5038a42 to
f96966c
Compare
|
Right, that's what elm uses as well. I updated this. |
|
|
||
| let print ppf { start; stop } = | ||
| let file_line path n = | ||
| Io.with_file_in ~binary:false path |
There was a problem hiding this comment.
This should probably be binary:true as dune files are read in binary mode. It's the lexer which accepts both kinds of line endings.
There was a problem hiding this comment.
Actually it only matters for multi-line locations, which are currently not printed
There was a problem hiding this comment.
OK! I'll change that when implementing multi line highlights.
|
This looks nice indeed 👍 |
This is a simple implementation of an error printer that highlights the
error location with squiggly lines, for example:
File "dune", line 1, characters 14-21:
(copy_files %{read:x}/*)
^^^^^^
The message is not displayed in some cases, like if the file does not
exist, or if the location spans multiple lines.
Signed-off-by: Etienne Millon <me@emillon.org>
f96966c to
06bc3b1
Compare
CHANGES: - Ignore stderr output when trying to find out the number of jobs available (ocaml/dune#1118, fix ocaml/dune#1116, @diml) - Fix error message when the source directory of `copy_files` does not exist. (ocaml/dune#1120, fix ocaml/dune#1099, @emillon) - Highlight error locations in error messages (ocaml/dune#1121, @emillon) - Display actual stanza when package is ambiguous (ocaml/dune#1126, fix ocaml/dune#1123, @emillon) - Add `dune unstable-fmt` to format `dune` files. The interface and syntax are still subject to change, so use with caution. (ocaml/dune#1130, fix ocaml/dune#940, @emillon) - Improve error message for `dune utop` without a library name (ocaml/dune#1154, fix ocaml/dune#1149, @emillon) - Fix parsing `ocamllex` stanza in jbuild files (ocaml/dune#1150, @rgrinberg) - Highlight multi-line errors (ocaml/dune#1131, @anuragsoni) - Do no try to generate shared libraries when this is not supported by the OS (ocaml/dune#1165, fix ocaml/dune#1051, @diml) - Fix `Flags.write_{sexp,lines}` in configurator by avoiding the use of `Stdune.Path` (ocaml/dune#1175, fix ocaml/dune#1161, @rgrinberg) - Add support for `findlib.dynload`: when linking an executable using `findlib.dynload`, automatically record linked in libraries and findlib predicates (ocaml/dune#1172, @bobot) - Add support for promoting a selected list of files (ocaml/dune#1192, @diml) - Add an emacs mode providing helpers to promote correction files (ocaml/dune#1192, @diml) - Improve message suggesting to remove parentheses (ocaml/dune#1196, fix ocaml/dune#1173, @emillon) - Add `(wrapped (transition "..message.."))` as an option that will generate wrapped modules but keep unwrapped modules with a deprecation message to preserve compatibility. (ocaml/dune#1188, fix ocaml/dune#985, @rgrinberg) - Fix the flags passed to the ppx rewriter when using `staged_pps` (ocaml/dune#1218, @diml) - Add `(env var)` to add a dependency to an environment variable. (ocaml/dune#1186, @emillon) - Add a simple version of a polling mode: `dune build -w` keeps running and restarts the build when something change on the filesystem (ocaml/dune#1140, @kodek16) - Cleanup the way we detect the library search path. We no longer call `opam config var lib` in the default build context (ocaml/dune#1226, @diml) - Make test stanzas honor the -p flag. (ocaml/dune#1236, fix ocaml/dune#1231, @emillon) - Test stanzas take an optional (action) field to customize how they run (ocaml/dune#1248, ocaml/dune#1195, @emillon) - Add support for private modules via the `private_modules` field (ocaml/dune#1241, fix ocaml/dune#427, @rgrinberg) - Add support for passing arguments to the OCaml compiler via a response file when the list of arguments is too long (ocaml/dune#1256, @diml) - Do not print diffs by default when running inside dune (ocaml/dune#1260, @diml) - Interpret `$ dune build dir` as building the default alias in `dir`. (ocaml/dune#1259, @rgrinberg) - Make the `dynlink` library available without findlib installed (ocaml/dune#1270, fix ocaml/dune#1264, @rgrinberg)
This is a simple implementation of an error printer that highlights the error location with tildes, for example:
The message is not displayed in some cases, like if the file does not exist, or if the location spans multiple lines.