emacs-lsp / emacs-ccls

Emacs client for ccls, a C/C++ language server
200 stars 29 forks source link

ccls hangs when there are too many files to watch #59

Closed ztlevi closed 5 years ago

ztlevi commented 5 years ago

My project is based on bazel. Once I generated proper compile_commands.json. It works fine but it will hang emacs when bootstrapping emacs and open a cc file. I need to press C-g couple times to stop it.

I tried to set lsp-file-watch-threshold to nil but no luck get it working.

Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventLogger/tests/_objs/EventLogManagerTest
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Caws-cpp-sdk-core___Uexternal_Ssystem_Susr_Slocal_Slib
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Caws-cpp-sdk-s3___Uexternal_Ssystem_Susr_Slocal_Slib
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Cboost_Ufilesystem___Uexternal_Ssystem_Susr_Slocal_Slib
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Cboost_Usystem___Uexternal_Ssystem_Susr_Slocal_Slib
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Cdl___Uexternal_Ssystem_Susr_Slib_Sx86_U64-linux-gnu
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Cpthread___Uexternal_Ssystem_Susr_Slib_Sx86_U64-linux-gnu
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Crt___Uexternal_Ssystem_Susr_Slib_Sx86_U64-linux-gnu
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/_solib_haswell/_U@system_S_S_Ctbb___Uexternal_Ssystem_Susr_Slocal_Slib_Sintel64_Sgcc4.4
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/Log
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/Log/EventReader
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/Log/EventReader/tests
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/resources
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/resources/configs
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/EventReaderTest.runfiles/{PROJECT_NAME}/core/resources/configs/feature
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/_objs
Creating watch for /home/ztlevi/.cache/bazel/_bazel_user/933c2f549343e099e3a6911b282cb71c/execroot/{PROJECT_NAME}/bazel-out/default-opt/bin/core/Log/EventReader/tests/_objs/EventReaderTest
ztlevi commented 5 years ago

I'm closing this because I found I need to have proper regex to exclude symlinked folders, e.g. bazel-code.

  (dolist (dir '("[/\\\\]\\.ccls-cache$"
                 "[/\\\\]\\.mypy-cache$"
                 "[/\\\\]\\.pytest-cache$"
                 "bazel-bin$"
                 "bazel-code$"
                 "bazel-genfiles$"
                 "bazel-out$"
                 "bazel-testlogs$"
                 "[/\\\\]\\.clwb$"
                 ))
    (push dir lsp-file-watch-ignored))