@@ -23,6 +23,7 @@ install(CODE "set(CMAKE_INSTALL_LOCAL_ONLY TRUE)" ALL_COMPONENTS)
2323option (WINGHEX_USE_FRAMELESS ON )
2424option (BUILD_TEST_PLUGIN OFF )
2525option (BUILD_SHARED_MEM_EXT OFF )
26+ option (ANGEL_LSP ON )
2627
2728add_definitions (-DAS_NO_THREADS )
2829add_definitions (-DWING_SYSTEM_NAME= "${CMAKE_SYSTEM_NAME } " )
@@ -228,7 +229,9 @@ set(CONTROL_SRC
228229 src/control/codeeditcontrolwidget.h
229230 src/control/codeeditcontrolwidget.cpp
230231 src/control/scrollablelabel.h
231- src/control/scrollablelabel.cpp)
232+ src/control/scrollablelabel.cpp
233+ src/control/wingcodeeditlsp.h
234+ src/control/wingcodeeditlsp.cpp)
232235
233236set (CLASS_SRC
234237 src/class/logger.cpp
@@ -263,16 +266,12 @@ set(CLASS_SRC
263266 src/class/appmanager.h
264267 src/class/appmanager.cpp
265268 src/class/angelscripthelper.h
266- src/class/asdatabase.cpp
267- src/class/asdatabase.h
268269 src/class/qascodeparser.h
269270 src/class/qascodeparser.cpp
270271 src/class/ascompletion.cpp
271272 src/class/ascompletion.h
272273 src/class/asbuilder.h
273274 src/class/asbuilder.cpp
274- src/class/clangformatmanager.h
275- src/class/clangformatmanager.cpp
276275 src/class/aspreprocesser.h
277276 src/class/aspreprocesser.cpp
278277 src/class/layoutmanager.h
@@ -310,7 +309,10 @@ set(CLASS_SRC
310309 src/class/editorviewcontext.h
311310 src/class/editorviewcontext.cpp
312311 src/class/consolehighlighanim.h
313- src/class/consolehighlighanim.cpp)
312+ src/class/consolehighlighanim.cpp
313+ src/class/angellsp.h
314+ src/class/angellsp.cpp
315+ src/class/lsp.h)
314316
315317set (INTERNAL_PLG_SRC
316318 src/class/wingangelapi.h src/class/wingangelapi.cpp
@@ -363,9 +365,6 @@ set(SETTING_SRC
363365 src/settings/othersettingsdialog.h
364366 src/settings/othersettingsdialog.cpp
365367 src/settings/othersettingsdialog.ui
366- src/settings/clangformatsetdialog.h
367- src/settings/clangformatsetdialog.cpp
368- src/settings/clangformatsetdialog.ui
369368 src/settings/qeditconfig.h
370369 src/settings/qeditconfig.cpp
371370 src/settings/qeditconfig.ui)
@@ -463,6 +462,7 @@ set(PROJECT_SOURCES
463462 src/utilities.h
464463 src/dbghelper.h
465464 src/define.h
465+ src/predefgen.h
466466 ${QCONSOLEWIDGET_SRC}
467467 ${WIDGET_FRAME_SRC}
468468 ${RIBBON_SRC}
@@ -492,8 +492,12 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
492492 qt_add_executable (WingHexExplorer2 MANUAL_FINALIZATION
493493 ${PROJECT_SOURCES} ${app_icon_resource_windows} )
494494 else ()
495+ find_package (Qt6 REQUIRED COMPONENTS Widgets )
496+
495497 qt_add_executable (WingHexExplorer2 MANUAL_FINALIZATION
496498 ${PROJECT_SOURCES} )
499+
500+ target_link_libraries (WingHexExplorer2 PRIVATE Qt6::Widgets )
497501 endif ()
498502endif ()
499503
@@ -558,6 +562,8 @@ if(QT_VERSION_MAJOR EQUAL 6)
558562 qt_finalize_executable (WingHexExplorer2 )
559563endif ()
560564
565+ add_dependencies (WingHexExplorer2 post_build_tasks build -time-make-directory )
566+
561567if (${QT_VERSION_MAJOR} EQUAL 6)
562568 if (Qt6Widgets_VERSION VERSION_GREATER_EQUAL 6.5.0)
563569 install (
@@ -604,3 +610,127 @@ target_link_options(
604610 $<$<AND :$<CONFIG :Release >,$<CXX_COMPILER_ID :Clang >>:-Wl ,--gc -sections >
605611 $<$<AND :$<CONFIG :Release >,$<CXX_COMPILER_ID :MSVC >>:/OPT :REF
606612 /OPT :ICF >)
613+
614+ if (ANGEL_LSP)
615+ set (NODE_SUBDIR "${CMAKE_SOURCE_DIR } /3rdparty/angel-lsp/server" )
616+ set (BUILD_BIN_DIR "${CMAKE_BINARY_DIR } /lsp" )
617+ set (BUILD_BIN_BUILD_DIR "${CMAKE_BINARY_DIR } /lsp-build" )
618+
619+ if (WIN32 )
620+ set (OUT_NAME "angelscript-ls.exe" )
621+ else ()
622+ set (OUT_NAME "angelscript-ls" )
623+ endif ()
624+
625+ set (SRC_JS "${NODE_SUBDIR} /src/server.ts" )
626+ set (DIST_JS "${BUILD_BIN_BUILD_DIR} /dist/server.ts" )
627+ set (OUT_BIN "${BUILD_BIN_DIR} /${OUT_NAME} " )
628+
629+ find_program (NODE_EXE NAMES node )
630+ find_program (NPM_EXE NAMES npm )
631+ find_program (NPX_EXE NAMES npx )
632+ find_program (PKG_EXE NAMES pkg )
633+
634+ if (NOT NODE_EXE)
635+ message (FATAL_ERROR "Node.js not found. Install Node >= 18." )
636+ endif ()
637+ if (NOT NPM_EXE)
638+ message (FATAL_ERROR "npm not found. Install npm." )
639+ endif ()
640+
641+ message (STATUS "Found node: ${NODE_EXE} " )
642+ message (STATUS "Found npm: ${NPM_EXE} " )
643+ if (PKG_EXE)
644+ message (STATUS "Found global pkg: ${PKG_EXE} " )
645+ elseif (NPX_EXE)
646+ message (
647+ STATUS "Found npx: ${NPX_EXE} (will use npx pkg if pkg not global)" )
648+ else ()
649+ message (
650+ STATUS
651+ "No global pkg or npx found; will call 'npm exec pkg' as fallback"
652+ )
653+ endif ()
654+
655+ if (WIN32 )
656+ set (PKG_TARGET "node18-win-x64" )
657+ elseif (APPLE )
658+ set (PKG_TARGET "node18-macos-x64" )
659+ else ()
660+ set (PKG_TARGET "node18-linux-x64" )
661+ endif ()
662+
663+ if (NPX_EXE)
664+ set (ESBUILD_CMD
665+ ${NPX_EXE}
666+ esbuild
667+ "${SRC_JS} "
668+ --bundle
669+ --platform=node
670+ --target=node18
671+ "--outfile=${BUILD_BIN_BUILD_DIR} /dist/server.ts"
672+ --minify)
673+ else ()
674+ set (ESBUILD_CMD
675+ ${NPM_EXE}
676+ exec
677+ --yes
678+ esbuild
679+ --
680+ "${SRC_JS} "
681+ --bundle
682+ --platform=node
683+ --target=node18
684+ "--outfile=${BUILD_BIN_BUILD_DIR} /dist/server.ts"
685+ --minify)
686+ endif ()
687+
688+ if (PKG_EXE)
689+ set (PKG_CMD ${PKG_EXE} "${DIST_JS} " --targets ${PKG_TARGET} --output
690+ "${OUT_BIN} " )
691+ elseif (NPX_EXE)
692+ set (PKG_CMD
693+ ${NPX_EXE}
694+ pkg
695+ "${DIST_JS} "
696+ --targets
697+ ${PKG_TARGET}
698+ --output
699+ "${OUT_BIN} " )
700+ else ()
701+ set (PKG_CMD
702+ ${NPM_EXE}
703+ exec
704+ --yes
705+ pkg
706+ --
707+ "${DIST_JS} "
708+ --targets
709+ ${PKG_TARGET}
710+ --output
711+ "${OUT_BIN} " )
712+ endif ()
713+
714+ add_custom_command (
715+ OUTPUT ${DIST_JS}
716+ WORKING_DIRECTORY ${NODE_SUBDIR}
717+ COMMAND ${CMAKE_COMMAND } -E echo "[1] npm ci (local deps)"
718+ COMMAND ${NPM_EXE} ci --silent
719+ COMMAND ${CMAKE_COMMAND } -E echo "[2] building with esbuild"
720+ COMMAND ${ESBUILD_CMD}
721+ COMMENT "Building JS bundle with esbuild -> ${DIST_JS} "
722+ VERBATIM )
723+
724+ add_custom_command (
725+ OUTPUT ${OUT_BIN}
726+ DEPENDS ${DIST_JS}
727+ WORKING_DIRECTORY ${NODE_SUBDIR}
728+ COMMAND ${CMAKE_COMMAND } -E make_directory ${BUILD_BIN_DIR}
729+ COMMAND ${CMAKE_COMMAND } -E make_directory ${BUILD_BIN_BUILD_DIR}
730+ COMMAND ${CMAKE_COMMAND } -E echo "[3] packaging with pkg/npm exec/npx"
731+ COMMAND ${PKG_CMD}
732+ COMMENT "Packaging with pkg"
733+ VERBATIM )
734+ add_custom_target (build_angel_lsp ALL DEPENDS ${OUT_BIN} )
735+ add_dependencies (WingHexExplorer2 build_angel_lsp )
736+ endif ()
0 commit comments