{"id":15287575,"url":"https://github.com/alefragnani/vscode-language-pascal","last_synced_at":"2025-05-16T17:04:09.534Z","repository":{"id":3100894,"uuid":"42364093","full_name":"alefragnani/vscode-language-pascal","owner":"alefragnani","description":"Pascal language extension for Visual Studio Code","archived":false,"fork":false,"pushed_at":"2025-02-18T10:42:23.000Z","size":1324,"stargazers_count":228,"open_issues_count":1,"forks_count":47,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-04-12T15:58:25.445Z","etag":null,"topics":["delphi","freepascal","pascal","visual-studio-code","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/alefragnani.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","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,"zenodo":null},"funding":{"github":"alefragnani","patreon":"alefragnani","custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=EP57F3B6FXKTU\u0026lc=US\u0026item_name=Alessandro%20Fragnani\u0026item_number=vscode%20extensions\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"}},"created_at":"2015-09-12T16:24:40.000Z","updated_at":"2025-02-18T10:42:19.000Z","dependencies_parsed_at":"2023-02-18T02:15:47.251Z","dependency_job_id":"f5849859-1e39-443f-b0a8-157e49c58c4c","html_url":"https://github.com/alefragnani/vscode-language-pascal","commit_stats":{"total_commits":246,"total_committers":11,"mean_commits":"22.363636363636363","dds":0.0934959349593496,"last_synced_commit":"7b53d944ce2901c5c54641cfd21e75cdbb80fb96"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alefragnani%2Fvscode-language-pascal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alefragnani%2Fvscode-language-pascal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alefragnani%2Fvscode-language-pascal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alefragnani%2Fvscode-language-pascal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alefragnani","download_url":"https://codeload.github.com/alefragnani/vscode-language-pascal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254573589,"owners_count":22093731,"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":["delphi","freepascal","pascal","visual-studio-code","vscode","vscode-extension"],"created_at":"2024-09-30T15:32:14.251Z","updated_at":"2025-05-16T17:04:09.487Z","avatar_url":"https://github.com/alefragnani.png","language":"TypeScript","funding_links":["https://github.com/sponsors/alefragnani","https://patreon.com/alefragnani","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=EP57F3B6FXKTU\u0026lc=US\u0026item_name=Alessandro%20Fragnani\u0026item_number=vscode%20extensions\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted","https://www.patreon.com/alefragnani"],"categories":["Plugins for other IDE's"],"sub_categories":[],"readme":"[![](https://vsmarketplacebadges.dev/version-short/alefragnani.pascal.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.pascal)\n[![](https://vsmarketplacebadges.dev/downloads-short/alefragnani.pascal.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.pascal)\n[![](https://vsmarketplacebadges.dev/rating-short/alefragnani.pascal.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.pascal)\n\n\u003cp align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003ca title=\"Learn more about Pascal\" href=\"http://github.com/alefragnani/vscode-language-pascal\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/alefragnani/vscode-language-pascal/master/images/vscode-pascal-logo-readme.png\" alt=\"Pascal Logo\" width=\"70%\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# What's new in Pascal 9.9\n\n* Adds more FreePascal Keywords\n* Published to **Open VSX**\n* Improves **Syntax Highlighting** support for FreePascal and Oxygene\n* Adds **Web** support\n* Adds **Getting Started / Walkthrough**\n\n## Support\n\n**Pascal** is an open source extension created for **Visual Studio Code**. While being free and open source, if you find it useful, please consider supporting it\n\n\u003ctable align=\"center\" width=\"60%\" border=\"0\"\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003ca title=\"Paypal\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=EP57F3B6FXKTU\u0026lc=US\u0026item_name=Alessandro%20Fragnani\u0026item_number=vscode%20extensions\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted\"\u003e\u003cimg src=\"https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif\"/\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca title=\"GitHub Sponsors\" href=\"https://github.com/sponsors/alefragnani\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/alefragnani/oss-resources/master/images/button-become-a-sponsor-rounded-small.png\"/\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca title=\"Patreon\" href=\"https://www.patreon.com/alefragnani\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/alefragnani/oss-resources/master/images/button-become-a-patron-rounded-small.png\"/\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# Pascal\n\nIt adds support for the **Pascal** language and its dialects like **Delphi** and **FreePascal**. \n\nHere are some of the features that **Pascal** provides:\n\n* **Syntax highlighting** for files, forms and projects\n* A huge set of **Snippets**\n* Source code **navigation** \n\n# Features\n\n## Coding with style\n\n### Syntax Highlighting\n\n**Pascal** supports full syntax highlighting for **Delphi** and **FreePascal**\n\n![syntax](images/vscode-pascal-syntax.png)\n\n### Snippets\n\nAlmost 40 snippets are available\n\n![snippets](images/vscode-pascal-snippets.png)\n\n### Format Code\n\nCheck out [Pascal Formatter](https://github.com/alefragnani/vscode-pascal-formatter#features) documentation.\n\n## Code Navigation\n\nNavigate to any language element (methods, attributes, classes, interfaces, and so on) inside Pascal files. It supports native VS Code commands like:\n\n* Go to Symbol\n* Go to Definition\n* Peek Definition\n* Find All References\n\n\u003e It uses GNU Global, a source code tagging system, which means that it has some limitations if you compare with an AST parsing.\n\n### Installing and Configuring GNU Global\n\n You have to install 4 tools:\n\n * GNU Global 6.5 or higher (http://www.gnu.org/software/global/global.html) \n * Exuberant Tags 5.5 or higher (http://ctags.sourceforge.net/)\n * Python 2.7 or higher (https://www.python.org/)\n * Python Pygments (via `pip install Pygments`)\n\n### Instructions (for Windows)\n\n1. Download the installers and install\n\n2. Update your `%PATH%` Environment Variable (_System_)\n\n Let's say you extract GNU Global and CTags in `C:\\gnu` folder. The two new entries in `%PATH%` should be:\n \n * GNU Global: `C:\\gnu\\glo653wb\\bin`\n * Excuberant Tags: `C:\\gnu\\ctags58\\ctags58`\n\n Also make sure Python is in `%PATH%`\n\n3. Create 2 new Environment Variables (_System_)\n\n GNU Global uses CTags + Python Pygments as plugin in order to recognizes Pascal source code, so you have to configure them. \n \n * `GTAGSCONF`: `C:\\gnu\\glo653wb\\share\\gtags\\gtags.conf` \n * `GTAGSLABEL`: `pygments`\n\n![py-envvar](images/vscode-pascal-py-envvar.png)\n\n### Instructions (for Linux)\n\n1. Install the tools using `apt`\n\n```sh\n    sudo apt update\n    sudo apt install global exuberant-ctags python3-pygments\n```\n\n2. Add `GTAGSCONF` AND `GTAGSLABEL` environment variables\n\n```sh\n    export GTAGSCONF=/etc/gtags.conf\n    export GTAGSLABEL=pygments\n```\n\nSince there is no default `gtags.conf` file o Linux, you must copy it from a Windows setup/installer and put at `/etc/gtags.conf`\n\n\u003e Thanks to @trey-k for sharing the instructions in [this comment](https://github.com/alefragnani/vscode-language-pascal/issues/61#issuecomment-823677779)\n\n# Available commands\n\n## Code Navigation\n\nTo enable **Code Navigation**, the extension depends on **GNU Global and Exuberant Tags** and for that, you must run `gtags` on the Root folder, so the tags are created. In order to make life easier, two commands where added:\n\n* **Pascal: Generate Tags**: Use this to _create_ or _reset_ the tags in the current project. You just have to do it once. \n* **Pascal: Update Tags**: Use this to _update_ the tags for current project. You should use this command to _update the references_ when any source code is updated.\n\n### Available Settings\n\nControls how the code navigation should work. Specially useful if you work with huge projects\n\n* `workspace`: Full featured code navigation\n* `file`: Limited to `Go to Symbol in File` command\n\n```json\n    \"pascal.codeNavigation\": \"workspace\"\n``` \n\n* Controls if the extension should automatically generate tags in projects opened for the first time\n\n```json\n    \"pascal.tags.autoGenerate\": true\n```\n\n\u003e For huge projects, its recommended to use:\n\n```json\n    \"pascal.codeNavigation\": \"file\",\n    \"pascal.tags.autoGenerate\": false\n```\n\n# Task Build\n\nUse this **Task Examples**, so you can:\n\n* Compile **Delphi** and **FreePascal** projects:\n* Navigate to _Errors/Warnings/Hints_, using the native _View / Errors and Warnings_ command\n\n![compile](images/vscode-pascal-compile.png) \n\n### Building Tasks\n\nIf you want to build tasks _(Task: Run Task Build)_ you can use the snippets below.\n\n#### Delphi\n\nUpdate two tags:\n\n* `DCC32.EXE_PATH`: The compiler location\n* `YOUR_DELPHI_PROJECT.DPR`: The project being built.\n\n```\n   \"version\": \"2.0.0\",\n   \"tasks\": [\n      {\n         \"label\": \"Pascal\",\n         \"type\": \"shell\",\n         \"windows\": {\n            \"command\": \"DCC32.EXE_PATH\"\n         },\n         \"linux\": {\n            \"command\": \"FPC_BIN_PATH\"\n         },\n         \"presentation\": {\n            \"reveal\": \"always\",\n            \"panel\": \"new\"\n         },\n         \"args\": [\n            {\n               \"value\": \"\"YOUR_DELPHI_PROJECT.DPR\"\",\n               \"quoting\": \"escape\"\n            }\n         ],\n         \"problemMatcher\": {\n            \"owner\": \"external\",\n            \"pattern\": {\n               \"regexp\": \"^(.*.(pas|dpr|dpk))\\\\((\\\\d+)\\\\)\\\\s(Fatal|Error|Warning|Hint):(.*)\",\n               \"file\": 1,\n               \"location\": 3,\n               \"message\": 5\n            }\n         },\n         \"group\": {\n            \"kind\": \"build\",\n            \"isDefault\": true\n         }\n      }\n   ]\n```\n\n#### FreePascal\n\nUpdate two tags:\n\n* `FPC_BIN_PATH`: The full compiler location. If its `PATH` is already in _Environment Variables_, simply use `FPC_BIN` filename\n* `YOUR_FREEPASCAL_PROJECT_OR_FILE`: The project/file being built.\n\n```\n\n{\n   \"version\": \"2.0.0\",\n   \"tasks\": [\n      {\n         \"label\": \"Pascal\",\n         \"type\": \"shell\",\n         \"windows\": {\n            \"command\": \"FPC_BIN_PATH\"\n         },\n         \"linux\": {\n            \"command\": \"FPC_BIN_PATH\"\n         },\n         \"presentation\": {\n            \"reveal\": \"always\",\n            \"panel\": \"new\"\n         },\n         \"args\": [\n            {\n               \"value\": \"YOUR_FREEPASCAL_PROJECT_OR_FILE\",\n               \"quoting\": \"escape\"\n            }\n         ],\n         \"problemMatcher\": {\n            \"owner\": \"external\",\n            \"pattern\": {\n               \"regexp\": \"^([\\\\w]+\\\\.(p|pp|pas))\\\\((\\\\d+)\\\\,(\\\\d+)\\\\)\\\\s(Fatal|Error|Warning|Note):(.*)\",\n               \"file\": 1,\n               \"line\": 3,\n               \"column\": 4,\n               \"message\": 6\n            }\n         },\n         \"group\": {\n            \"kind\": \"build\",\n            \"isDefault\": true\n         }\n      }\n   ]\n}\n```\n## Contributors\n\nSpecial thanks to the people that have contributed to the project:\n\n* trey-k - Instructions for Linux install [see Comment](https://github.com/alefragnani/vscode-language-pascal/issues/61#issuecomment-823677779)\n* Robert Roland (@robdaemon) - Missing keywords from FreePascal ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/147))\n* Midas (Wither) (@TheWitheredStriker) - Missing keywords from FreePascal and Oxygene ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/138)) and ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/151))\n* creativelaides (@creativelaides) - Task upgrade ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/54))\n* space (@SpaceEEC) - Fixed parentesis in snippet ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/51))\n* AnsonYeung (@AnsonYeung) - Fixed autocomplete in snippet ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/44))\n* AnsonYeung (@AnsonYeung) - Added .lpr file extension support ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/30))\n* Jonathan Carter (@lostintangent) - Support Live Share ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/28))\n* Jan T. Sott (@idleberg) - Fixed escape in snippet ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/22))\n* Wade Anderson (@waderyan) - Updated marketplace category ([see PR](https://github.com/alefragnani/vscode-language-pascal/pull/13))\n\nAlso thanks to everyone who helped opening issues with ideas and bug reports.\n\n# License\n\n[MIT](LICENSE.md) \u0026copy; Alessandro Fragnani\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falefragnani%2Fvscode-language-pascal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falefragnani%2Fvscode-language-pascal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falefragnani%2Fvscode-language-pascal/lists"}