{"id":25275929,"url":"https://github.com/Sigmapitech/ecsls","last_synced_at":"2025-10-27T13:31:08.104Z","repository":{"id":187084677,"uuid":"669866495","full_name":"Sigmapitech/ecsls","owner":"Sigmapitech","description":"A language server on top of the Epitech coding style.","archived":false,"fork":false,"pushed_at":"2025-01-19T16:19:31.000Z","size":36,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T20:51:36.725Z","etag":null,"topics":["c","coding-style","epitech","epitech-norme","language-server","linter","neovim","neovim-lsp","nix"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sigmapitech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-07-23T17:24:12.000Z","updated_at":"2025-01-19T16:19:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"c03fa25c-1f37-452f-bc13-330608165b87","html_url":"https://github.com/Sigmapitech/ecsls","commit_stats":null,"previous_names":["sigmapitech-meta/ecsls","sigmapitech/ecsls"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sigmapitech%2Fecsls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sigmapitech%2Fecsls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sigmapitech%2Fecsls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sigmapitech%2Fecsls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sigmapitech","download_url":"https://codeload.github.com/Sigmapitech/ecsls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238498479,"owners_count":19482448,"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":["c","coding-style","epitech","epitech-norme","language-server","linter","neovim","neovim-lsp","nix"],"created_at":"2025-02-12T15:36:49.986Z","updated_at":"2025-10-27T13:31:07.736Z","avatar_url":"https://github.com/Sigmapitech.png","language":"Python","readme":"# [ECSLS] Epitech Coding Style Language Server\n\n![image](https://github.com/Sigmapitech-meta/ecsls/assets/53050011/87543f76-5eb2-4a58-a685-37592aae38bf)\n\n## Dependencies\n\n### Nix\n\n- Via Home Manager\n\nUsing Home Manager, you can use the github url as an input and pass it to your\nnvim config.\n\nSet `ecsls.packages.${conf.system}.default` within the `neovim.extraPackages`\noption and refer to the neovim configuration after the dependencie section.\n\n- Development packages are provided throught `nix develop`.\n\n### Non-Nix\n\n- Install `banana-vera` package if existing, or you compile it by\n[yourself](https://gist.github.com/Sigmanificient/6ef147920ad057ef6bcd9b057f81d83d).\n\n#### Epitech Ruleset\n\nYou need to clone the repo of the coding style of EPITECH. If you do not have\naccess to this repo, we are sorry but you will not be able to use this LSP, as\nit is required for this to run, and is internal to Epitech.\n\n```bash\ngit submodules update --init --recursive\n```\n\n\u003e or\n```bash\ngit clone https://github.com/Epitech/banana-coding-style-checker.git \u003cpath\u003e\n```\n\n#### Setup ECSLS python package\n\n\u003e (optional) Create a virtual environement (avoid polluting your python).\n```py\npython -m venv venv\n```\n\n\u003e Install the package locally.\n```bash\nvenv/bin/pip install .\n```\n\n\u003e **Note**\n\u003e If you are using virtual environments, don't forget to add the correct path\n\u003e for the command in your LSP config\n\n\n## Setup\n\nTo activate ecsls as a language server, you'll need to create a custom LSP in\nyour editor.\n\nOnce it is done, you'll need to create a `ecsls.toml` to tell the LSP to run\nas it is quite heavy and can be annoying.\n\n### Neovim\n\nTo activate the language server using\n[lspconfig](https://github.com/neovim/nvim-lspconfig), use the following\nconfiguration:\n\n```lua\nlocal lspconfig = require('lspconfig')\nlocal configs = require('lspconfig.configs')\n\n-- ↓ Epitech C Style Checker\nif not configs.ecsls then\n  configs.ecsls = {\n    default_config = {\n      root_dir = lspconfig.util.root_pattern('.git', 'Makefile'),\n      cmd = { 'ecsls_run' },\n      autostart = true,\n      name = 'ecsls',\n      filetypes = { 'c', 'cpp', 'make' },\n    },\n  }\nend\nlspconfig.ecsls.setup({})\n```\n\n### Emacs\n\n```lisp\n(require 'lsp-mode)\n(lsp-register-client\n  (make-lsp-client :new-connection (lsp-stdio-connection '(\"ecsls_run\"))\n                   :major-modes '(c-mode c++-mode makefile-mode)\n                   :server-id 'ecsls))\n\n(add-hook 'c-mode-hook 'lsp)\n(add-hook 'c++-mode-hook 'lsp)\n(add-hook 'makefile-mode-hook 'lsp)\n```\n\n### VSCode\n\n(not using lspconfig)\n\n\u003e [!CAUTION]\n\u003e Do not use the script on nixos, just import it in your home config\n\n\u003e [!WARNING]\n\u003e You need sudo perm for the script to work\n\n\u003e [!WARNING]\n\u003e You need to have access to repo owned by Epitech\n\n```sh\n./install_as_vscode_extension.sh\n```\n\n### Change the ruleset path\n\n\u003e **Note**\n\u003e If you want to use it globally, or if you wish to change the vera rules\n\u003e directory, change `path` in by using `init_options`.\n\n```lua\ninit_options = {\n  path = '/your/custom/path',\n},\n```\n\n\u003e **Warning**\n\u003e The path must be valid and pointing to the epitech ruleset repository root.\n\n```py\npath = \".../ls/banana\"  # invalid\npath = \".../ls/banana-coding-style-checker/vera\"  # invalid too\npath = \".../ls/banana-coding-style-checker\"  # valid\n```\n\nTo see a configuration in more details, consider reading\n[my dotfiles](https://github.com/Sigmanificient/dotfiles/blob/master/home/nvim/default.nix).\n","funding_links":[],"categories":["Epitech Tools"],"sub_categories":["IDE extensions"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSigmapitech%2Fecsls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSigmapitech%2Fecsls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSigmapitech%2Fecsls/lists"}