Code Monkey home page Code Monkey logo

jucipp's Introduction

This project has moved to https://gitlab.com/cppit/jucipp.

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. See language-server-protocol/specification.md for the currently defined language identifiers.
    • 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
  • Multiple cursors
  • Auto-indentation through clang-format or Prettier if installed
  • Source minimap
  • Split view
  • Multiple cursors
  • 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.

jucipp's People

Contributors

archshift avatar artisdom avatar doe300 avatar donbcd avatar eidheim avatar goto40 avatar hia3 avatar hwidth avatar ingmarlehmann avatar insunaa avatar istarnion avatar junrrein avatar madewithlinux avatar nshcat avatar null3rr0r avatar oyvang avatar pamarcos avatar physiix avatar rpavlik avatar szymonk211 avatar tedjk avatar vadymkyiv avatar vjschneid avatar voldyman avatar zalox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jucipp's Issues

Home path for windows

Boost.Filesystem seems to be missing this function. Does boost::filesystem::path("~/") work under Windows?

Make install easier

The install of juCi++ should be these commands:

cmake .
make
sudo make install

This can be acquired by making the CMakeLists.txt move them with the install command.

The config and plugins file should also be installed to an appdata-folder.

.juci #or something in the home directory on unix systems and %APPDATA%-folder on Windows.

yotta integration

What do you think about integrating yotta?

It's a module system for C & C++, with build-system based around CMake.

Possible memory leak

After working in juci for about an hour it uses about 5GB ram with one file open.

Add CMake builddir option

Never thought about it before, since I always ignore the CMake-generated files using .gitignore, but there are probably some cmake option that make this doable. Will look into this soon, and most likely add this option in preferences.

juci gets clang errors when wrong ending on line

I was programming now and got an diagnostic message saying "Error: no constructor definition for Directories"

