Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/disnet/codefellow

Scala development tool for Vim and Sbt
https://github.com/disnet/codefellow

Last synced: about 1 month ago
JSON representation

Scala development tool for Vim and Sbt

Awesome Lists containing this project

README

        

h1. CodeFellow

*Scala development tool for Vim and Sbt*

*Note:* CodeFellow is still in _alpha_ state!

h2. Features

The following features are already implemented in Vim:

* Member completion
* Scope completion
* Get type information for expressions
* Compiler errors are shown in Vim (quickfix + markers)
* Support for multi-module builds (each module will have it's own classpath)

Planned:

* Jump to definition
* Automatically add '(' and ')' based on the method return type and parameters
* Completion for named arguments in method invocations
* Organize imports (like in Eclipse)

h2. Requirements

* Scala 2.8
* Sbt project
* Vim (tested with version 7.2)
** Compiled with Python support
** (Optional) Compiled with +balloon_eval for mouse hover type information

h2. Installation

1. Build CodeFellow

bc. git clone git://github.com/romanroe/codefellow.git
cd codefellow
sbt update publish-local

2. Install the Vim plugin

bc. cp <>/vim/plugin/codefellow.vim ~/.vim/plugin/

3. Add the CodeFellow plugin to your project (project/plugins/Plugins.scala)

bc. import sbt._
class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
val codefellow = "de.tuxed" % "codefellow-plugin" % "0.3"
}

4. Mixin the CodeFellow trait to your project definition

bc. class YourProject(info: ProjectInfo)
extends ParentProject(info)
with de.tuxed.codefellow.plugin.CodeFellowPlugin {
...
}

5. Run the plugin:

bc. sbt codefellow

6. Start the CodeFellow deamon from your project root directory (this step will get merged with the above one in the future)

bc. java -cp >/project/boot/scala-2.8.0.RC5/lib/scala-library.jar:\
>/project/boot/scala-2.8.0.RC5/lib/scala-compiler.jar:\
>/codefellow-core/target/scala_2.8.0.RC5/classes \
de.tuxed.codefellow.Launch

7. Start Vim and open a Scala file that belongs to your project

h2. Usage

*Note:* The first invocation of a CodeFellow feature might take a couple of seconds since the compiler daemon for each module in your build will be started on demand.

8. Customize connection settings. see vim/autoload/codefellow.vim
section "connection to server / optional server startup"

9. debugging:
execute:
set this in your ~/.vimrc:
let g:codefellow_verbose = 1
py doDebug=True
also watch the logfile: g:codefellow_server_logfile
g:codefellow_last_exception contains the text of the last received failure

The following key bindings are available:

|_. Key |_. Mode |_. Description |
|Ctrl+s Ctrl+m | insert mode | Activate member completion function and trigger omni completion (triggers buffer save) |
|Ctrl+s Ctrl+s | insert mode | Activate scope completion function and trigger omni completion (triggers buffer save) |
| F9 | command mode | Compile the current file and show compiler errors |
|Ctrl+s Ctrl+t or F1 | command mode | Print type information of expression under cursor |

h2. Screencast

Check out the "screencast":http://github.com/downloads/romanroe/codefellow/codefellow_sc_1d.avi to see CodeFellow in action!

h2. Contributions

Thanks a lot to "Marc Weber":http://github.com/MarcWeber and "Eric Sessoms":http://github.com/esessoms !

h2. Acknowledgement

* Almost all functionality for the code completion is already implemented in the Scala compiler. CodeFellow would not be possible without the work of the Scala compiler team!
* I learned most about the Scala compiler by looking at and using the source code from "Aemon Cannon's":http://github.com/aemoncannon emacs mode "ensime":http://github.com/aemoncannon/ensime. Thank you!