{"id":26941482,"url":"https://github.com/swistak35/orbacle","last_synced_at":"2025-08-21T16:08:44.974Z","repository":{"id":56886987,"uuid":"92659968","full_name":"swistak35/orbacle","owner":"swistak35","description":"Program allowing for smart jump-to-definitions, autocompletion, constant renaming and more.","archived":false,"fork":false,"pushed_at":"2018-12-14T15:06:27.000Z","size":1210,"stargazers_count":188,"open_issues_count":3,"forks_count":3,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-04-25T19:02:06.820Z","etag":null,"topics":["autocompletion","ii-uwr","langserver","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/swistak35.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-28T12:30:34.000Z","updated_at":"2023-09-26T14:29:09.000Z","dependencies_parsed_at":"2022-08-21T00:20:23.843Z","dependency_job_id":null,"html_url":"https://github.com/swistak35/orbacle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swistak35%2Forbacle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swistak35%2Forbacle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swistak35%2Forbacle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swistak35%2Forbacle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swistak35","download_url":"https://codeload.github.com/swistak35/orbacle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248044110,"owners_count":21038543,"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":["autocompletion","ii-uwr","langserver","ruby"],"created_at":"2025-04-02T16:19:55.292Z","updated_at":"2025-04-09T12:38:19.687Z","avatar_url":"https://github.com/swistak35.png","language":"Ruby","readme":"# Orbacle\n\n\u003cimg src=\"http://swistak35.com/img/orbacle-logo.png\" alt=\"Orbacle logo\" width=\"100px\" align=\"left\" /\u003e\n\nLanguage server using engine allowing for smart jump-to-definitions, understanding metaprogramming definitions, refactoring and more.\n\nDoing as MSc thesis for [Institute of Computer Science, University of Wrocław](http://ii.uni.wroc.pl).\n\n## Objectives\n\nCreate a language server for ruby, which can be used across different code editors, like Vim, Emacs or Atom. Focus on understanding of the code in order to provide best functionalities of \"go-to definition\", autocompletion and refactorings. The idea is to infer information about variables (i.e. their \"types\"), **without requiring developer to write any annotations**, just like IDEs do that - through static analysis.\n\n## Current status\n\nCurrently language server supports:\n\n### Hover request\n\nInformation about \"type\" of an expression\n\n\n### Jump to definition\n\nWorks in following cases:\n* used on constant -\u003e jump to constant definition\n* used on method call -\u003e jump to definition of that method\n* used on `super` keyword -\u003e jump to the definition of method from the parent class (doesn't respect `include` / `prepend` yet)\n\n\n### V i d e o\n\n\n![vokoscreen-2018-08-01_21-38-46](https://user-images.githubusercontent.com/332289/43544509-6b240d06-95d3-11e8-81e8-fe03b2c1cf6f.gif)\n\n\n## Setup\n\n### Prerequisite indexing\n\n1. Install `orbacle` gem.\n2. Run `orbaclerun -d \u003cyour_project_directory\u003e index`\n\nIt will show you how long does it take to index your project, i.e. how long do you have to wait after editor start to have language server functional underneath.\n\n### Vim\n\nUsing `vim-plug`:\n\n```\nPlug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh' }\n\nlet g:LanguageClient_serverCommands = {\n  \\ 'ruby': ['orbaclerun', 'file-server'],\n  \\ }\nnnoremap \u003clocalleader\u003elj :call LanguageClient_textDocument_definition()\u003cCR\u003e\nnnoremap T :call LanguageClient_textDocument_hover()\u003cCR\u003e\n\" timeout has to be bigger than time needed to index your project\nlet g:LanguageClient_waitOutputTimeout = 240\n```\n\n## Contributing\n\nCurrently I do not accept contributions, as this is part of MSc thesis. However features ideas and bug reports are accepted.\n\n## Support\n\nIf you have found a bug, feel free to create an issue. However, because of the fact that I'm focusing now more on the features required to MSc, support for other developers are lower priority for me.\n\n## Code status\n\n[![CircleCI](https://circleci.com/gh/swistak35/orbacle/tree/master.svg?style=shield)](https://circleci.com/gh/swistak35/orbacle/tree/master)\n[![Gem Version](https://badge.fury.io/rb/orbacle.svg)](https://badge.fury.io/rb/orbacle)\n\n## Bibliography\n\n* [Tern](http://marijnhaverbeke.nl/blog/tern.html)\n* Fast Interprocedural Class Analysis, Greg DeFouw, David Grove, Craig Chambers, July 1997\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswistak35%2Forbacle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswistak35%2Forbacle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswistak35%2Forbacle/lists"}