In 2015, juCi++ was one of the first IDEs to utilize libclang for improved C/C++ tooling.
The integrated C/C++ support has since then improved steadily, and support for other
languages has been made possible through the language server protocol. The main goals of juCi++ is
effective resource usage, stability, and ease of use. Instead of relying on 3rd party addons,
features expected in an IDE is instead integrated directly into juCi++.
For effective development, juCi++ is primarily written for Unix/Linux systems. However, Windows users
In 2015, juCi++ was one of the first IDEs to utilize libclang for improved C/C++ tooling. The
can use juCi++ through POSIX compatibility layers such as MSYS2.
integrated C/C++ support has since then improved steadily, and support for other languages has been
made possible through the language server protocol. The main goals of juCi++ is effective resource
usage, stability, and ease of use. Instead of relying on 3rd party addons, features expected in an
IDE is instead integrated directly into juCi++.
For effective development, juCi++ is primarily written for Unix/Linux systems. However, Windows
users can use juCi++ through POSIX compatibility layers such as MSYS2.
## Features
## Features
* Platform independent
* Fast, responsive and stable (written extensively using C++11/14 features)
- Platform independent
* Syntax highlighting for more than 100 different file types
- Fast, responsive and stable (written extensively using C++11/14 features)
* Warnings and errors on the fly
- Syntax highlighting for more than 100 different file types
* Fix-its, as well as C/C++ standard header include suggestions
- Warnings and errors on the fly
* Integrated Clang-Tidy checks can be enabled in preferences
- Fix-its, as well as C/C++ standard header include suggestions
* Debug integration, both local and remote, through lldb
- Integrated Clang-Tidy checks can be enabled in preferences
* Supports the following C/C++ build systems directly (other build systems need manually generated compilation databases):
- Debug integration, both local and remote, through lldb
* CMake
- Supports the following C/C++ build systems directly (other build systems need manually generated
* Meson
compilation databases):
* Fast autocompletion
- CMake
* Tooltips showing type information and documentation
- Meson
* Rename refactoring across files
- Fast autocompletion
* Highlighting of similar types
- Tooltips showing type information and documentation
* Automated documentation search for C/C++ identifiers
- Rename refactoring across files
* Go to declaration, implementation, methods and usages
- Highlighting of similar types
* OpenCL and CUDA files are supported and parsed as C++
- Automated documentation search for C/C++ identifiers
* Non-C/C++ files are supported through the Language Server Protocol, which is enabled if an `[language identifier]-language-server` executable is found. This executable can be a symbolic link to one of your installed language server binaries.
- Go to declaration, implementation, methods and usages
* For additional instructions, see: [setup of tested language servers](docs/language_servers.md)
- OpenCL and CUDA files are supported and parsed as C++
* Non-C/C++ projects are also supported, such as Python, JavaScript, and Rust projects
- Non-C/C++ files are supported through the Language Server Protocol, which is enabled if an
* Git support through libgit2
`[language identifier]-language-server` executable is found. This executable can be a symbolic
* Find symbol through Ctags ([Universal Ctags](https://github.com/universal-ctags/ctags) is recommended)
link to one of your installed language server binaries.
* Spell checking depending on file context
- For additional instructions, see: [setup of tested language servers](docs/language_servers.md)
* Run shell commands within juCi++
- Non-C/C++ projects are also supported, such as Python, JavaScript, and Rust projects
* ANSI colors are supported. Enable for instance by setting the environment variables `CLICOLOR=1 CLICOLOR_FORCE=1` before starting juCi++. Colored diagnostics from clang is enabled through the flag `-fcolor-diagnostics`, and gcc uses the flag `-fdiagnostics-color`.
- Git support through libgit2
* Regex search and replace
- Find symbol through Ctags ([Universal Ctags](https://github.com/universal-ctags/ctags) is
* Smart paste, keys and indentation
recommended)
* Extend/shrink selection
- Spell checking depending on file context
* Multiple cursors
- Run shell commands within juCi++
* Snippets can be added in ~/.juci/snippets.json using the [TextMate snippet syntax](https://macromates.com/manual/en/snippets). The language ids used in the regexes can be found here: https://gitlab.gnome.org/GNOME/gtksourceview/tree/master/data/language-specs.
- ANSI colors are supported. Enable for instance by setting the environment variables
* Auto-indentation through [clang-format](http://clang.llvm.org/docs/ClangFormat.html) or [Prettier](https://github.com/prettier/prettier) if installed
`CLICOLOR=1 CLICOLOR_FORCE=1` before starting juCi++. Colored diagnostics from clang is enabled
* Source minimap
through the flag `-fcolor-diagnostics`, and gcc uses the flag `-fdiagnostics-color`.
* Split view
- Regex search and replace
* Zen mode
- Smart paste, keys and indentation
* Full UTF-8 support
- Extend/shrink selection
* Wayland supported with GTK+ 3.20 or newer
- Multiple cursors
- Snippets can be added in ~/.juci/snippets.json using the
See [enhancements](https://gitlab.com/cppit/jucipp/issues?scope=all&state=opened&label_name[]=enhancement) for planned features.
[TextMate snippet syntax](https://macromates.com/manual/en/snippets). The language ids used in the