{"id":16310572,"url":"https://github.com/coq/vscoq","last_synced_at":"2025-03-25T03:14:58.798Z","repository":{"id":37412471,"uuid":"196233996","full_name":"coq/vscoq","owner":"coq","description":"Visual Studio Code extension for Coq","archived":false,"fork":false,"pushed_at":"2024-10-28T15:51:48.000Z","size":82253,"stargazers_count":338,"open_issues_count":119,"forks_count":69,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-10-29T17:12:39.790Z","etag":null,"topics":["coq","editor","vscode","vscode-extension","vscodium"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-10T15:48:24.000Z","updated_at":"2024-10-26T16:43:39.000Z","dependencies_parsed_at":"2022-07-11T19:51:54.475Z","dependency_job_id":"34f5befc-d977-4c08-a121-93f211c2ee37","html_url":"https://github.com/coq/vscoq","commit_stats":null,"previous_names":["coq/vscoq","coq-community/vscoq"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq%2Fvscoq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq%2Fvscoq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq%2Fvscoq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coq%2Fvscoq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coq","download_url":"https://codeload.github.com/coq/vscoq/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245325217,"owners_count":20596818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coq","editor","vscode","vscode-extension","vscodium"],"created_at":"2024-10-10T21:41:12.858Z","updated_at":"2025-03-25T03:14:58.780Z","avatar_url":"https://github.com/coq.png","language":"OCaml","funding_links":[],"categories":["OCaml"],"sub_categories":[],"readme":"[![CI][action-shield]][action-link]\n[![Contributing][contributing-shield]][contributing-link]\n[![Code of Conduct][conduct-shield]][conduct-link]\n[![Zulip][zulip-shield]][zulip-link]\n\n[action-shield]: https://github.com/coq/vscoq/actions/workflows/ci.yml/badge.svg?branch=main\n[action-link]: https://github.com/coq/vscoq/actions?query=workflow:ci\n\n[contributing-shield]: https://img.shields.io/badge/contributions-welcome-%23f7931e.svg\n[contributing-link]: https://github.com/coq/vscoq/manifesto/blob/master/CONTRIBUTING.md\n\n[conduct-shield]: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-%23f15a24.svg\n[conduct-link]: https://github.com/coq/vscoq/manifesto/blob/master/CODE_OF_CONDUCT.md\n\n[zulip-shield]: https://img.shields.io/badge/chat-on%20zulip-%23c1272d.svg\n[zulip-link]: https://coq.zulipchat.com/#narrow/stream/237662-VsCoq-devs.20.26.20users\n\nVsCoq is an extension for [Visual Studio Code](https://code.visualstudio.com/)\n(VS Code) and [VSCodium](https://vscodium.com/) which provides support for the [Coq Proof\nAssistant](https://coq.inria.fr/). It is built around a language server which natively speaks the [LSP protocol](https://learn.microsoft.com/en-us/visualstudio/extensibility/language-server-protocol?view=vs-2022).\n\n## Supported Coq versions\n\n**VsCoq** supports all recent Coq versions \u003e= 8.18.\nIf you are running an Coq \u003c 8.18 you should use [VsCoq Legacy](https://github.com/coq-community/vscoq-legacy).\n\n## Installing VsCoq\n\nTo use VsCoq, you need to (1) install the VsCoq language server\nand (2) install and configure the VsCoq extension in either VS Code or VSCodium.\n\n### Installing the language server\n\nAfter creating an opam switch, pin Coq,\nand install the `vscoq-language-server` package:\n```shell\n$ opam pin add coq 8.18.0\n$ opam install vscoq-language-server\n```\n\nAfter installation, check that you have `vscoqtop` in your shell\nand note the path to this executable:\n```shell\n$ which vscoqtop\n```\n\n#### Pre-release versions\n\nWe often roll out pre-release versions. To get the correct language server version please pin the git repo. For example,\nfor pre-release ```v2.1.5```:\n```shell\n$ opam pin add vscoq-language-server.2.1.5  https://github.com/coq/vscoq/releases/download/v2.1.5/vscoq-language-server-2.1.5.tar.gz\n```\n\n### Installing and configuring the extension\n\nTo install the [VS Code](https://marketplace.visualstudio.com/items?itemName=maximedenes.vscoq)\nor [VSCodium extension](https://open-vsx.org/extension/maximedenes/vscoq), first run `code`\nor `codium`. Then press F1 to open the command palette, start typing\n\"Extensions: Install Extension\", press enter, and search for \"vscoq\". Switch to\nthe **pre-release version** of the extension and enable it. Finally, go to the extension\nsettings and enter the `vscoqtop` full path from above in the field \"Vscoq: Path\".\n\nIf you want asynchronous processing of Coq files, you can go to\nthe \"Proof: Mode\" and select \"Continuous\". Otherwise, processing will step by step and top-down as in VsCoq1.\n\n#### Pre-release versions\n\nIn VsCode, from the extensions page, either use the drop down menu from the ```Uninstall``` button and select ```Install another version```, or click on ```Switch to pre-release```.\n\n### Troubleshooting\n\n#### Known problems\n\n- Getting an ```Unable to start coqtop``` or ```coqtop-stderr: Don't know what to do with -ideslave``` error.\nThis is a known issue if you are updating from a very old version.\nSolution: navigate to your extensions folder (```Extensions: Open Extensions Folder``` from the command palette) and then delete the ```siegbell.vscoq-**version**``` folder.\n\n- Extension hanging: query panel shows a loading bar and shortcuts fail\nThis could be due to an old ```vscode``` version. Make sure ```vscode``` is up to date.\n\n#### Getting help\n\nIf you are unable to set-up vscoq, feel free to contact us on the ```Vscoq devs and users``` [channel in zulip](https://coq.zulipchat.com/#narrow/stream/237662-VsCoq-devs-.26-users).\n\n## Features\n* Syntax highlighting\n* Asynchronous proof checking\n* Continuous and incremental checking of Coq documents\n\nThe new version of vscoq allows users to opt for continuous checking, see the goal panel update as you scroll or edit your document.\n![](gif/continuous-mode.gif)\n\nBy default vscoq is configured to use classic step by step checking mode. \n![](gif/manual-mode.gif)\n\n* Customisable goal panel \n  \nUsers can choose their preferred display mode, see goals in accordion lists...\n![](gif/goals-accordion.gif)\n\n... Or organized in tabs. \n![](gif/goals-tab.gif)\n\n* Dedicated panel for queries and their history\n\nWe now support a dedicated panel for queries. We currently support Search, Check, About, Locate and Print with plans \nto add more in the future.\n![](gif/query-panel.gif)\n\n* Messages in the goal panel\n\nWe also support inline queries which then trigger messages in the goal panel.\n![](gif/messages.gif)\n\n* Supports \\_CoqProject\n\n### Since version 2.1.7\n\n* Outline\n\nWe now support a document outline, which displays theorems and definitions in the document.\n\n![](gif/outline.gif)\n\n* Ellipsis for the goal panel\n\nGoals can now be ellided. First through the `\"vscoq.goals.maxDepth\"` setting which ellides a goal if the display becomes to large.\nFinally by clicking on the goal view as showcased here.\nThe following modifiers can be used: \n- ```Alt + Click```: open/close an ellipsis (only opens partially).\n- ```Shift + Alt + Click```: fully open an ellipsis (all children are also opened).\n\n![](gif/goal-ellipsis.gif)\n\n* Quickfixes (only for Coq \u003e= 8.21)\n\nWe have added support for quickfixes. However, quickfixes rely on some Coq API which will only make it in the 8.21 release.\nDeveloppers are encouraged to list and add their own quickfixes in the Coq source code.\n\n![](gif/quickfix.gif)\n\n* Block on first error\n\nWe support the classic block on error mode, in which the execution of a document is halted upon reaching an error. This affects both checking modes (Continuous and Manual). A user can opt out of this execution mode by setting it to false in the user settings.\n\n![](gif/block-on-error.gif)\n\n### Settings\nAfter installation and activation of the extension:\n\n(Press `F1` and start typing \"settings\" to open either workspace/project or user settings.)\n#### Coq configuration\n* `\"vscoq.path\": \"\"` -- specify the path to `vscoqtop` (e.g. `path/to/vscoq/bin/vscoqtop`)\n* `\"vscoq.args\": []` -- an array of strings specifying additional command line arguments for `vscoqtop` (typically accepts the same flags as `coqtop`)\n* `\"vscoq-language-server.trace.server\": off | messages | verbose` -- Toggles the tracing of communications between the server and client\n\n#### Memory management (since \u003e= 2.1.7)\n* `\"vscoq.memory.limit: int` -- specifies the memory limit (in Gb) over which when a user closes a tab, the corresponding document state is discarded in the server to free up memory. Defaults to 4Gb.\n\n#### Goal and info view panel\n* `\"vscoq.goals.display\": Tabs | List` -- Decide whether to display goals in separate tabs or as a list of collapsibles.\n* `\"vscoq.goals.diff.mode\": on | off | removed` -- Toggles diff mode. If set to `removed`, only removed characters are shown (defaults to `off`)\n* `\"vscoq.goals.messages.full\": bool` -- A toggle to include warnings and errors in the proof view (defaults to `false`)\n* `\"vscoq.goals.maxDepth\": int` -- A setting to determine at which point the goal display starts elliding. Defaults to 17. (since version \u003e= 2.1.7)\n\n#### Proof checking\n* `\"vscoq.proof.mode\": Continuous | Manual` -- Decide whether documents should checked continuously or using the classic navigation commmands (defaults to `Manual`)\n* `\"vscoq.proof.pointInterpretationMode\": Cursor | NextCommand` -- Determines the point to which the proof should be check to when using the 'Interpret to point' command. \n* `\"vscoq.proof.cursor.sticky\": bool` -- a toggle to specify whether the cursor should move as Coq interactively navigates a document (step forward, backward, etc...)\n* `\"vscoq.proof.delegation\": None | Skip | Delegate` -- Decides which delegation strategy should be used by the server. \n  `Skip` allows to skip proofs which are out of focus and should be used in manual mode. `Delegate` allocates a settable amount of workers\n  to delegate proofs. \n* `\"vscoq.proof.workers\": int` -- Determines how many workers should be used for proof checking\n* `\"vscoq.proof.block\": bool` -- Determines if the the execution of a document should halt on first error.  Defaults to true (since version \u003e= 2.1.7).\n* `\"vscoq.proof.display-buttons\": bool` -- A toggle to control whether buttons related to Coq (step forward/back, reset, etc.) are displayed in the editor actions menu (defaults to `true`)\n\n#### Code completion (experimental)\n* `\"vscoq.completion.enable\": bool` -- Toggle code completion (defaults to `false`)\n* `\"vscoq.completion.algorithm\": StructuredSplitUnification | SplitTypeIntersection` -- Which completion algorithm to use\n* `\"vscoq.completion.unificationLimit\": int` -- Sets the limit for how many theorems unification is attempted\n\n#### Diagnostics\n* `\"vscoq.diagnostics.full\": bool` -- Toggles the printing of `Info` level diagnostics (defaults to `false`)\n\n## For extension developers \nSee [Dev docs](https://github.com/coq/vscoq/blob/main/docs/developers.md)\n\n## Maintainers\n\nThis extension is currently developed and maintained by\n[Enrico Tassi](https://github.com/gares),\n[Romain Tetley](https://github.com/rtetley).\n\n## License\nUnless mentioned otherwise, files in this repository are [distributed under the MIT License](LICENSE).\n\nThe files `client/syntax/coq.tmLanguage` and `client/coq.configuration.json` are\nalso distributed under the MIT License, Copyright (c) Christian J. Bell and\ncontributors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoq%2Fvscoq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoq%2Fvscoq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoq%2Fvscoq/lists"}