Zeioth/compiler.nvim
Neovim compiler for building and running your code without having to configure anything
🐛fix(`python`): They changed the package name so `nuitka3` has been renamed to just `nuitka`. Special thanks to @Gaweringo from [the discord channel](https://discord.com/invite/ymcMaSnq7d) for reporting it.
✨ New language added
- Support for the `gleam` programming language has been added.
- 
- 
📦 Credits
- Thanks to @Shad0wRim
🐛 Minor fixes
- We now focus the last executed task. → closes https://github.com/Zeioth/compiler.nvim/issues/27
📦 More info
- Starting `Compiler.nvim v3.3.7`, the minimum required overseer version is `1.5.0`.
- Tested with commit https://github.com/stevearc/overseer.nvim/commit/29dd31db39b44ddd57cfbc70610181a23acfae47.
- You can just copy paste the config from [here](https://github.com/Zeioth/compiler.nvim?tab=readme-ov-file#how-to-install).
📦 Special thanks
- @aaronmcadam for reporting the issue and @stevearc for fixing it.
✨ New features
- `gradle`: The parser is now capable of parsing both, the tasks returned by the command `gradle list`, and user defined tasks from your `gradle.build` file.
- 
📦 Special thanks
- @Cliffback for the PR #40
✨ New features
- Support for paths with spaces has been added.
📦 Special thanks
- To @Gaweringo for testing this feature.
✨ New language added
- Support for the `fortran` programming language has been added.
- 
- 
📦 Credits
- Thanks to @Shad0wRim
🐛 Minor fixes
- `:CompilerRedo` is now (for real) compatible with build automation utilities.
✨ New features
- `meson.build` parser now support multi line entries of `executable` and `custom_target`.
- `CMakeLists.txt` parser now support multi line entries of `add_executable` and `add_custom_target`.
📦 Example
- ```meson
- hello_world = executable('hello_world', 'main.cpp')
- hello_world = executable(
- 'hello_world', 'main.cpp'
- )
- ```
- And any other variation. The other build automation utilities already supported this, so no changes there.
✨ New features
- `.solution.toml`: now accept `entry_point = "$current_buffer"`.
📦 Example
- ```toml
- [RunPythonFileAsModule]
- entry_point = "$current_buffer"
- arguments = "-m"
- ```
✨ New feature
- `Meson support`: When the file `meson.build` exist in the current working directory, Telescope will be populated with all its `executable` and `custom_target` entries.
- 
- 
📦 More info
- (optionally) You can define the next globals
- | global | defaut value |
- |--|--|
- | `MESON_CLEAN_FIRST` | false |
- | `MESON_BUILD_DIR` | ./build |
- | `MESON_BUILD_TYPE` | debug |
- Example:
- > let g:MESON_BUILD_TYPE='release'
- + 1 more
✨ New features
- `C# dotnet watch` Reflect changes in your program in real time. Submitted by @Cliffback → https://github.com/Zeioth/compiler.nvim/pull/30
- 
🐛 Minor fixes
- `swift REPL` command.
✨ New features
- `Swift` cli
- `Swift` REPL
- 
✨ New language added
- Support for the `swift` programming language has been added.
- 
- 
- Credits to @wSedlacek for the [initial PR](https://github.com/Zeioth/compiler.nvim/pull/23).
✨ New features
- `java` has the new compiler option `Start REPL`.
- `nodejs` package.json support added. Its options are now detected and displayed on Telescope.
- You can select between npm and yarn with `:let g:NODEJS_PACKAGE_MANAGER='yarn'` (default: npm).
- 
- 
🐛 Minor fixes
- The location of build automation utilities was erroneously detected using the current file directory instead of the current working directory.
- Removed deprecated options that would be redundant now that we support build automation utilities.
✨ New feature
- `:CompilerRedo` is now compatible with build automation utilities.
✨ New feature
- `Gradle support`: When one of the files `gradlew`, `build.gradle.kts`, or `build.gradle` exist in the current working directory (by priority of detection), Telescope will be populated with all its task entries.
- 
- 
📦 More info
- (optionally) You can define the next globals
- | global | defaut value |
- |--|--|
- | `GRADLE_BUILD_TYPE` | "" |
- Example:
- > let g:GRADLE_BUILD_TYPE='release'
- Globals persist between Neovim sessions.
🐛 Minor fixes
- `CMake` We don't set a default value for the global `CMAKE_BUILD_TYPE` anymore.
✨ New feature
- `CMake support`: When CMakeLists.txt is detected in the current working directory, Telescope will be populated with all its `add_executable` and `add_custom_target` entries.
- 
- 
📦 More info
- (optionally) You can define the next globals
- | global | defaut value |
- |--|--|
- | `CMAKE_BUILD_DIR` | ./build |
- | `CMAKE_BUILD_TYPE` | Debug |
- | `CMAKE_CLEAN_FIRST` | false |
- Example:
- > let g:CMAKE_BUILD_TYPE='Release'
- + 1 more
✨ New features
- `Makefile support`: When Makefile is detected in the current working directory, Telescope will be populated with its content.
- 
✨ New features
- `NPM install` and `NPM start`: Added as new compiler.nvim options.
- `tsconfig.json`: is now auto detected and used by all compiler.nvim options when writing ts/js. [SEE WIKI](https://github.com/Zeioth/compiler.nvim/wiki/typescript-transpiler).
- `multiple bug fixes`: Both compilers have been tested in real world projects, and now work in a more predictable way.
- `.solution` files support have been dropped for both languages as using package.json is the standard way.
- 
✨ New language added
- Support for the elixir programming language has been added
- 
- For more info [see this](https://github.com/Zeioth/compiler.nvim/wiki/elixir-compiler).
🐛 Elixir DAP debugger
- 
🐛 Important fixes
- `redo`: Works correctly again.
- This regression was introduced during the code cleanup prior to the release of `v3.0.0`. Credits to @GustavoPrietoP for reporting it.
📦 Historical milestone
- [Compiler.nvim](https://github.com/Zeioth/compiler.nvim) now support all the programming languages that were originally planned. That is:
- `22 programming languages`
- `128 different ways of compiling`
- `128 unit tests`
- `100+ examples`
- `1 test suite`
- Through the lapse of 75 days. That's... A lot of coding.
✨ New languages added
- [Zig](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/zig.lua)
- [Typescript](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/typescript.lua)
- [Javascript](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/javascript.lua)
📦 Final words
- I'd like to thank all the users for giving a chance to this old programmer to give back some to the open source community.
✨ New language added
- Support for the zig programming language has been added
- 
- For more info [see this](https://github.com/Zeioth/compiler.nvim/wiki/zig-compiler).
✨ New language added
- Visual Basic .NET
- 
- I don't if anyone actually use this language nowadays anymore, but it was easy to add.
🐛 Visual basic .NET DAP debugger
- 
✨ New compilation options for java/kotlin
- Now you can choose compiling as .class or .jar
- 
🐛 Fixes for java and kotlin
- Java and Kotlin `.solution.toml` have been fixed, and now work the same way as all the other languages.
- 
- Specifying the entry point file and the output is enough. Even if you only want to compile .class files, the compiler will be smart enough to know what to do.
✨ New languages supported
- [Kotlin](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/kotlin.lua)
- 
✨ New languages supported
- [Dart](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/dart.lua)
- [Flutter](https://github.com/Zeioth/Compiler.nvim/blob/main/lua/compiler/languages/dart.lua)
✨ New wiki pages
- [How to setup DAP for Dart/Flutter](https://github.com/Zeioth/compiler.nvim/wiki/DAP-support-dart)
📦 Screenshots
- New available options have been tested with automated tests to guarantee they work correctly
- 
- You can run flutter code
- 
- Or you can debug it on DAP!
- 
✨ New languages supported
- The `R` language
- 
✨ New compiler options
- Added `REPL` for the languages
- `Python`
- `R`
- `F#`
✨ New languages
- [F#](https://github.com/Zeioth/compiler.nvim/blob/main/lua/compiler/languages/fsharp.lua): Options available `Dotnet run this file on REPL`, `Dotnet build & run` and `Dotnet build`.
- 
- Example of using the F# REPL:
- 
- Example of using [DAP with F#](https://github.com/Zeioth/compiler.nvim/wiki/DAP-support-F%23):
- 
✨ New command
- `CompilerStop`: dispose all tasks.
- This can be useful for users who want to build a key mapping like
- ```lua
- -- Stop all tasks and redo
- vim.api.nvim_buf_set_keymap(0, 'n', '<S-F6>', function()
- vim.cmd(CompilerStop)
- vim.cmd(CompilerRedo)
- end", { noremap = true, silent = true })
- + 2 more
