You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
eidheim 80cfdf97b1 Improved entry history that is for instance used in the search dialog. Can now go to previous text history, and back to last written text 6 years ago
docs Updated language server instructions for python3 support 7 years ago
lib Updated libclangmm submodule 6 years ago
share move cmake_modules to share folder 8 years ago
src Improved entry history that is for instance used in the search dialog. Can now go to previous text history, and back to last written text 6 years ago
tests Fixes #373 : added Edit->Extend/Shrink Selection 6 years ago
.appveyor.yml cascade and remove two conflicting packages 7 years ago
.clang-format Formatted code with custom clang-format 8 years ago
.gitignore Fixes #251: Go to Usage and Rename now includes unopened files. Also includes various other cleanups related to this work. 8 years ago
.gitlab-ci.yml Made use of clang's Thread Safety Analysis. Also added two new ci-jobs: static-analysis and thread-safety-analysis using the arch linux image. Static analysis tasks were removed from the other jobs. 7 years ago
.gitmodules Use full submodule urls to make sure potential mirrors/forks outside of gitlab work as expected 8 years ago
CMakeLists.txt Added preferences item debug_place_cursor_at_stop to update cursor when the debugger stops as suggested in #252 6 years ago
LICENSE update year 7 years ago
README.md Fixes #373 : added Edit->Extend/Shrink Selection 6 years ago

README.md

juCi++

juCi++: a lightweight, platform independent C++-IDE with support for C++11, C++14 and C++17 features depending on libclang version.

About

Current IDEs struggle with C++ support due to the complexity of the programming language. juCI++, however, is designed especially towards libclang with speed, stability, and ease of use in mind.

Features

  • Platform independent
  • Fast, responsive and stable (written extensively using C++11/14 features)
  • Syntax highlighting for more than 100 different file types
  • C++ warnings and errors on the fly
  • C++ Fix-its
  • Integrated Clang-Tidy checks possible through clang plugins, for instance (recreating existing build is needed):
    CXX=clang++ CXXFLAGS="-Xclang -add-plugin -Xclang clang-tidy -Xclang -plugin-arg-clang-tidy -Xclang -checks='-*, clang-analyzer-core.*'" juci [project-path]
  • Debug integration, both local and remote, through lldb
  • Supports the following build systems:
    • CMake
    • Meson
  • Git support through libgit2
  • Fast C++ autocompletion
  • Tooltips showing type information and doxygen documentation (C++)
  • Rename refactoring across files (C++)
  • Highlighting of similar types (C++)
  • Automated documentation search (C++)
  • Go to declaration, implementation, methods and usages (C++)
  • OpenCL and CUDA files are supported and parsed as C++
  • Other file types:
    • Language server protocol support is enabled if [language identifier]-language-server executable is found. This executable can be a symbolic link to one of your installed language server binaries.
    • otherwise, only keyword and buffer completion supported
  • Find symbol through Ctags
  • Spell checking depending on file context
  • Run shell commands within juCi++
  • Regex search and replace
  • Smart paste, keys and indentation
  • Extend/shrink selection
  • Multiple cursors
  • Snippets can be added in ~/.juci/snippets.json. The language ids used in the regexes can be found here: https://gitlab.gnome.org/GNOME/gtksourceview/tree/master/data/language-specs.
  • Auto-indentation through clang-format or Prettier if installed
  • Source minimap
  • Split view
  • Full UTF-8 support
  • Wayland supported with GTK+ 3.20 or newer

See enhancements for planned features.

Screenshots

Dependencies

  • boost-filesystem
  • boost-serialization
  • gtkmm-3.0
  • gtksourceviewmm-3.0
  • aspell
  • libclang
  • lldb
  • libgit2
  • libclangmm (downloaded directly with git --recursive, no need to install)
  • tiny-process-library (downloaded directly with git --recursive, no need to install)

Installation

See installation guide.

Documentation

See how to build the API doc.

Coding style

Due to poor lambda support in clang-format, a custom clang-format is used with the following patch applied:

diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp
index bb8efd61a3..e80a487055 100644
--- a/lib/Format/ContinuationIndenter.cpp
+++ b/lib/Format/ContinuationIndenter.cpp
@@ -276,6 +276,8 @@ LineState ContinuationIndenter::getInitialState(unsigned FirstIndent,
 }
 
 bool ContinuationIndenter::canBreak(const LineState &State) {
+  if(Style.ColumnLimit==0)
+    return true;
   const FormatToken &Current = *State.NextToken;
   const FormatToken &Previous = *Current.Previous;
   assert(&Previous == Current.Previous);
@@ -325,6 +327,8 @@ bool ContinuationIndenter::canBreak(const LineState &State) {
 }
 
 bool ContinuationIndenter::mustBreak(const LineState &State) {
+  if(Style.ColumnLimit==0)
+    return false;
   const FormatToken &Current = *State.NextToken;
   const FormatToken &Previous = *Current.Previous;
   if (Current.MustBreakBefore || Current.is(TT_InlineASMColon))