ocaml / merlin

Context sensitive completion for OCaml in Vim and Emacs
https://ocaml.github.io/merlin/
MIT License
1.58k stars 233 forks source link

Syntax extensions not recognised since 3.4.0 #1179

Closed Zzull closed 4 years ago

Zzull commented 4 years ago

Hello,

I have an issue with syntax extensions since I upgraded to 3.4.0. They do not seem to be recognised any more. I have a PKG lwt_ppx in my .merlin that has been working up until now but not since I upgraded. Do you have any idea?

Thank you for your dedicated work

trefis commented 4 years ago

Could be a bug in our brand new dot-merlin-reader. @voodoos would you mind having a look at that one?

voodoos commented 4 years ago

Hi @Zzull

I was not able to reproduce your issue. Could you provide more details on your setup ? Like the editor your using, the content of your .merlin and the exact behaviour you are observing ?

Also, could you run, from the directory containing the .merlin file, the command ocamlmerlin single dump-configuration -filename main.ml <main.ml | jq (where you replace main.ml by one of your source files) and copy the output ?

Some others opam-related possibilities:

Zzull commented 4 years ago

So, as a matter of fact, I can't reproduce it on my machine for reasons I don't grasp. But I asked a co-worker to install the new version of Merlin and he bumped into the same problem. To give you more information:

Here is our Merlin configuration:

PKG lwt_ppx
PKG eliom.server
PKG eliom.ppx.server
PKG ppx_deriving.show
PKG ppx_deriving.ord
PKG js_of_ocaml
PKG js_of_ocaml-ppx_deriving_json
PKG bs-aws
PKG re.pcre
PKG re.str
PKG ocsigen-toolkit.server
PKG base64
PKG syndic
PKG batteries
PKG ezjsonm
PKG x509
PKG mysql
PKG cohttp
PKG cohttp-lwt
PKG ppx_sexp_conv
PKG sexplib
PKG resource-pooling
PKG yojson
PKG camomile
PKG unix-sys-resource.unix
PKG uunf.string
PKG lambdasoup
PKG ocsigen-start.server
PKG pgocaml_ppx

FLG -ppx "ocsigen-i18n-rewriter --prefix 'Bs_' --suffix '_i18n' Bs_i18n"
FLG -w @A-4-7-9-29-37-38-39-41-42-44-45-48
FLG -open Bs_pervasives

SUFFIX .eliom .eliomi

S .

B _server

And here is the output of the command:

