New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cquery vs ccls #15

Closed
innerout opened this Issue May 15, 2018 · 9 comments

Comments

Projects
None yet
2 participants
@innerout

innerout commented May 15, 2018

First of all congratulations for the great work on cquery and ccls.

I would like to ask what are the advantages of using ccls over cquery except the ones in Readme.
For example in the longterm?

Also i would like to ask if there will be better support in the emacs plugin for ccls compared to cquery?

@MaskRay

This comment has been minimized.

Show comment
Hide comment
@MaskRay

MaskRay May 15, 2018

Owner

Someone has asked this before :) and I left a brief note at MaskRay/emacs-ccls#1

I will leverage more clang and llvm C++ API. Windows has not been tested. I know that releases.llvm.org Windows bundled clang+llvm does not include C++ headers so if someone do intent to use ccls on Windows, they need to clone the clang+llvm sources (see the bottom of https://github.com/MaskRay/ccls/wiki/Build)

Owner

MaskRay commented May 15, 2018

Someone has asked this before :) and I left a brief note at MaskRay/emacs-ccls#1

I will leverage more clang and llvm C++ API. Windows has not been tested. I know that releases.llvm.org Windows bundled clang+llvm does not include C++ headers so if someone do intent to use ccls on Windows, they need to clone the clang+llvm sources (see the bottom of https://github.com/MaskRay/ccls/wiki/Build)

@innerout

This comment has been minimized.

Show comment
Hide comment
@innerout

innerout May 15, 2018

What about the emacs question?

innerout commented May 15, 2018

What about the emacs question?

@MaskRay

This comment has been minimized.

Show comment
Hide comment
@MaskRay

MaskRay May 15, 2018

Owner

There are not many differences, except for

;; ccls.el
(defcustom ccls-project-root-matchers
  '(".ccls-root" projectile-project-root)
  "List of matchers that are used to locate the ccls project roots.

and I use uint64_t as primary key in the memory index of ccls, thus corresponding changes to ccls-*-hierarchy.el

Owner

MaskRay commented May 15, 2018

There are not many differences, except for

;; ccls.el
(defcustom ccls-project-root-matchers
  '(".ccls-root" projectile-project-root)
  "List of matchers that are used to locate the ccls project roots.

and I use uint64_t as primary key in the memory index of ccls, thus corresponding changes to ccls-*-hierarchy.el

@innerout

This comment has been minimized.

Show comment
Hide comment
@innerout

innerout May 15, 2018

Feature wise will you keep up with cquery or you will add your own features?

innerout commented May 15, 2018

Feature wise will you keep up with cquery or you will add your own features?

@MaskRay

This comment has been minimized.

Show comment
Hide comment
@MaskRay

MaskRay May 15, 2018

Owner

I heavily rely on a good C++ cross reference tool and clangd cannot meet my needs (I actually have a lot of complains to its index design). I'll certainly maintain this (at least for considerable amount of time)

In terms of features, the number of supported LSP features has been stable for some time.
cross references + hierarchies. There are no newer extensions after {$cquery,$ccls}/memberHierarchy. I of course keep an eye on cquery development and backport useful commits (like some cleanup) but I also object to many of its choices:

  • heuristic deriving of system include path. I replaced the project.cc code with clangDriver which I would enhance in the future to detect paths like /usr/include /usr/include/c++/v1
  • AbsolutePath
  • Complicated import pipeline. The index merge and pipeline is unnecessarily complicated to me and I don't like it when I first saw them. I managed to remove them in the past 2 weeks, and benefited from that (much simpler code, faster indexing, mitigated bugs that used to bother me when I saved the document)
  • The large number of files under src/. ccls has ~30 fewer files til now.
Owner

MaskRay commented May 15, 2018

I heavily rely on a good C++ cross reference tool and clangd cannot meet my needs (I actually have a lot of complains to its index design). I'll certainly maintain this (at least for considerable amount of time)

In terms of features, the number of supported LSP features has been stable for some time.
cross references + hierarchies. There are no newer extensions after {$cquery,$ccls}/memberHierarchy. I of course keep an eye on cquery development and backport useful commits (like some cleanup) but I also object to many of its choices:

  • heuristic deriving of system include path. I replaced the project.cc code with clangDriver which I would enhance in the future to detect paths like /usr/include /usr/include/c++/v1
  • AbsolutePath
  • Complicated import pipeline. The index merge and pipeline is unnecessarily complicated to me and I don't like it when I first saw them. I managed to remove them in the past 2 weeks, and benefited from that (much simpler code, faster indexing, mitigated bugs that used to bother me when I saved the document)
  • The large number of files under src/. ccls has ~30 fewer files til now.
@innerout

This comment has been minimized.

Show comment
Hide comment
@innerout

innerout May 15, 2018

OK one last question. I am talking about emacs because cquery's master branch does not work with emacs-cquery plugin so if you change something you are the maintainer of the emacs-ccls and it will have instant support right?
It would be good to have a link to the other issue with the cquery vs ccls conversation and mine issue in readme so people can see it easier.

innerout commented May 15, 2018

OK one last question. I am talking about emacs because cquery's master branch does not work with emacs-cquery plugin so if you change something you are the maintainer of the emacs-ccls and it will have instant support right?
It would be good to have a link to the other issue with the cquery vs ccls conversation and mine issue in readme so people can see it easier.

@MaskRay

This comment has been minimized.

Show comment
Hide comment
@MaskRay

MaskRay May 15, 2018

Owner

I use emacs-ccls so I have to maintain it.
The original author of cquery uses vscode thus its emacs plugin needs people to help.
(Having too many users is also a somewhat annoying thing to me.. I do like my work appreciated by users, but honestly nowadays cquery has too many inconsiderable issues from users)

Both projects are evolving, making a careful comparison may be disrespectful so I am not sure if it is the right decision to put a link there.

Owner

MaskRay commented May 15, 2018

I use emacs-ccls so I have to maintain it.
The original author of cquery uses vscode thus its emacs plugin needs people to help.
(Having too many users is also a somewhat annoying thing to me.. I do like my work appreciated by users, but honestly nowadays cquery has too many inconsiderable issues from users)

Both projects are evolving, making a careful comparison may be disrespectful so I am not sure if it is the right decision to put a link there.

@innerout

This comment has been minimized.

Show comment
Hide comment
@innerout

innerout May 15, 2018

OK thanks i am closing the issue you answered everything i wanted to know.

innerout commented May 15, 2018

OK thanks i am closing the issue you answered everything i wanted to know.

@MaskRay

This comment has been minimized.

Show comment
Hide comment
@MaskRay

MaskRay Jun 20, 2018

Owner

scturtle uploaded #9 (comment)

vscode-cquery does not support memberHierarchy which I use a lot. I also find it unnecessary to have so many customized variables for semantic highlighting cquery.highlighting.enabled.memberFunctions

Owner

MaskRay commented Jun 20, 2018

scturtle uploaded #9 (comment)

vscode-cquery does not support memberHierarchy which I use a lot. I also find it unnecessary to have so many customized variables for semantic highlighting cquery.highlighting.enabled.memberFunctions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment