diff --git a/.efrocachemap b/.efrocachemap index d2b823d3..34ca0b4a 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4076,18 +4076,18 @@ "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "42649b501212bea15f4b2f2741583339", "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "03cbedec6c8f294d7fe57a6dc64803e8", "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "37b2c536cd841b40319b0efae40471ce", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "85a86ab24f3a35bff85a9954d7be135a", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "b4744e1a3bdb8a0d38873f8c0967fbc5", "build/prefab/full/mac_arm64_gui/release/ballisticakit": "5399d3f4924909ca1c0878f347e20a10", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "70784b57105accc067608e1ea50c2fbc", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "a3236ad2650a3f41f62148af7e6e7a6f", "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "58559f7512a300586b8141591a21564e", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "851e1bcd5f12bcee1a2bb9d503ab90a3", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "b7b82f5429cf87c82e0c6514a07c3815", "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "8e98e2bb1d7d9fa34f873fd2b7d82138", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "9df874848d2f0cedc815f216f9ab2958", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "161e1603f3649b1ba926fcbabee1c976", "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "49107effdf5c1ee5a0533251a99f9f6a", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "dd131f742bc7780f30fe9bbcd547a662", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "b59086a58f9fd2148c186a4974ef59dd", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "03e1623b3a2826161a8a13b09d8ee9b6", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "56b977883c7374d3feb006a9d40c3e18", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "fcdabb98d5c4aeef8b68e9e2e9cc15f6", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "96c90979b26eb1a385f7d3448a10ada8", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "c8e32e52d2a3e6663e36cf615d321af2", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "d60bd48af61f8d0110abc9acc26440c8", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "85ba4e81a1f7ae2cff4b1355eb49904f", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "498921f7eb2afd327d4b900cb70e31f9", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "85ba4e81a1f7ae2cff4b1355eb49904f", @@ -4104,14 +4104,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "0ab638b6602610bdaf432e3cc2464080", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "92394eb19387c363471ce134ac9e6a1b", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "0ab638b6602610bdaf432e3cc2464080", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "d5b059c1be49152dcc400302e27406a7", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "606d781277bc8f8cd51b7fff37b405eb", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "0204082e71fe83d5e7e9688120a5c47d", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "453de7f93862b35f208993f32a681fa1", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "e7f61245af268edad9ad09250e934a71", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "e35706c767bba1f98c568ca1f1c54361", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "71de54551134cfb4e993d8897ba91dd3", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "88053eee3b28eb71e65eef0910d02a2d", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "4df33d360a5d4e3f702a10f136cb6319", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "c446dbc526736768fb0eedb2ce7bc418", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "c2113c6e8eab2ba598fab7168da3b6c8", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "77fe6d2ee487ab510dd0b6f85a890053", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "1bfbadf7ff4a1b8fe7e13ac0f9f613d5", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "ef0a86c9189b07f9c3bccf43b90d3b0b", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b9900d7e0d8dbca5a23870a98bd703ec", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "251ece0eb9f9f7d25070a505054a6026", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "f8cd3af311ac63147882590123b78318", "src/ballistica/base/mgen/pyembed/binding_base.inc": "eeddad968b176000e31c65be6206a2bc", diff --git a/config/toolconfigsrc/dir-locals.el b/config/toolconfigsrc/dir-locals.el index 082be0f4..82acc8ef 100644 --- a/config/toolconfigsrc/dir-locals.el +++ b/config/toolconfigsrc/dir-locals.el @@ -12,32 +12,8 @@ "src/assets/pylib-apple" "src/assets/windows")))) - ;; Set up clangd as our C++ language server. - (c++-ts-mode . ((eglot-server-programs . ((c++-ts-mode . ("clangd" "--compile-commands-dir=.cache/compile_commands_db")))))) + __EFRO_EMACS_STANDARD_CPP_LSP_SETUP__ - ;; Set up python-lsp-server as our Python language server. - (python-ts-mode . ( - (eglot-server-programs . ( - (python-ts-mode . ("__EFRO_PY_BIN__" "-m" "pylsp")))) - (python-shell-interpreter . "__EFRO_PY_BIN__") - (eglot-workspace-configuration . ( - (:pylsp . (:plugins ( - :pylint (:enabled t) - :flake8 (:enabled :json-false) - :pycodestyle (:enabled :json-false) - :mccabe (:enabled :json-false) - :autopep8 (:enabled :json-false) - :pyflakes (:enabled :json-false) - :rope_autoimport (:enabled :json-false) - :rope_completion (:enabled :json-false) - :rope_rename (:enabled :json-false) - :yapf (:enabled :json-false) - :black (:enabled t - :skip_string_normalization t - :line_length 80 - :cache_config t) - :jedi (:extra_paths [__EFRO_PYTHON_PATHS_Q_REL_STR__]) - :pylsp_mypy (:enabled t - :live_mode nil - :dmypy t)))))))) + __EFRO_EMACS_STANDARD_PYTHON_LSP_SETUP__ + ) diff --git a/tools/efrotools/toolconfig.py b/tools/efrotools/toolconfig.py index 08a64e7f..6688892d 100644 --- a/tools/efrotools/toolconfig.py +++ b/tools/efrotools/toolconfig.py @@ -57,6 +57,51 @@ def _filter_tool_config(projroot: Path, cfg: str) -> str: from efrotools import getprojectconfig, PYVER + # Emacs dir-locals defaults. Note that these contain other + # replacements so need to be at the top. + + name = '__EFRO_EMACS_STANDARD_CPP_LSP_SETUP__' + if name in cfg: + cfg = cfg.replace( + name, + ';; Set up clangd as our C++ language server.\n' + ' (c++-ts-mode . ((eglot-server-programs' + ' . ((c++-ts-mode . ("clangd"' + ' "--compile-commands-dir=.cache/compile_commands_db"))))))', + ) + + name = '__EFRO_EMACS_STANDARD_PYTHON_LSP_SETUP__' + if name in cfg: + cfg = cfg.replace( + name, + ';; Set up python-lsp-server as our Python language server.\n' + ' (python-ts-mode . (\n' + ' (eglot-server-programs . (\n' + ' (python-ts-mode . ("__EFRO_PY_BIN__" "-m" "pylsp"))))\n' + ' (python-shell-interpreter . "__EFRO_PY_BIN__")\n' + ' (eglot-workspace-configuration . (\n' + ' (:pylsp . (:plugins (\n' + ' :pylint (:enabled t)\n' + ' :flake8 (:enabled :json-false)\n' + ' :pycodestyle (:enabled :json-false)\n' + ' :mccabe (:enabled :json-false)\n' + ' :autopep8 (:enabled :json-false)\n' + ' :pyflakes (:enabled :json-false)\n' + ' :rope_autoimport (:enabled :json-false)\n' + ' :rope_completion (:enabled :json-false)\n' + ' :rope_rename (:enabled :json-false)\n' + ' :yapf (:enabled :json-false)\n' + ' :black (:enabled t\n' + ' :skip_string_normalization t\n' + ' :line_length 80\n' + ' :cache_config t)\n' + ' :jedi (:extra_paths' + ' [__EFRO_PYTHON_PATHS_Q_REL_STR__])\n' + ' :pylsp_mypy (:enabled t\n' + ' :live_mode nil\n' + ' :dmypy t))))))))\n', + ) + # Stick project-root wherever they want. cfg = cfg.replace('__EFRO_PROJECT_ROOT__', str(projroot))