{
  "class": "return",
  "value": {
    "ocaml": {
      "include_dirs": [],
      "no_std_include": false,
      "unsafe": false,
      "classic": false,
      "principal": false,
      "real_paths": true,
      "recursive_types": false,
      "strict_sequence": false,
      "applicative_functors": true,
      "unsafe_string": false,
      "nopervasives": false,
      "strict_formats": false,
      "open_modules": [
        "Bs_pervasives"
      ],
      "ppx": [
        {
          "workdir": "/home/jan/besport/bs",
          "workval": "/home/jan/.opam/4.11.0/lib/pgocaml_ppx/./ppx.exe --as-ppx /home/jan/.opam/4.11.0/lib/ppx_deriving/./ppx_deriving package:ppx_deriving.show package:ppx_deriving.ord package:js_of_ocaml-ppx_deriving_json package:ppx_sexp_conv ppx_eliom_server /home/jan/.opam/4.11.0/lib/lwt_ppx/./ppx.exe --as-ppx"
        },
        {
          "workdir": "/home/jan/besport/bs",
          "workval": "ocsigen-i18n-rewriter --prefix 'Bs_' --suffix '_i18n' Bs_i18n"
        }
      ],
      "pp": null,
      "warnings": {
        "actives": [
          1,
          2,
          3,
          5,
          6,
          8,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          40,
          43,
          46,
          47,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67
        ],
        "warn_error": [
          1,
          2,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67
        ]
      }
    },
    "merlin": {
      "build_path": [
        "/home/jan/besport/bs/_server",
        "/home/jan/.opam/4.11.0/lib/bytes",
        "/home/jan/.opam/4.11.0/lib/result",
        "/home/jan/.opam/4.11.0/lib/seq",
        "/home/jan/.opam/4.11.0/lib/lwt",
        "/home/jan/.opam/4.11.0/lib/lwt_ppx",
        "/home/jan/.opam/4.11.0/lib/mmap",
        "/home/jan/.opam/4.11.0/lib/ocplib-endian",
        "/home/jan/.opam/4.11.0/lib/ocplib-endian/bigstring",
        "/home/jan/.opam/4.11.0/lib/lwt/unix",
        "/home/jan/.opam/4.11.0/lib/ssl",
        "/home/jan/.opam/4.11.0/lib/lwt_ssl",
        "/home/jan/.opam/4.11.0/lib/lwt_log/core",
        "/home/jan/.opam/4.11.0/lib/lwt_log",
        "/home/jan/.opam/4.11.0/lib/astring",
        "/home/jan/.opam/4.11.0/lib/stdlib-shims",
        "/home/jan/.opam/4.11.0/lib/fmt",
        "/home/jan/.opam/4.11.0/lib/domain-name",
        "/home/jan/.opam/4.11.0/lib/macaddr",
        "/home/jan/.opam/4.11.0/lib/ipaddr",
        "/home/jan/.opam/4.11.0/lib/netsys",
        "/home/jan/.opam/4.11.0/lib/netstring",
        "/home/jan/.opam/4.11.0/lib/pcre",
        "/home/jan/.opam/4.11.0/lib/netstring-pcre",
        "/home/jan/.opam/4.11.0/lib/findlib",
        "/home/jan/.opam/4.11.0/lib/zarith",
        "/home/jan/.opam/4.11.0/lib/cryptokit",
        "/home/jan/.opam/4.11.0/lib/re",
        "/home/jan/.opam/4.11.0/lib/uchar",
        "/home/jan/.opam/4.11.0/lib/uutf",
        "/home/jan/.opam/4.11.0/lib/tyxml/functor",
        "/home/jan/.opam/4.11.0/lib/tyxml",
        "/home/jan/.opam/4.11.0/lib/xml-light",
        "/home/jan/.opam/4.11.0/lib/ocsigenserver",
        "/home/jan/.opam/4.11.0/lib/ocsigenserver/extensions",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/runtime",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml/deriving",
        "/home/jan/.opam/4.11.0/lib/react",
        "/home/jan/.opam/4.11.0/lib/reactiveData",
        "/home/jan/.opam/4.11.0/lib/lwt_react",
        "/home/jan/.opam/4.11.0/lib/eliom/server",
        "/home/jan/.opam/4.11.0/lib/eliom/ppx",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/show",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/ord",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml-ppx_deriving_json",
        "/home/jan/.opam/4.11.0/lib/base64",
        "/home/jan/.opam/4.11.0/lib/base/base_internalhash_types",
        "/home/jan/.opam/4.11.0/lib/base/caml",
        "/home/jan/.opam/4.11.0/lib/base/shadow_stdlib",
        "/home/jan/.opam/4.11.0/lib/sexplib0",
        "/home/jan/.opam/4.11.0/lib/base",
        "/home/jan/.opam/4.11.0/lib/fieldslib",
        "/home/jan/.opam/4.11.0/lib/ppx_sexp_conv/runtime-lib",
        "/home/jan/.opam/4.11.0/lib/stringext",
        "/home/jan/.opam/4.11.0/lib/re/posix",
        "/home/jan/.opam/4.11.0/lib/uri",
        "/home/jan/.opam/4.11.0/lib/uri-sexp",
        "/home/jan/.opam/4.11.0/lib/cohttp",
        "/home/jan/.opam/4.11.0/lib/logs",
        "/home/jan/.opam/4.11.0/lib/cohttp-lwt",
        "/home/jan/.opam/4.11.0/lib/ipaddr-sexp",
        "/home/jan/.opam/4.11.0/lib/parsexp",
        "/home/jan/.opam/4.11.0/lib/sexplib",
        "/home/jan/.opam/4.11.0/lib/conduit",
        "/home/jan/.opam/4.11.0/lib/conduit-lwt",
        "/home/jan/.opam/4.11.0/lib/ipaddr/unix",
        "/home/jan/.opam/4.11.0/lib/uri/services",
        "/home/jan/.opam/4.11.0/lib/conduit-lwt-unix",
        "/home/jan/.opam/4.11.0/lib/magic-mime",
        "/home/jan/.opam/4.11.0/lib/cohttp-lwt-unix",
        "/home/jan/.opam/4.11.0/lib/xmlm",
        "/home/jan/.opam/4.11.0/lib/ezxmlm",
        "/home/jan/.opam/4.11.0/lib/easy-format",
        "/home/jan/.opam/4.11.0/lib/biniou",
        "/home/jan/.opam/4.11.0/lib/yojson",
        "/home/jan/.opam/4.11.0/lib/bs-aws",
        "/home/jan/.opam/4.11.0/lib/re/pcre",
        "/home/jan/.opam/4.11.0/lib/re/str",
        "/home/jan/.opam/4.11.0/lib/calendar",
        "/home/jan/.opam/4.11.0/lib/ocsigen-toolkit/server",
        "/home/jan/.opam/4.11.0/lib/syndic",
        "/home/jan/.opam/4.11.0/lib/ocaml",
        "/home/jan/.opam/4.11.0/lib/num",
        "/home/jan/.opam/4.11.0/lib/batteries",
        "/home/jan/.opam/4.11.0/lib/bigarray-compat",
        "/home/jan/.opam/4.11.0/lib/cstruct",
        "/home/jan/.opam/4.11.0/lib/hex",
        "/home/jan/.opam/4.11.0/lib/jsonm",
        "/home/jan/.opam/4.11.0/lib/ezjsonm",
        "/home/jan/.opam/4.11.0/lib/ptime",
        "/home/jan/.opam/4.11.0/lib/asn1-combinators",
        "/home/jan/.opam/4.11.0/lib/gmap",
        "/home/jan/.opam/4.11.0/lib/eqaf",
        "/home/jan/.opam/4.11.0/lib/eqaf/bigstring",
        "/home/jan/.opam/4.11.0/lib/eqaf/cstruct",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto-rng",
        "/home/jan/.opam/4.11.0/lib/rresult",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto-pk",
        "/home/jan/.opam/4.11.0/lib/x509",
        "/home/jan/.opam/4.11.0/lib/mysql",
        "/home/jan/.opam/4.11.0/lib/ppx_sexp_conv",
        "/home/jan/.opam/4.11.0/lib/resource-pooling",
        "/home/jan/.opam/4.11.0/lib/camomile/default_config",
        "/home/jan/.opam/4.11.0/lib/camomile/library",
        "/home/jan/.opam/4.11.0/lib/camomile/lib_default",
        "/home/jan/.opam/4.11.0/lib/camomile/dyn",
        "/home/jan/.opam/4.11.0/lib/camomile",
        "/home/jan/.opam/4.11.0/lib/integers",
        "/home/jan/.opam/4.11.0/lib/ctypes",
        "/home/jan/.opam/4.11.0/lib/unix-errno",
        "/home/jan/.opam/4.11.0/lib/unix-sys-resource",
        "/home/jan/.opam/4.11.0/lib/uunf",
        "/home/jan/.opam/4.11.0/lib/uunf/string",
        "/home/jan/.opam/4.11.0/lib/markup",
        "/home/jan/.opam/4.11.0/lib/lambdasoup",
        "/home/jan/.opam/4.11.0/lib/safepass",
        "/home/jan/.opam/4.11.0/lib/csv",
        "/home/jan/.opam/4.11.0/lib/pgocaml",
        "/home/jan/.opam/4.11.0/lib/pgocaml_ppx",
        "/home/jan/.opam/4.11.0/lib/ocsigen-start/server"
      ],
      "source_path": [
        "/home/jan/besport/bs",
        "/home/jan/.opam/4.11.0/lib/bytes",
        "/home/jan/.opam/4.11.0/lib/result",
        "/home/jan/.opam/4.11.0/lib/seq",
        "/home/jan/.opam/4.11.0/lib/lwt",
        "/home/jan/.opam/4.11.0/lib/lwt_ppx",
        "/home/jan/.opam/4.11.0/lib/mmap",
        "/home/jan/.opam/4.11.0/lib/ocplib-endian",
        "/home/jan/.opam/4.11.0/lib/ocplib-endian/bigstring",
        "/home/jan/.opam/4.11.0/lib/lwt/unix",
        "/home/jan/.opam/4.11.0/lib/ssl",
        "/home/jan/.opam/4.11.0/lib/lwt_ssl",
        "/home/jan/.opam/4.11.0/lib/lwt_log/core",
        "/home/jan/.opam/4.11.0/lib/lwt_log",
        "/home/jan/.opam/4.11.0/lib/astring",
        "/home/jan/.opam/4.11.0/lib/stdlib-shims",
        "/home/jan/.opam/4.11.0/lib/fmt",
        "/home/jan/.opam/4.11.0/lib/domain-name",
        "/home/jan/.opam/4.11.0/lib/macaddr",
        "/home/jan/.opam/4.11.0/lib/ipaddr",
        "/home/jan/.opam/4.11.0/lib/netsys",
        "/home/jan/.opam/4.11.0/lib/netstring",
        "/home/jan/.opam/4.11.0/lib/pcre",
        "/home/jan/.opam/4.11.0/lib/netstring-pcre",
        "/home/jan/.opam/4.11.0/lib/findlib",
        "/home/jan/.opam/4.11.0/lib/zarith",
        "/home/jan/.opam/4.11.0/lib/cryptokit",
        "/home/jan/.opam/4.11.0/lib/re",
        "/home/jan/.opam/4.11.0/lib/uchar",
        "/home/jan/.opam/4.11.0/lib/uutf",
        "/home/jan/.opam/4.11.0/lib/tyxml/functor",
        "/home/jan/.opam/4.11.0/lib/tyxml",
        "/home/jan/.opam/4.11.0/lib/xml-light",
        "/home/jan/.opam/4.11.0/lib/ocsigenserver",
        "/home/jan/.opam/4.11.0/lib/ocsigenserver/extensions",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/runtime",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml/deriving",
        "/home/jan/.opam/4.11.0/lib/react",
        "/home/jan/.opam/4.11.0/lib/reactiveData",
        "/home/jan/.opam/4.11.0/lib/lwt_react",
        "/home/jan/.opam/4.11.0/lib/eliom/server",
        "/home/jan/.opam/4.11.0/lib/eliom/ppx",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/show",
        "/home/jan/.opam/4.11.0/lib/ppx_deriving/ord",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml",
        "/home/jan/.opam/4.11.0/lib/js_of_ocaml-ppx_deriving_json",
        "/home/jan/.opam/4.11.0/lib/base64",
        "/home/jan/.opam/4.11.0/lib/base/base_internalhash_types",
        "/home/jan/.opam/4.11.0/lib/base/caml",
        "/home/jan/.opam/4.11.0/lib/base/shadow_stdlib",
        "/home/jan/.opam/4.11.0/lib/sexplib0",
        "/home/jan/.opam/4.11.0/lib/base",
        "/home/jan/.opam/4.11.0/lib/fieldslib",
        "/home/jan/.opam/4.11.0/lib/ppx_sexp_conv/runtime-lib",
        "/home/jan/.opam/4.11.0/lib/stringext",
        "/home/jan/.opam/4.11.0/lib/re/posix",
        "/home/jan/.opam/4.11.0/lib/uri",
        "/home/jan/.opam/4.11.0/lib/uri-sexp",
        "/home/jan/.opam/4.11.0/lib/cohttp",
        "/home/jan/.opam/4.11.0/lib/logs",
        "/home/jan/.opam/4.11.0/lib/cohttp-lwt",
        "/home/jan/.opam/4.11.0/lib/ipaddr-sexp",
        "/home/jan/.opam/4.11.0/lib/parsexp",
        "/home/jan/.opam/4.11.0/lib/sexplib",
        "/home/jan/.opam/4.11.0/lib/conduit",
        "/home/jan/.opam/4.11.0/lib/conduit-lwt",
        "/home/jan/.opam/4.11.0/lib/ipaddr/unix",
        "/home/jan/.opam/4.11.0/lib/uri/services",
        "/home/jan/.opam/4.11.0/lib/conduit-lwt-unix",
        "/home/jan/.opam/4.11.0/lib/magic-mime",
        "/home/jan/.opam/4.11.0/lib/cohttp-lwt-unix",
        "/home/jan/.opam/4.11.0/lib/xmlm",
        "/home/jan/.opam/4.11.0/lib/ezxmlm",
        "/home/jan/.opam/4.11.0/lib/easy-format",
        "/home/jan/.opam/4.11.0/lib/biniou",
        "/home/jan/.opam/4.11.0/lib/yojson",
        "/home/jan/.opam/4.11.0/lib/bs-aws",
        "/home/jan/.opam/4.11.0/lib/re/pcre",
        "/home/jan/.opam/4.11.0/lib/re/str",
        "/home/jan/.opam/4.11.0/lib/calendar",
        "/home/jan/.opam/4.11.0/lib/ocsigen-toolkit/server",
        "/home/jan/.opam/4.11.0/lib/syndic",
        "/home/jan/.opam/4.11.0/lib/ocaml",
        "/home/jan/.opam/4.11.0/lib/num",
        "/home/jan/.opam/4.11.0/lib/batteries",
        "/home/jan/.opam/4.11.0/lib/bigarray-compat",
        "/home/jan/.opam/4.11.0/lib/cstruct",
        "/home/jan/.opam/4.11.0/lib/hex",
        "/home/jan/.opam/4.11.0/lib/jsonm",
        "/home/jan/.opam/4.11.0/lib/ezjsonm",
        "/home/jan/.opam/4.11.0/lib/ptime",
        "/home/jan/.opam/4.11.0/lib/asn1-combinators",
        "/home/jan/.opam/4.11.0/lib/gmap",
        "/home/jan/.opam/4.11.0/lib/eqaf",
        "/home/jan/.opam/4.11.0/lib/eqaf/bigstring",
        "/home/jan/.opam/4.11.0/lib/eqaf/cstruct",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto-rng",
        "/home/jan/.opam/4.11.0/lib/rresult",
        "/home/jan/.opam/4.11.0/lib/mirage-crypto-pk",
        "/home/jan/.opam/4.11.0/lib/x509",
        "/home/jan/.opam/4.11.0/lib/mysql",
        "/home/jan/.opam/4.11.0/lib/ppx_sexp_conv",
        "/home/jan/.opam/4.11.0/lib/resource-pooling",
        "/home/jan/.opam/4.11.0/lib/camomile/default_config",
        "/home/jan/.opam/4.11.0/lib/camomile/library",
        "/home/jan/.opam/4.11.0/lib/camomile/lib_default",
        "/home/jan/.opam/4.11.0/lib/camomile/dyn",
        "/home/jan/.opam/4.11.0/lib/camomile",
        "/home/jan/.opam/4.11.0/lib/integers",
        "/home/jan/.opam/4.11.0/lib/ctypes",
        "/home/jan/.opam/4.11.0/lib/unix-errno",
        "/home/jan/.opam/4.11.0/lib/unix-sys-resource",
        "/home/jan/.opam/4.11.0/lib/uunf",
        "/home/jan/.opam/4.11.0/lib/uunf/string",
        "/home/jan/.opam/4.11.0/lib/markup",
        "/home/jan/.opam/4.11.0/lib/lambdasoup",
        "/home/jan/.opam/4.11.0/lib/safepass",
        "/home/jan/.opam/4.11.0/lib/csv",
        "/home/jan/.opam/4.11.0/lib/pgocaml",
        "/home/jan/.opam/4.11.0/lib/pgocaml_ppx",
        "/home/jan/.opam/4.11.0/lib/ocsigen-start/server"
      ],
      "cmi_path": [],
      "cmt_path": [],
      "flags_applied": [
        {
          "workdir": "/home/jan/besport/bs",
          "workval": [
            "-ppx",
            "ocsigen-i18n-rewriter --prefix 'Bs_' --suffix '_i18n' Bs_i18n"
          ]
        },
        {
          "workdir": "/home/jan/besport/bs",
          "workval": [
            "-w",
            "@A-4-7-9-29-37-38-39-41-42-44-45-48"
          ]
        },
        {
          "workdir": "/home/jan/besport/bs",
          "workval": [
            "-open",
            "Bs_pervasives"
          ]
        },
        {
          "workdir": "/home/jan/besport/bs",
          "workval": [
            "-ppx",
            "/home/jan/.opam/4.11.0/lib/pgocaml_ppx/./ppx.exe --as-ppx /home/jan/.opam/4.11.0/lib/ppx_deriving/./ppx_deriving package:ppx_deriving.show package:ppx_deriving.ord package:js_of_ocaml-ppx_deriving_json package:ppx_sexp_conv ppx_eliom_server /home/jan/.opam/4.11.0/lib/lwt_ppx/./ppx.exe --as-ppx"
          ]
        }
      ],
      "extensions": [],
      "suffixes": [
        {
          "impl": ".eliom",
          "intf": ".eliomi"
        },
        {
          "impl": ".ml",
          "intf": ".mli"
        },
        {
          "impl": ".re",
          "intf": ".rei"
        }
      ],
      "stdlib": null,
      "reader": [],
      "protocol": "json",
      "log_file": null,
      "log_sections": [],
      "flags_to_apply": [],
      "failures": [],
      "assoc_suffixes": [
        {
          "extension": ".re",
          "reader": "reason"
        },
        {
          "extension": ".rei",
          "reader": "reason"
        }
      ]
    },
    "query": {
      "filename": "bs_image.eliom",
      "directory": "/home/jan/besport/bs",
      "printer_width": 0,
      "verbosity": 0
    }
  },
  "notifications": [],
  "timing": {
    "clock": 90,
    "cpu": 68,
    "query": 2,
    "pp": 0,
    "reader": 21,
    "ppx": 45,
    "typer": 0,
    "error": 0
  }
}

Note that running this command also returned the following which is probably valuable:

ppx.exe: invalid argument "/home/jan/.opam/4.11.0/lib/ppx_deriving/./ppx_deriving".
ppx.exe [options] <input ast file> <output ast file>
  --cookie NAME=EXPR Set the cookie NAME to EXPR
  -help  Display this list of options
  --help  Display this list of options

Hope this helps

voodoos commented 4 years ago

@Zzull I just proposed a fix in PR #1181 However my setup is much less complicated than yours.

It would be great if you found the time to test it before merging !

All you have to to is pin both merlin and dot-merlin-reader: opam pin add dot-merlin-reader.3.4.0 https://github.com/voodoos/merlin.git#issue1179 opam pin add merlin.3.4.0 https://github.com/voodoos/merlin.git#issue1179

Zzull commented 4 years ago

It seems to have fixed it. Thanks