All Projects → swistak35 → Orbacle

swistak35 / Orbacle

Licence: mit
Program allowing for smart jump-to-definitions, autocompletion, constant renaming and more.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Orbacle

Docker Machine Zsh Completion
A more functional and up-to-date zsh completion for docker-machine
Stars: ✭ 14 (-92.67%)
Mutual labels:  autocompletion
React Categorized Tag Input
React.js component for making tag autocompletion inputs with categorized results.
Stars: ✭ 78 (-59.16%)
Mutual labels:  autocompletion
Laravel Ide Helper
Laravel IDE Helper
Stars: ✭ 11,893 (+6126.7%)
Mutual labels:  autocompletion
R.swift
Strong typed, autocompleted resources like images, fonts and segues in Swift projects
Stars: ✭ 8,419 (+4307.85%)
Mutual labels:  autocompletion
Intero.nvim
Haskell+Neovim lightning fast autocompletion and other IDE functionality
Stars: ✭ 76 (-60.21%)
Mutual labels:  autocompletion
Rdf.sh
A multi-tool shell script for doing Semantic Web jobs on the command line.
Stars: ✭ 109 (-42.93%)
Mutual labels:  autocompletion
Autocomplete Haskell
Atom autocomplete-plus provider for haskell
Stars: ✭ 23 (-87.96%)
Mutual labels:  autocompletion
Modernsearchbar
The famous iOS search bar with auto completion feature implemented.
Stars: ✭ 167 (-12.57%)
Mutual labels:  autocompletion
Tenkawa Php Language Server
Language server for PHP, with powerful static analysis and type inference.
Stars: ✭ 78 (-59.16%)
Mutual labels:  autocompletion
Cakephp Ide Helper
IDE Helper plugin for CakePHP
Stars: ✭ 138 (-27.75%)
Mutual labels:  autocompletion
Autocomplete Json
Atom autocomplete for JSON files
Stars: ✭ 60 (-68.59%)
Mutual labels:  autocompletion
Tokenize2
Tokenize2 is a plugin which allows your users to select multiple items from a predefined list or ajax, using autocompletion as they type to find each item. You may have seen a similar type of text entry when filling in the recipients field sending messages on facebook or tags on tumblr.
Stars: ✭ 74 (-61.26%)
Mutual labels:  autocompletion
Micropy Cli
Micropython Project Management Tool with VSCode support, Linting, Intellisense, Dependency Management, and more!
Stars: ✭ 112 (-41.36%)
Mutual labels:  autocompletion
Typing Assistant
Typing Assistant provides the ability to autocomplete words and suggests predictions for the next word. This makes typing faster, more intelligent and reduces effort.
Stars: ✭ 32 (-83.25%)
Mutual labels:  autocompletion
Athenacli
AthenaCLI is a CLI tool for AWS Athena service that can do auto-completion and syntax highlighting.
Stars: ✭ 151 (-20.94%)
Mutual labels:  autocompletion
Pawn Sublime Language
Pawn language settings for Sublime Text 3. Copied from C++ but with Pawn language and SA:MP specific modifications.
Stars: ✭ 26 (-86.39%)
Mutual labels:  autocompletion
Dargs
Enhance any command with dynamic arguments
Stars: ✭ 107 (-43.98%)
Mutual labels:  autocompletion
Vim You Autocorrect
Why should smartphones get all the fun?
Stars: ✭ 173 (-9.42%)
Mutual labels:  autocompletion
Glyphfriend
Glyphfriend is a Visual Studio Extension to add previews for various icon/glyph fonts to Visual Studio.
Stars: ✭ 157 (-17.8%)
Mutual labels:  autocompletion
Ide Stubs
Phalcon IDE Stubs
Stars: ✭ 137 (-28.27%)
Mutual labels:  autocompletion

Orbacle

Orbacle logo

Language server using engine allowing for smart jump-to-definitions, understanding metaprogramming definitions, refactoring and more.

Doing as MSc thesis for Institute of Computer Science, University of Wrocław.

Objectives

Create 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.

Current status

Currently language server supports:

Hover request

Information about "type" of an expression

Jump to definition

Works in following cases:

  • used on constant -> jump to constant definition
  • used on method call -> jump to definition of that method
  • used on super keyword -> jump to the definition of method from the parent class (doesn't respect include / prepend yet)

V i d e o

vokoscreen-2018-08-01_21-38-46

Setup

Prerequisite indexing

  1. Install orbacle gem.
  2. Run orbaclerun -d <your_project_directory> index

It 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.

Vim

Using vim-plug:

Plug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh' }

let g:LanguageClient_serverCommands = {
  \ 'ruby': ['orbaclerun', 'file-server'],
  \ }
nnoremap <localleader>lj :call LanguageClient_textDocument_definition()<CR>
nnoremap T :call LanguageClient_textDocument_hover()<CR>
" timeout has to be bigger than time needed to index your project
let g:LanguageClient_waitOutputTimeout = 240

Contributing

Currently I do not accept contributions, as this is part of MSc thesis. However features ideas and bug reports are accepted.

Support

If 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.

Code status

CircleCI Gem Version

Bibliography

  • Tern
  • Fast Interprocedural Class Analysis, Greg DeFouw, David Grove, Craig Chambers, July 1997
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].