diff --git a/src/lsp/superbol_free_lib/command_indent_file.ml b/src/lsp/superbol_free_lib/command_indent_file.ml index d512d3c9e..c6785027e 100644 --- a/src/lsp/superbol_free_lib/command_indent_file.ml +++ b/src/lsp/superbol_free_lib/command_indent_file.ml @@ -19,14 +19,14 @@ open Common_args let action { preproc_options = { source_format; config; _ } ; _ } files = let module Config = (val config) in - let project = Project_config.load_project () in - let indent_config = Some (Cobol_indent.config project.config.indent_config) in List.to_seq files - |> Seq.map (fun file -> - let contents = Ez_file.V1.EzFile.read_file file in - indent_range_str - ~source_format ~filename:file ~contents ~indent_config ~range:None - ~dialect:Config.dialect |> Fmt.pr "%s") + |> Seq.map (fun filename -> + let project = Project.for_ ~filename in + let contents = Ez_file.V1.EzFile.read_file filename in + indent_range_str + ~source_format ~filename ~contents ~range:None + ~indent_config:(Some (Cobol_indent.config project.config.indent_config)) + ~dialect:Config.dialect |> Fmt.pr "%s") let cmd = let files = ref [] in diff --git a/src/lsp/superbol_free_lib/command_indent_range.ml b/src/lsp/superbol_free_lib/command_indent_range.ml index 38ddf6445..caeb2b076 100644 --- a/src/lsp/superbol_free_lib/command_indent_range.ml +++ b/src/lsp/superbol_free_lib/command_indent_range.ml @@ -18,13 +18,13 @@ open Cobol_indent open Common_args let action - { preproc_options = { source_format; config; _ }; _ } ~file ~range + { preproc_options = { source_format; config; _ }; _ } ~filename ~range = let module Config = (val config) in - let project = Project_config.load_project () in + let project = Project.for_ ~filename in let indent_config = Some (Cobol_indent.config project.config.indent_config) in - let contents = Ez_file.V1.EzFile.read_file file in - indent_range_str ~source_format ~filename:file ~contents ~range ~indent_config + let contents = Ez_file.V1.EzFile.read_file filename in + indent_range_str ~source_format ~filename ~contents ~range ~indent_config ~dialect:Config.dialect |> Fmt.pr "%s" let cmd = @@ -50,7 +50,7 @@ let cmd = let common = common () in action common - ~file:!file + ~filename:!file ~range:(range start_line end_line) ) ~args diff --git a/src/lsp/superbol_free_lib/command_json_vscode.ml b/src/lsp/superbol_free_lib/command_json_vscode.ml index 9fe9408cf..24f2291a9 100644 --- a/src/lsp/superbol_free_lib/command_json_vscode.ml +++ b/src/lsp/superbol_free_lib/command_json_vscode.ml @@ -78,7 +78,7 @@ let cmd = List.iter parse files | Some file, [] -> Vscode_json.Main.write_file file - Vscode_json.Manifest.vscode_enc Project.manifest + Vscode_json.Manifest.vscode_enc VSCode_extension.manifest | Some _, _ -> Printf.eprintf "Actions --gen TARGET and parse files are exclusive\n%!"; diff --git a/src/lsp/superbol_free_lib/command_lsp.ml b/src/lsp/superbol_free_lib/command_lsp.ml index 9ccd5546c..8623ae1b3 100644 --- a/src/lsp/superbol_free_lib/command_lsp.ml +++ b/src/lsp/superbol_free_lib/command_lsp.ml @@ -14,7 +14,7 @@ open Ezcmd.V2 let lsp_config = - Cobol_lsp.config ~project_layout:Project_config.layout + Cobol_lsp.config ~project_layout:Project.layout let run_lsp () = match Cobol_lsp.run ~config:lsp_config with diff --git a/src/lsp/superbol_free_lib/command_project.ml b/src/lsp/superbol_free_lib/command_project.ml index 7500badd0..71e805aa4 100644 --- a/src/lsp/superbol_free_lib/command_project.ml +++ b/src/lsp/superbol_free_lib/command_project.ml @@ -17,7 +17,7 @@ open EZCMD.TYPES let config_cmd = let dirname = ref None in let action () = - let project = Project_config.load_project ?dirname:!dirname () in + let project = Project.load ?dirname:!dirname () in Pretty.out "%s@." (Ez_toml.V1.TOML.string_of_node (Ezr_toml.toml project.config.toml_handle)) @@ -44,7 +44,7 @@ let init_cmd = "project init" (fun () -> Superbol_project.save_config @@ - Project_config.load_project ?dirname:!dirname ()) + Project.load ?dirname:!dirname ()) ~args:[ [], Arg.Anon (0, fun s -> dirname := Some s), EZCMD.info ~docv:"DIR" "Project directory"; diff --git a/src/lsp/superbol_free_lib/project.ml b/src/lsp/superbol_free_lib/project.ml index a201bee50..8288a0aee 100644 --- a/src/lsp/superbol_free_lib/project.ml +++ b/src/lsp/superbol_free_lib/project.ml @@ -2,249 +2,55 @@ (* *) (* SuperBOL OSS Studio *) (* *) +(* Copyright (c) 2022-2023 OCamlPro SAS *) (* *) -(* Copyright (c) 2023 OCamlPro SAS *) -(* *) -(* All rights reserved. *) -(* This source code is licensed under the MIT license found in the *) -(* LICENSE.md file in the root directory of this source tree. *) -(* *) +(* All rights reserved. *) +(* This source code is licensed under the GNU Affero General Public *) +(* License version 3 found in the LICENSE.md file in the root directory *) +(* of this source tree. *) (* *) (**************************************************************************) -open Vscode_json -open Manifest - -let vscode_engine = "1.64.0" - - -let marketplace = Manifest.marketplace - "ocamlpro" - ~categories: [ - "Formatters" ; - "Programming Languages" ; - "Linters" ; - "Snippets" ; - "Other" - ] - -let package = - Manifest.package - "superbol" - ~displayName: "Superbol Studio OSS" - ~description: "Provides a COBOL mode in VSCode, based on SuperBOL Language Server Protocol for COBOL" - ~license: "MIT" - ~version: "0.1.0" - ~repository: { - type_ = Some "git" ; - url = "https://github.com/OCamlPro/superbol-studio-oss" - } - ~homepage: "https://get-superbol.com" - ~author: { - author_name = "SuperBOL at OCamlPro" ; - author_email = Some "contact@ocamlpro.com" - } - ~keywords: [ "cobol" ; "gnucobol" ] - ~main: "./_dist/superbol_vscode_platform.bc.js" - ~scripts: [ - "compile", - "make compile" ; - - "release", - "make release" ; +open Ez_file.V1 - "package" , - "vsce package --out superbol-vscode-platform.vsix --yarn" ; +module DIAGS = Cobol_common.Diagnostics - "deploy:vsce" , - "vsce publish --packagePath superbol-vscode-platform.vsix --yarn" ; - - "deploy:ovsx" , - "ovsx publish --yarn" - ] - ~dependencies: [ - "@vscode/debugadapter", "^1.61.0" ; - "@vscode/debugprotocol", "^1.61.0" ; - "polka" , "^1.0.0-next.22" ; - "sirv" , "^2.0.2" ; - "vscode-languageclient" , "8.0.2" - ] - ~devDependencies: [ - "@types/vscode" , vscode_engine ; - "esbuild" , "0.15.16" ; - "fs-extra" , "10.0.1" ; - "mocha" , "9.2.2" ; - "npm-run-all" , "4.1.5" ; - "ovsx" , "0.1.0-next.97d460c" ; - "prettier" , "^2.5.1" ; - "vsce" , "^2.15.0" ; - "vscode-test" , "1.6.1" - ] - -let contributes = - Manifest.contributes () - ~languages: [ - Manifest.language "cobol" - ~aliases: [ "COBOL" ] - ~filenamePatterns: [ "*.cbl"; "*.cob" ] - ] - ~debuggers: [ - Manifest.debugger "cobol" - ~label:"GnuCOBOL Debugger" - ~languages: [ "cobol" ] - ~program: "gdb" - (* TODO unsupported ??? - "args": [ - "--init-eval-command=\"source /usr/local/bin/cobcd.py\"" - ], - *) - ~configurationAttributes: - (Manifest.any - {| { - "launch": { - "type": "cobol", - "required": [ - "program" - ], - "properties": { - "program": { - "type": "string", - "default": "${workspaceFolder}/a.out" - } - } - } -} - |} - ) - ~configurationSnippets: - [ - Manifest.any - {| -{ - "label": "Debug COBOL", - "description": "New COBOL debugging configuration", - "body": { - "type": "cobol", - "request": "launch", - "name": "${2:Launch Program}", - "program": "${workspaceFolder}/${1:Program}" +let layout = + Superbol_project.{ + project_config_filename = "superbol.toml"; + relative_work_dirname = "_superbol"; } -} - |} - ] - ] - ~breakpoints: [ Manifest.breakpoint "COBOL" ] - ~configuration: - ( Manifest.configuration ~title:"Superbol COBOL" - [ - Manifest.PROPERTY.bool - "superbol.globalFormatTakesSelection" - ~default:false - ~description: - "If something is selected, only format the selection" ; - - Manifest.PROPERTY.string "superbol.path" - ~default:"superbol-free" - ~description: - "Name of the `superbol` executable if available in PATH; \ - otherwise may be an absolute path." - ] ) - ~taskDefinitions: [ - Manifest.taskDefinition - "superbol" - ~properties: [ - Manifest.PROPERTY.array "copybooks" - ~description:"The list of copybooks paths" ; - - Manifest.PROPERTY.enum "sourceFormat" - ~cases:Cobol_config.DIALECT.all_canonical_names - ~description: "The source format of the code" - ; - - Manifest.PROPERTY.string "dialect" - ~description: "The COBOL dialect used" ; - - Manifest.PROPERTY.bool "forDebugging" - ~description: "Build for debugging" ; - - Manifest.PROPERTY.array "extensions" - ~description: "Add cobol file extensions" - ] - ] - ~problemPatterns:[ - Manifest.problemPattern - (Some "^(.*): ?(\\d+): (error|warning): ([^[]*)(\\[(.*)\\])?$") - ~name:"gnucobol" - ~file:1 - ~line:2 - ~severity:3 - ~message:4 - ~code:6; - Manifest.problemPattern - (Some "^(.*):(\\d+):\\s?(warning|Warnung|[wW]aarschuwing|[aA]lerta|avertissement|упозорење)\\s?:([^[]*)(\\[(.*)\\])?$") - ~name:"gnucobol-warning" - ~file:1 - ~line:2 - ~message:4 - ~code:6; - Manifest.problemPattern - (Some "^(.*): ?(\\d+):\\s?(error|Fehler|[fF]out|[eE]rrores|[eE]rrores|erreur|грешка)\\s?:\\s?([^[]*)(\\[(.*)\\])?$") - ~name:"gnucobol-error" - ~file:1 - ~line:2 - ~message:4 - ~code:6; - Manifest.problemPattern - (Some "^(.*): ?(\\d+): (note|Anmerkung|[nN]ota): ([^[]*)(\\[(.*)\\])?$") - ~name:"gnucobol-note" - ~file:1 - ~line:2 - ~message:4 - ~code:6; - ] - ~problemMatchers:[ - Manifest.problemMatcher () - ~name:"gnucobol" - ~owner:"cobol" - ~fileLocation:["absolute"] - ~pattern:[Manifest.ProblemName "$gnucobol"] - ~source:"GnuCOBOL"; - Manifest.problemMatcher () - ~name:"gnucobol-warning" - ~owner:"cobol" - ~fileLocation:["absolute"] - ~pattern:[Manifest.ProblemName "$gnucobol-warning"] - ~severity:"warning" - ~source:"GnuCOBOL"; - Manifest.problemMatcher () - ~name:"gnucobol-error" - ~owner:"cobol" - ~fileLocation:["absolute"] - ~pattern:[Manifest.ProblemName "$gnucobol-error"] - ~severity:"error" - ~source:"GnuCOBOL"; - Manifest.problemMatcher () - ~name:"gnucobol-note" - ~owner:"cobol" - ~fileLocation:["absolute"] - ~pattern:[Manifest.ProblemName "$gnucobol-note"] - ~severity:"info" - ~source:"GnuCOBOL"; - ] - ~commands:[ - Manifest.command () - ~command:"superbol.server.restart" - ~title:"Restart Language Server" - ~category:"Superbol" - ] -let manifest = - Manifest.vscode - package - ~marketplace - ~engines: ( "^" ^ vscode_engine ) - ~activationEvents: [ - "onLanguage:cobol" ; - "onDebug" - ] - ~contributes +let try_load ~f arg = + try f arg with + | Superbol_project.Config.ERROR e -> + DIAGS.(pp Fmt.stderr @@ One.error "%a" + Superbol_project.Diagnostics.pp_error e); + exit 2 + | Sys_error msg | Invalid_argument msg -> + DIAGS.(pp Fmt.stderr @@ One.error "%s" msg); + exit 2 + +(* Direct loading (based on directory name) *) + +let in_ ~dirname = + Pretty.error "Loading project in `%s'@." dirname; + try_load () ~f:begin fun () -> + let rootdir = Superbol_project.rootdir_at ~dirname in + let project = Superbol_project.for_ ~rootdir ~layout in + DIAGS.show_n_forget project + end + +let load ?(dirname = EzFile.current_dir_name) () = in_ ~dirname + +(* Indirect loading (based on file name, looking up the directory hierarchy) *) + +let for_ ~filename = + Pretty.error "Looking up project for `%s'@." filename; + try_load () ~f:begin fun () -> + let rootdir = Superbol_project.rootdir_for ~filename ~layout in + let project = Superbol_project.for_ ~rootdir ~layout in + DIAGS.show_n_forget project + end + +let for_filename filename = for_ ~filename diff --git a/src/lsp/superbol_free_lib/project.mli b/src/lsp/superbol_free_lib/project.mli index 88a911e1d..510e694d2 100644 --- a/src/lsp/superbol_free_lib/project.mli +++ b/src/lsp/superbol_free_lib/project.mli @@ -2,14 +2,42 @@ (* *) (* SuperBOL OSS Studio *) (* *) +(* Copyright (c) 2022-2023 OCamlPro SAS *) (* *) -(* Copyright (c) 2023 OCamlPro SAS *) -(* *) -(* All rights reserved. *) -(* This source code is licensed under the MIT license found in the *) -(* LICENSE.md file in the root directory of this source tree. *) -(* *) +(* All rights reserved. *) +(* This source code is licensed under the GNU Affero General Public *) +(* License version 3 found in the LICENSE.md file in the root directory *) +(* of this source tree. *) (* *) (**************************************************************************) -val manifest : Vscode_json.Manifest.vscode +val layout: Superbol_project.layout +(** Layout of projects managed via the CLI. *) + +(** {1 Loading} + + Functions for loading projects. They report diagnostics and exit the + program upon error (invalid configuration file or system error). + + Note: No file is ever written by these procedures, even in the case of + project creation. *) + +(** {2 Direct (using the intended root directory)} *) + +(** [in_ ~dirname] loads or creates a project with root directory [dirname]. *) +val in_: dirname: string -> Superbol_project.t + +(** [load ~dirname ()] is an alias for [in_ ~dirname], and [load ()] is + equivalent to [in_ ~dirname:"."]. *) +val load: ?dirname: string -> unit -> Superbol_project.t + +(** {2 Indirect (using a regular file)} *) + +(** [for_ ~filename] searches the parent directories of [filename] until a + project directory, that contains a ["superbol.toml"] configuration file, is + found. If none is found, returns a project with a default configuration and + [Filename.dirname filename] as root directory. *) +val for_: filename: string -> Superbol_project.t + +(** [for_filename filename] is an alias for [for_ ~filename]. *) +val for_filename: string -> Superbol_project.t diff --git a/src/lsp/superbol_free_lib/project_config.ml b/src/lsp/superbol_free_lib/project_config.ml deleted file mode 100644 index b9a464b01..000000000 --- a/src/lsp/superbol_free_lib/project_config.ml +++ /dev/null @@ -1,37 +0,0 @@ -(**************************************************************************) -(* *) -(* SuperBOL OSS Studio *) -(* *) -(* Copyright (c) 2022-2023 OCamlPro SAS *) -(* *) -(* All rights reserved. *) -(* This source code is licensed under the GNU Affero General Public *) -(* License version 3 found in the LICENSE.md file in the root directory *) -(* of this source tree. *) -(* *) -(**************************************************************************) - -open Ez_file.V1 - -module DIAGS = Cobol_common.Diagnostics - -let layout = - Superbol_project.{ - project_config_filename = "superbol.toml"; - relative_work_dirname = "_superbol"; - } - -let load_project ?(dirname = EzFile.current_dir_name) () = - Pretty.error "Loading project in `%s'@." dirname; - try - let rootdir = Superbol_project.rootdir_at ~dirname in - let project = Superbol_project.for_ ~rootdir ~layout in - DIAGS.show_n_forget project - with - | Superbol_project.Config.ERROR e -> - DIAGS.(pp Fmt.stderr @@ One.error "%a" - Superbol_project.Diagnostics.pp_error e); - exit 2 - | Sys_error msg | Invalid_argument msg -> - DIAGS.(pp Fmt.stderr @@ One.error "%s" msg); - exit 2 diff --git a/src/lsp/superbol_free_lib/vSCode_extension.ml b/src/lsp/superbol_free_lib/vSCode_extension.ml new file mode 100644 index 000000000..a201bee50 --- /dev/null +++ b/src/lsp/superbol_free_lib/vSCode_extension.ml @@ -0,0 +1,250 @@ +(**************************************************************************) +(* *) +(* SuperBOL OSS Studio *) +(* *) +(* *) +(* Copyright (c) 2023 OCamlPro SAS *) +(* *) +(* All rights reserved. *) +(* This source code is licensed under the MIT license found in the *) +(* LICENSE.md file in the root directory of this source tree. *) +(* *) +(* *) +(**************************************************************************) + +open Vscode_json +open Manifest + +let vscode_engine = "1.64.0" + + +let marketplace = Manifest.marketplace + "ocamlpro" + ~categories: [ + "Formatters" ; + "Programming Languages" ; + "Linters" ; + "Snippets" ; + "Other" + ] + +let package = + Manifest.package + "superbol" + ~displayName: "Superbol Studio OSS" + ~description: "Provides a COBOL mode in VSCode, based on SuperBOL Language Server Protocol for COBOL" + ~license: "MIT" + ~version: "0.1.0" + ~repository: { + type_ = Some "git" ; + url = "https://github.com/OCamlPro/superbol-studio-oss" + } + ~homepage: "https://get-superbol.com" + ~author: { + author_name = "SuperBOL at OCamlPro" ; + author_email = Some "contact@ocamlpro.com" + } + ~keywords: [ "cobol" ; "gnucobol" ] + ~main: "./_dist/superbol_vscode_platform.bc.js" + ~scripts: [ + "compile", + "make compile" ; + + "release", + "make release" ; + + "package" , + "vsce package --out superbol-vscode-platform.vsix --yarn" ; + + "deploy:vsce" , + "vsce publish --packagePath superbol-vscode-platform.vsix --yarn" ; + + "deploy:ovsx" , + "ovsx publish --yarn" + ] + ~dependencies: [ + "@vscode/debugadapter", "^1.61.0" ; + "@vscode/debugprotocol", "^1.61.0" ; + "polka" , "^1.0.0-next.22" ; + "sirv" , "^2.0.2" ; + "vscode-languageclient" , "8.0.2" + ] + ~devDependencies: [ + "@types/vscode" , vscode_engine ; + "esbuild" , "0.15.16" ; + "fs-extra" , "10.0.1" ; + "mocha" , "9.2.2" ; + "npm-run-all" , "4.1.5" ; + "ovsx" , "0.1.0-next.97d460c" ; + "prettier" , "^2.5.1" ; + "vsce" , "^2.15.0" ; + "vscode-test" , "1.6.1" + ] + +let contributes = + Manifest.contributes () + ~languages: [ + Manifest.language "cobol" + ~aliases: [ "COBOL" ] + ~filenamePatterns: [ "*.cbl"; "*.cob" ] + ] + ~debuggers: [ + Manifest.debugger "cobol" + ~label:"GnuCOBOL Debugger" + ~languages: [ "cobol" ] + ~program: "gdb" + (* TODO unsupported ??? + "args": [ + "--init-eval-command=\"source /usr/local/bin/cobcd.py\"" + ], + *) + ~configurationAttributes: + (Manifest.any + {| { + "launch": { + "type": "cobol", + "required": [ + "program" + ], + "properties": { + "program": { + "type": "string", + "default": "${workspaceFolder}/a.out" + } + } + } +} + |} + ) + ~configurationSnippets: + [ + Manifest.any + {| +{ + "label": "Debug COBOL", + "description": "New COBOL debugging configuration", + "body": { + "type": "cobol", + "request": "launch", + "name": "${2:Launch Program}", + "program": "${workspaceFolder}/${1:Program}" + } +} + |} + ] + ] + ~breakpoints: [ Manifest.breakpoint "COBOL" ] + ~configuration: + ( Manifest.configuration ~title:"Superbol COBOL" + [ + Manifest.PROPERTY.bool + "superbol.globalFormatTakesSelection" + ~default:false + ~description: + "If something is selected, only format the selection" ; + + Manifest.PROPERTY.string "superbol.path" + ~default:"superbol-free" + ~description: + "Name of the `superbol` executable if available in PATH; \ + otherwise may be an absolute path." + ] ) + ~taskDefinitions: [ + Manifest.taskDefinition + "superbol" + ~properties: [ + Manifest.PROPERTY.array "copybooks" + ~description:"The list of copybooks paths" ; + + Manifest.PROPERTY.enum "sourceFormat" + ~cases:Cobol_config.DIALECT.all_canonical_names + ~description: "The source format of the code" + ; + + Manifest.PROPERTY.string "dialect" + ~description: "The COBOL dialect used" ; + + Manifest.PROPERTY.bool "forDebugging" + ~description: "Build for debugging" ; + + Manifest.PROPERTY.array "extensions" + ~description: "Add cobol file extensions" + ] + ] + ~problemPatterns:[ + Manifest.problemPattern + (Some "^(.*): ?(\\d+): (error|warning): ([^[]*)(\\[(.*)\\])?$") + ~name:"gnucobol" + ~file:1 + ~line:2 + ~severity:3 + ~message:4 + ~code:6; + Manifest.problemPattern + (Some "^(.*):(\\d+):\\s?(warning|Warnung|[wW]aarschuwing|[aA]lerta|avertissement|упозорење)\\s?:([^[]*)(\\[(.*)\\])?$") + ~name:"gnucobol-warning" + ~file:1 + ~line:2 + ~message:4 + ~code:6; + Manifest.problemPattern + (Some "^(.*): ?(\\d+):\\s?(error|Fehler|[fF]out|[eE]rrores|[eE]rrores|erreur|грешка)\\s?:\\s?([^[]*)(\\[(.*)\\])?$") + ~name:"gnucobol-error" + ~file:1 + ~line:2 + ~message:4 + ~code:6; + Manifest.problemPattern + (Some "^(.*): ?(\\d+): (note|Anmerkung|[nN]ota): ([^[]*)(\\[(.*)\\])?$") + ~name:"gnucobol-note" + ~file:1 + ~line:2 + ~message:4 + ~code:6; + ] + ~problemMatchers:[ + Manifest.problemMatcher () + ~name:"gnucobol" + ~owner:"cobol" + ~fileLocation:["absolute"] + ~pattern:[Manifest.ProblemName "$gnucobol"] + ~source:"GnuCOBOL"; + Manifest.problemMatcher () + ~name:"gnucobol-warning" + ~owner:"cobol" + ~fileLocation:["absolute"] + ~pattern:[Manifest.ProblemName "$gnucobol-warning"] + ~severity:"warning" + ~source:"GnuCOBOL"; + Manifest.problemMatcher () + ~name:"gnucobol-error" + ~owner:"cobol" + ~fileLocation:["absolute"] + ~pattern:[Manifest.ProblemName "$gnucobol-error"] + ~severity:"error" + ~source:"GnuCOBOL"; + Manifest.problemMatcher () + ~name:"gnucobol-note" + ~owner:"cobol" + ~fileLocation:["absolute"] + ~pattern:[Manifest.ProblemName "$gnucobol-note"] + ~severity:"info" + ~source:"GnuCOBOL"; + ] + ~commands:[ + Manifest.command () + ~command:"superbol.server.restart" + ~title:"Restart Language Server" + ~category:"Superbol" + ] + +let manifest = + Manifest.vscode + package + ~marketplace + ~engines: ( "^" ^ vscode_engine ) + ~activationEvents: [ + "onLanguage:cobol" ; + "onDebug" + ] + ~contributes diff --git a/src/lsp/superbol_free_lib/vSCode_extension.mli b/src/lsp/superbol_free_lib/vSCode_extension.mli new file mode 100644 index 000000000..88a911e1d --- /dev/null +++ b/src/lsp/superbol_free_lib/vSCode_extension.mli @@ -0,0 +1,15 @@ +(**************************************************************************) +(* *) +(* SuperBOL OSS Studio *) +(* *) +(* *) +(* Copyright (c) 2023 OCamlPro SAS *) +(* *) +(* All rights reserved. *) +(* This source code is licensed under the MIT license found in the *) +(* LICENSE.md file in the root directory of this source tree. *) +(* *) +(* *) +(**************************************************************************) + +val manifest : Vscode_json.Manifest.vscode diff --git a/test/lsp/lsp_testing.ml b/test/lsp/lsp_testing.ml index 17d9f5612..b4f984cb6 100644 --- a/test/lsp/lsp_testing.ml +++ b/test/lsp/lsp_testing.ml @@ -32,7 +32,7 @@ let () = (** {1 Server initialization} *) let layout = - Superbol_free_lib.Project_config.layout; + Superbol_free_lib.Project.layout; and cache_config = LSP.Project_cache.{ cache_relative_filename = "lsp-cache";