in notebook.cc on line ~185

  // Where directories was underlined with error. 
  auto directories = *Singleton::directories();
  if(directories.cmake && directories.cmake->pr//.......

I put the cursor at the end of the line and pressed delete until I got this:

  auto directories = *Singleton::directories();if(directories.cmake && directories.cmake->pr//.......

I pressed enter and got back to the first snippet, then the error message disappeared. I also tried to repoen juci, but no luck, only by deleting the line change character and replacing it I got rid of the message.

Compilation error on Debian testing (g++-4.9.2)

/home/olece/test/jucipp/juci/source.cc: In constructor 'Source::Model::Model(const Source::Config&)':
/home/olece/test/jucipp/juci/source.cc:105:17: error: no matching function for call to 'clang::TranslationUnit::TranslationUnit()'
config_(config) {
^
/home/olece/test/jucipp/juci/source.cc:105:17: note: candidates are:
In file included from /usr/local/lib/libclangmm/include/clangmm.h:3:0,
from /home/olece/test/jucipp/juci/source.h:7,
from /home/olece/test/jucipp/juci/source.cc:1:
/usr/local/lib/libclangmm/include/TranslationUnit.h:27:5: note: clang::TranslationUnit::TranslationUnit(clang::Index_, const string&)
TranslationUnit(Index index,
^
/usr/local/lib/libclangmm/include/TranslationUnit.h:27:5: note: candidate expects 2 arguments, 0 provided
/usr/local/lib/libclangmm/include/TranslationUnit.h:23:5: note: clang::TranslationUnit::TranslationUnit(clang::Index_, const string&, const std::vector<const char
>&, const std::mapstd::basic_string<char, std::basic_string >&)
TranslationUnit(Index index,
^
/usr/local/lib/libclangmm/include/TranslationUnit.h:23:5: note: candidate expects 4 arguments, 0 provided
/usr/local/lib/libclangmm/include/TranslationUnit.h:20:5: note: clang::TranslationUnit::TranslationUnit(clang::Index
, const string&, const std::vector<const char*>&)
TranslationUnit(Index index,
^
/usr/local/lib/libclangmm/include/TranslationUnit.h:20:5: note: candidate expects 3 arguments, 0 provided
/usr/local/lib/libclangmm/include/TranslationUnit.h:18:9: note: constexpr clang::TranslationUnit::TranslationUnit(const clang::TranslationUnit&)
class TranslationUnit {
^
/usr/local/lib/libclangmm/include/TranslationUnit.h:18:9: note: candidate expects 1 argument, 0 provided
CMakeFiles/juci.dir/build.make:123: recipe for target 'CMakeFiles/juci.dir/source.cc.o' failed
make[2]: *
* [CMakeFiles/juci.dir/source.cc.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/juci.dir/all' failed
make[1]: *** [CMakeFiles/juci.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

libclang crash on OS X

Assertion failed: (BeginFileID == EndFileID), function getRawTextSlow, file /tmp/llvm20150821-18657-1xlbfj1/llvm-3.6.2.src/tools/clang/lib/AST/RawCommentList.cpp, line 107.
libclang: crash detected in code completion
Assertion failed: (TemplateIds.empty() && "Still alive TemplateIdAnnotations around?"), function ~Parser, file /tmp/llvm20150821-18657-1xlbfj1/llvm-3.6.2.src/tools/clang/lib/Parse/Parser.cpp, line 417.

Boost version 1.59 preperation

Changes to boost that affects this project:

  • Property Tree:
A new JSON parser with full Unicode support.
Breaking change: The new parser does not support comments or string concatenation in JSON files. These features were non-standard extensions of the old parser but their removal could break code which was relying on them.

We need to document the config file due to this.

Also boost log breaks:

  • Boost log
Breaking change: The library has been ported to Boost.TypeIndex for its underlying type info management tool. This affected the following public interfaces:
invalid_type exceptions thrown by the library now have typeindex::type_index attached as the description of the offending type. The type was previously identified by type_info_wrapper.
Boost.Exception type_info_info error information now contains typeindex::type_index instead of type_info_wrapper.
attribute_value::get_type() now returns typeindex::type_index instead of type_info_wrapper. User-defined attribute value implementations should be similarly changed (the attribute_value::impl::get_type() virtual method now also returns typeindex::type_index).

I do not think we break because of this, but nice to keep in mind.

Question: Reach TextViews from singletons?

Currently I'm doing it like this:

// get offset of cursor in textview
      [](){
        auto g_application = g_application_get_default();
        auto gio_application = Glib::wrap(g_application, true);
        auto application = Glib::RefPtr<Application>::cast_static(gio_application);
        if (application) {
          auto view = application->window->notebook.get_current_view();
          if (view != nullptr) {
            return view->get_source_buffer()->get_insert()->get_iter().get_offset();
          }
        }
        return -1;       
      },

any better way? @eidheim

Downloadable portable

I managed to create a moveable working zip. I ran it on Windows Server 2012, Windows 7 and Windows 8.1. With config in appdata.

I need to figure out gtk warnings or use MS file chooser istead of gnomes.

Footprint is about 60mb.

Edit: Better language.

Chaotic times: new gtk3, clang and g++ versions

At the moment gnome3.18 is coming and most distributors are working hard to create binaries of gtk3.18 packages with their dependencies and related sources. Expect some issues until this is all worked out. Homebrew will soon, for instance, ship with gtksourceviewmm3.18, they have already shipped gtksourceview3.18, and at the moment there are some incompabilities with current gtksourceviewmm. Have also convinced MSYS2 to ship with gtksourceviewmm, but they will ship 3.18, and not versions below. I guess we have to wait some hours/days here as well.

Also, newest version of clang (3.7) has some issues, but 3.6 and below should work fine.

On top of this, I think Debian is on its way to compile all their packages with gcc5.2, which could lead to additional strangeness in the near future, at least for those using Debian testing/unstable/experimental directly or indirectly through child distributions.

Edit: The MSYS 2 contributors seems to be working quite effectively:)

Terminal.cc does not compile in cygwin

Is there any way of implementing popen3 without unistd.h? Is there some boost-libraries maybe that does the trick? I think the open and pipe methods are gnu++11 and not std++11, or am I completely wrong?

Make fails on windows - commit e65e455d362b5433c1692e9395a88aedf89de7c0

Discovered when master had been merged with: "Mostly process fixes and cleanup #101"
Master is on commit e65e455

Here is the output when running make:

GeirMorten@oyvang MSYS ~/jucipp
$ make
[  2%] Building CXX object src/CMakeFiles/juci.dir/juci.cc.obj
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\cmath:44:0,
                 from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\random:38,
                 from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algo.h:65,
                 from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\algorithm:62,
                 from D:/Programmer/Msys264bit/mingw64/include/glibmm-2.4/glibmm/containerhandle_shared.h:31,
                 from D:/Programmer/Msys264bit/mingw64/include/glibmm-2.4/glibmm/arrayhandle.h:23,
                 from D:/Programmer/Msys264bit/mingw64/include/glibmm-2.4/glibmm.h:91,
                 from D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm.h:87,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:4,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
c:\mingw\include\math.h: In function 'float hypotf(float, float)':
c:\mingw\include\math.h:635:30: error: '_hypot' was not declared in this scope
 { return (float)(_hypot (x, y)); }
                              ^
In file included from D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm/combobox.h:34:0,
                 from D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm/appchooserbutton.h:28,
                 from D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm.h:107,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:4,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm/treeview.h: In function 'void Gtk::TreeView_Private::_auto_store_on_cellrenderer_text_edited_numerical(const Glib::ustring&, const Glib::ustring&, int, const Glib::RefPtr<Gtk::TreeModel>&)':
D:/Programmer/Msys264bit/mingw64/include/gtkmm-3.0/gtkmm/treeview.h:2456:49: error: 'stod' is not a member of 'std'
       auto new_value = static_cast<ColumnType>( std::stod(new_text) );
                                                 ^
In file included from D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions/formatters/c_decorator.hpp:21:0,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions/formatters.hpp:29,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions.hpp:26,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/logging.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:5,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/mingw64/include/boost/log/detail/snprintf.hpp: At global scope:
D:/Programmer/Msys264bit/mingw64/include/boost/log/detail/snprintf.hpp:45:9: error: '::swprintf' has not been declared
 using ::swprintf;
         ^
D:/Programmer/Msys264bit/mingw64/include/boost/log/detail/snprintf.hpp:46:9: error: '::vswprintf' has not been declared
 using ::vswprintf;
         ^
In file included from D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions/formatters.hpp:29:0,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions.hpp:26,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/logging.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:5,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions/formatters/c_decorator.hpp: In static member function 'static std::size_t boost::log::v2_mt_nt5::expressions::aux::c_decorator_traits<wchar_t>::print_escaped(wchar_t (&)[N], wchar_t)':
D:/Programmer/Msys264bit/mingw64/include/boost/log/expressions/formatters/c_decorator.hpp:115:17: error: 'swprintf' is not a member of 'boost::log::v2_mt_nt5::aux'
         int n = boost::log::aux::swprintf(buf, N, format, val);
                 ^
In file included from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/terminal.h:11:0,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:11,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/notebook.h:7,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/window.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/../tiny-process-library/process.hpp: At global scope:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/../tiny-process-library/process.hpp:66:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex close_mutex;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/../tiny-process-library/process.hpp:69:3: error: 'thread' in namespace 'std' does not name a type
   std::thread stdout_thread, stderr_thread;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/../tiny-process-library/process.hpp:71:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex stdin_mutex;
   ^
In file included from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:11:0,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/notebook.h:7,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/window.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/terminal.h:26:5: error: 'thread' in namespace 'std' does not name a type
     std::thread wait_thread;
     ^
In file included from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:11:0,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/notebook.h:7,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/window.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/terminal.h:48:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex async_print_strings_mutex;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/terminal.h:49:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex async_print_on_line_strings_mutex;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/terminal.h:53:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex processes_mutex;
   ^
In file included from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/notebook.h:7:0,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/window.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:6,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:52:5: error: 'thread' in namespace 'std' does not name a type
     std::thread parse_thread;
     ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:53:5: error: 'mutex' in namespace 'std' does not name a type
     std::mutex parse_mutex;
     ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:92:5: error: 'thread' in namespace 'std' does not name a type
     std::thread autocomplete_thread;
     ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:112:5: error: 'mutex' in namespace 'std' does not name a type
     std::mutex prefix_mutex;
     ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:116:5: error: 'thread' in namespace 'std' does not name a type
     std::thread delete_thread;
     ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/source_clang.h:117:5: error: 'thread' in namespace 'std' does not name a type
     std::thread full_reparse_thread;
     ^
In file included from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/singletons.h:5:0,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:2:
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/directories.h:45:3: error: 'mutex' in namespace 'std' does not name a type
   std::mutex update_mutex;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/directories.h:46:3: error: 'thread' in namespace 'std' does not name a type
   std::thread update_thread;
   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc: In member function 'virtual void Application::on_activate()':
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:69:7: error: 'thread' is not a member of 'std'
       std::thread another_juci_app([this, directory, files_in_directory](){
       ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:69:7: note: suggested alternative:
In file included from D:/Programmer/Msys264bit/mingw64/include/boost/log/attributes/current_thread_id.hpp:29:0,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/log/utility/setup/common_attributes.hpp:25,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/logging.h:9,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:5,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/mingw64/include/boost/log/detail/thread_id.hpp:36:8: note:   'boost::log::v2_mt_nt5::aux::thread'
 struct thread
        ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:69:19: error: expected ';' before 'another_juci_app'
       std::thread another_juci_app([this, directory, files_in_directory](){
                   ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:72:8: error: expected primary-expression before ')' token
       });
        ^
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:72:8: error: expected ';' before ')' token
D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:73:7: error: 'another_juci_app' was not declared in this scope
       another_juci_app.detach();
       ^
In file included from D:/Programmer/Msys264bit/mingw64/include/boost/filesystem/path_traits.hpp:23:0,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/filesystem/path.hpp:25,
                 from D:/Programmer/Msys264bit/mingw64/include/boost/log/sinks/text_file_backend.hpp:28,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/logging.h:7,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.h:5,
                 from D:/Programmer/Msys264bit/home/GeirMorten/jucipp/src/juci.cc:1:
D:/Programmer/Msys264bit/mingw64/include/boost/system/error_code.hpp: At global scope:
D:/Programmer/Msys264bit/mingw64/include/boost/system/error_code.hpp:221:36: warning: 'boost::system::posix_category' defined but not used [-Wunused-variable]
     static const error_category &  posix_category = generic_category();
                                    ^
D:/Programmer/Msys264bit/mingw64/include/boost/system/error_code.hpp:222:36: warning: 'boost::system::errno_ecat' defined but not used [-Wunused-variable]
     static const error_category &  errno_ecat     = generic_category();
                                    ^
D:/Programmer/Msys264bit/mingw64/include/boost/system/error_code.hpp:223:36: warning: 'boost::system::native_ecat' defined but not used [-Wunused-variable]
     static const error_category &  native_ecat    = system_category();
                                    ^
src/CMakeFiles/juci.dir/build.make:63: recipe for target 'src/CMakeFiles/juci.dir/juci.cc.obj' failed
make[2]: *** [src/CMakeFiles/juci.dir/juci.cc.obj] Error 1
CMakeFiles/Makefile2:85: recipe for target 'src/CMakeFiles/juci.dir/all' failed
make[1]: *** [src/CMakeFiles/juci.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

readability issues?

Cursorily looking through the code:
no coments?
messy with gtkmm class names?
no "final", "override", "default" ext. keywords to simplify readability.
inheritance vs composition, especially from stl )))
and more others.
Feel like project will become unmaintainable after a while.
I am not an expert in c++ and can be wrong. It's all IMHO.

Crash on Windows when running for instance juci . src/menu.cc src/menu.h

I think the issue was introduced with a new clang version (3.7), will fix this Today or Tomorrow hopefully.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 2476.0x3fc]
0x000000000378e664 in ?? () from c:\msys64\mingw64\bin\libclang.dll
(gdb) backtrace
#0  0x000000000378e664 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#1  0x0000000002e6a236 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#2  0x0000000002e6c0b7 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#3  0x0000000002c89c28 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#4  0x000000000378e986 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#5  0x000000000378e9e7 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#6  0x000000000378ea48 in ?? () from c:\msys64\mingw64\bin\libclang.dll
#7  0x0000000002c7a77a in ?? () from c:\msys64\mingw64\bin\libclang.dll
#8  0x0000000002c8b32e in ?? () from c:\msys64\mingw64\bin\libclang.dll
#9  0x0000000000472aa1 in clang::TranslationUnit::ReparseTranslationUnit (
    this=0x7c16ab0, Python Exception <type 'exceptions.ValueError'> Cannot find type const std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_Rep_type:
buffers=std::map with 1 elements, flags=142)
    at C:/msys64/home/olece/jucipp/libclangmm/src/TranslationUnit.cc:70
#10 0x00000000004223f4 in Source::ClangViewParse::<lambda()>::operator() (
    __closure=0x7c1eb68)
    at C:/msys64/home/olece/jucipp/src/source_clang.cc:148
#11 std::_Bind_simple<Source::ClangViewParse::init_parse()::<lambda()>()>::_M_invoke<> (this=0x7c1eb68)
    at C:/msys64/mingw64/include/c++/5.2.0/functional:1531
#12 std::_Bind_simple<Source::ClangViewParse::init_parse()::<lambda()>()>::operator() (this=0x7c1eb68) at C:/msys64/mingw64/include/c++/5.2.0/functional:1520
#13 std::thread::_Impl<std::_Bind_simple<Source::ClangViewParse::init_parse()::<lambda()>()> >::_M_run(void) (this=0x7c1eb50)
    at C:/msys64/mingw64/include/c++/5.2.0/thread:115
#14 0x000000006fd06050 in ?? () from c:\msys64\mingw64\bin\libstdc++-6.dll
#15 0x0000000064944ac4 in ?? () from c:\msys64\mingw64\bin\libwinpthread-1.dll
#16 0x000007feffcb415f in srand () from C:\Windows\system32\msvcrt.dll
#17 0x000007feffcb6ebd in msvcrt!_ftime64_s ()
   from C:\Windows\system32\msvcrt.dll
#18 0x0000000077ab5a4d in KERNEL32!BaseThreadInitThunk ()
   from C:\Windows\system32\kernel32.dll
#19 0x0000000077beb831 in ntdll!RtlUserThreadStart ()
   from C:\Windows\SYSTEM32\ntdll.dll
#20 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Refactoring

After checking out the high level libraries (http://clang.llvm.org/docs/LibTooling.html) I believe our libclangmm is quite much better to achieve fast and accurate refactoring (for instance rename across files). The high level libraries (LibTooling) feels like Java subclass madness with template programming on top. Really bad choices of the libclang people in my opinion, and I'll leave out the compiling problems! libclangmm is also much faster, since we can reuse the translationunits, and clang-rename, for instance, was very buggy (did not work correctly on one file even, and with two files it went crazy). clang-rename did also NOT parse the files in parallel...

However, refactoring is almost ready in the lastest libclangmm, at least renaming for instance. But to use it we have to open all the files that are using/declaring/initiate the variables/methods/classes/etc and parse them (in parallell) if they are not open yet and has a ready translationunit. I guess the easiest solution is to open all the files needed in tabs (after figuring out how to find all the files that includes a specific header file, direct or indirect), if they are not yet open, be sure all the needed tabs are parsed and saved, and finally apply the refactoring (without saving). Or we could do this in the background with maybe a dialog asking the user to apply the refactoring on the shown files, and save them. Or maybe you guys have a better idea how this could work?

Also, given a header file, have you seen a way to find all the cpp/header-files including the given header file? That is direct or indirect through other includes?

Feel free to label this, I didn't figure out how to do that.

after make install run ldconfig

This fixes the "juci: error while loading shared libraries: libclangmm.so: cannot open shared object file: No such file or directory" error when running "juci" without path after "make install". Maybe this should be done from libclangmm's make install when I think about it. Probably some way to do this from CMakeLists.txt (that is, a command for updating the dynamic linker and say there is a new library installed).

jucipp crash - libclang assertion failure

Assertion failed: ((data().DefaultedMoveConstructorIsDeleted || needsOverloadResolutionForMoveConstructor()) && "move constructor should not be deleted"), function setImplicitMoveConstructorIsDeleted, file /tmp/llvm20151001-35361-7ib9zr/llvm-3.6.2.src/tools/clang/include/clang/AST/DeclCXX.h, line 909.
libclang: crash detected in code completion
Assertion failed: (TemplateIds.empty() && "Still alive TemplateIdAnnotations around?"), function ~Parser, file /tmp/llvm20151001-35361-7ib9zr/llvm-3.6.2.src/tools/clang/lib/Parse/Parser.cpp, line 417.

Only seen this once though, while modifying 3-4 files at the same time on OS X. Unable to reproduce it, at least yet.

Error in pasting into a file

Hello!

Whenever I'm trying to copy and paste from a text editor into a file in juci, I get this crash and error:

"(juci:5780): Gtk-WARNING **: /tmp/buildd/gtk+3.0-3.14.5/./gtk/gtktextbtree.c:4020: byte index off the end of the line

(juci:5780): Gtk-ERROR **: Byte index 2 is off the end of the line".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.