Commit Graph
128 Commits
Author SHA1 Message Date
Eberhard Graether 4dd032dcff ui: Multi-column layout within access nodes if no child node has edges
* use multiple columns for access nodes if no child has edges
* try to layout close to a square
* layout neighboring accesses to the width of the largest
* increase threshold to hide children on parent activation to 100
* use square layouting in inheritance trees as well
2019-04-16 16:24:38 +02:00
mlangkabel db569ee551 logic: improved fulltext search performance (issue #680)
* move to multithreaded implementation
* omit unnecessary work
2019-03-12 11:16:49 +01:00
Eberhard Graether 92c8c282f5 logic: Fixed qualifier locations not used in reference navigation and only highlighted on hovering 2019-02-04 02:04:38 +01:00
Eberhard Graether 797bf2fee5 logic: Show error updates during custom command indexing
* fixed code view showing all locations when switching view mode while showing errors
2018-12-17 00:27:16 +01:00
Eberhard Graether dd4a880ec3 ui: Show overview bundles for non-indexed or symbol types if no others available 2018-12-16 23:51:53 +01:00
Eberhard Graether 1dabbab599 ui: Extracted syntax highlighting rules for java and cpp to files
* pass file language from storage to code view
* load syntax highlighting rules files from install directory "syntax_highlighting_rules"
* files must be named <language_identifier>.rules to make syntax highlighting work
2018-12-16 22:59:07 +01:00
mlangkabel 92f4a9e056 logic: record language for files 2018-12-12 15:50:29 +01:00
Eberhard Graether d3d5b961ff data: Replaced NameDelimiterType in NameHierarchy with std::wstring to allow use with arbitrary delimiters 2018-12-11 16:29:08 +01:00
Eberhard Graether 6d5a3c047d logic: Added SourceGroupCustomCommand to use with SourcetrailDB binaries
* Added new Source Group type SourceGroupCustomCommand to UI and ProjectSettings
* The Source Group executes a specified command on every source file
* The variables $SOURCE_PATH, $PROJECT_PATH, $DB_PATH, $STORAGE_VERSION can be passed
* The commands are executed after all other source groups finished indexing
* The command is executed with working directory set to project directory
* Errors during command execution are shown as status update and in the Status View
* SourceGroupCustomCommand cannot be partially cleared, when one file needs clearing the project must be fully re-indexed
2018-12-11 14:05:26 +01:00
mlangkabel 21d947ed6c src: updated SymbolKind enum
* removed SymbolKinds for Parameter and LocalSymbol, because these are not stored as symbols inside the database
* added Module symbol kind for Python
2018-12-10 16:26:38 +01:00
Eberhard Graether b47a0b5b72 logic: Inspect errors during indexing (issue #235)
* Enabled errors table during indexing
* Store intermediate errors in StorageCache
* Open tab for errors if no tab yet
* "Show errors" for file disabled during indexing
* Hide indexing dialogs with ESC instead of stopping indexing
2018-12-06 15:46:42 +01:00
mlangkabel a51799c279 logic: Store locations of errors in source_location table of DB 2018-11-30 16:02:10 +01:00
Eberhard Graether 267d6b2eb7 logic: Fixed and improved indexing interruption (issue #634)
* Fixed indexing can be interrupted when dialog hidden
* Clear intermediate storages when interrupting
* Abort waiting for less queued storages when indexing interrupted
* Don't index another file when indexing was already interrupted
* Moved indexing interrupted progress dialog to TaskBuildIndex
* Use MessageIndexingInterrupted instead of MessageInterruptTasks
2018-11-23 15:33:20 +01:00
Eberhard Graether 0169f04a7a data: optimized batch insert statement maxiumum variable use 2018-11-10 23:51:27 +01:00
Eberhard Graether 6d0fa311c1 logic: Fixed commands not in auto completions when symbols with same name exist 2018-11-05 17:10:11 +01:00
Eberhard Graether f13aec70dd ui: Added tabs UI to top of main window (issue #215)
* Added tab bar to top of main window with UI/shortcuts similar to web browsers
* ComponentManager offers components for 2 use-cases: application and tab
* Application components: log view (status/errors), bookmarks, screen search, status bar, tabs, tooltips, dialogs and all tab views disabled
* Tab components: graph, code, history and search
* When a project is loaded there is always at least one tab, otherwise there is none
* Each tab replaces the application views of the same name in the main layout when activated
* Each tab has it's own TaskScheduler, to process tasks independent from other tabs
* The application has a global TaskScheduler for application wide tasks
* The singloton class TaskManager is responsible for managing the TaskSchedulers
* MessageListeners and Messages hold an optional schedulerId, both must be set to only send to a specific TaskScheduler
* Bookmark buttons where split off into a separate view per tab, bookmark managemement is done in the application
* History menu processing is done by the QtMainWindow now
* Screen search is an application component, the responders are always changed to the active tab
* Plugin messages are opened in a new tab
* Symbols can be opened in a new tab via middle click/context menu in graph, code, history dropdown
* Full text index creation is mutexed now in PersistenStorage to make it fully thread-safe
* All tabs are closed when switching projects
* Tab contents are only animated when visible

fortune cookie message = Catch your lucky star!
2018-11-05 01:28:12 +01:00
Eberhard Graether 518f15d490 data: Added forEach<StorageType>() methods to SqliteIndexStorage for significantly lower memory use of queries
* use in local index building during refresh
* use in read cache building on project load
* use in some storage access requests
* also slightly improves speed
2018-10-20 14:57:38 +02:00
Eberhard Graether 4638ea2baf data: use uint32_t instead of Id in SqliteIndexStorage local indexes 2018-10-20 04:13:13 +02:00
Eberhard Graether adc1900d18 logic: Fixed multiple active symbols broken on undo
* fixed undoing to multiple actives didn't show all nodes in graph
* fixed wrong name in search bar, status message and history dropdown
* fixed flicker when activating multiple nodes in code view
2018-10-19 20:47:08 +02:00
Eberhard Graether 4ae052cb9c data: Refactored ParserClient API to return and use Ids instead of NameHierarchies for faster indexing
* Pass NameHierarchy to record new symbol returning an Id
* Cache symbol Ids in Parser implementation
* Reuse symbol Ids as reference when recording related data
* Pass FilePath to record new file returning an Id
* Cache file Ids in CanonicalFilePathCache
* Store file Id in ParseLocation instead of FilePath

fortune cookie message = You know a silent way to impose your will.
2018-10-16 00:54:38 +02:00
Eberhard Graether 3d5b90364a data: Removed source_location_file_node_id_type_index 2018-10-06 12:43:57 +02:00
Eberhard Graether 9edfdacd72 data: Removed separate comment_location table
* added LocationType LOCATION_COMMENT
* store comment locations within source_locations
2018-10-04 21:21:31 +02:00
Eberhard Graether f060b6042d data: Improved injection performance with batched insertions
* add InsertBatchStatement inserting any number as multiples
* switched Storage injection interface to containers
2018-10-03 01:15:27 +02:00
Eberhard Graether 83f41e04b1 data: start adding node name hierarchy from bottom and stop when a name was already added 2018-09-25 00:52:09 +02:00
mlangkabel dfc6d88432 build: search headers in all source directories
* removed paths in include directives
* changed cmake to provide necessary header search paths
* changed name of version.h to productVersion.h due to name conflict
2018-09-18 19:00:18 +02:00
Eberhard Graether 07454f2045 data: Removed std::multimap optimization from LowMemoryStringMap and store local symbol names in std::map 2018-09-18 12:32:55 +02:00
mlangkabel 5517cd4ccf logic: refresh info generator fixes and tests
* fixed case where "to-index" state of a file has changed and thus the file needs to be re-indexed
* clear and re-index files that depend on changed non-indexed files
* clear and re-index files referenced by unchanged but cleared (due to referencing a changed file) files
* fixed: updated files with changed timestamp that do not have content in the db will now count as changed
* refined refresh info generator tests
* updated checklists for manual project setup tests
2018-09-14 16:02:01 +02:00
Eberhard Graether 06d64b76f7 data: Reduced memory usage during indexing with LowMemoryStringMap
* reduces node and local symbol index sizes by about 30-50%
2018-09-02 20:47:43 +02:00
Eberhard Graether 470a8a3920 data: Improved data storing performance in IntermediateStorage 2018-08-27 23:37:24 +02:00
Eberhard Graether e3e8fa1547 data: Request file modification time not until storing to index for faster indexing performance 2018-08-27 17:05:38 +02:00
Eberhard Graether 9bce2de57b data: reduced memory usage of sqlite index during indexing
* use std::string instead of std::wstring in temp indices
* use number types for edges and source locations in temp indices
* use map::emplace where appropriate
* moved 100 occurence insert optimization fully to sqlite index
2018-08-27 15:38:44 +02:00
Eberhard Graether 5f6747d6a1 ui: Don't show overriden method in tooltip list when clicking overriding method 2018-08-21 16:08:41 +02:00
Eberhard Graether 023c6288d6 logic: Fixed issues releated to real signatures in tooltips (issue #604)
* Fixed crash when signature was wrongly recorded
* Fixed line break at wrong position for template functions/methods
* Fixed already qualified name replace with qualified name, repeating qualifiers
2018-08-20 23:22:50 +02:00
mlangkabel 9813c9873f logic: index and store Java annotations
* add annotation symbol kind
* add annotation_usage edge kind
* increment storage version
* record java annotation decls
* record java annotation member decls (as fields)
* update expected output of java sample project indexing tests
* add tests for recording annotations
* add annotation icon, annotation colors
* add new annotation node and edge types to legend
2018-08-14 17:33:00 +02:00
mlangkabel 195f5893c9 logic: reduce copies of intermediate storage data when creating shared memory representation 2018-08-10 16:19:45 +02:00
mlangkabel 337cf2d371 logic: improved performance of storing index to database
* add compiled statement for batch inserting 100 occurrences at once
* removed unnecessary primary key from component_access to get rid of additional index table
* changed explicit check for existing symbols when injecting to implicit check in insert statement (insert or ignore)
* improved performance of adding edges by replacing edge multi part index with in-memory-index
* added in-memory-index for node table
* added in-memory-index for local_symbol table
* added in-memory-index for lource_location table
* moved setting storage mode to SqliteIndexStorage, because storage modes are not used anywhere else.
* don't store current mode as member because re-creating an existing index takes no time.
* add getter for name of SqliteDatabaseIndex
* removed unused method from persistent storage
2018-08-10 15:37:08 +02:00
mlangkabel f9b43526f4 logic: improved performance of storing index to the database
* batch inject occurrences
* removed unnecessary destructor and keywords from storages
2018-08-03 13:51:31 +02:00
Eberhard Graether b055b4c7dc logic: Fixed click on macro activated first of multiple symbols instead of showing list 2018-07-25 20:53:54 +02:00
Eberhard Graether ed0ade034e ui: Graph legend (issue #308, #540)
* Show graph legend via 'legend' command or '?' button in the lower right corner
* Legend is not interactive: nodes and edges not clickable or moveable
* CXX and Java node types are mixed
2018-07-23 16:55:58 +02:00
Eberhard Graether ad6f5c8727 ui: Added show definition context menu action for graph nodes (issue #83)
* use 'show definition' context menu action or 'Ctrl/Cmd + Left Click' to show definition of node in code
2018-07-22 14:30:56 +02:00
Eberhard Graether 0b5ad33a8c src: Improved project load speed with move semantics and in-place initialization
* switched SearchIndex and HierarchyCache to std::unique_ptr
* use move semantics and in-place initialization in StorageTypes and SearchIndex
* improved autocompletion speed by fixing contained node type checking
2018-07-22 00:25:54 +02:00
mlangkabel c6f9d8f92c logic: show real code of signatures in tooltips
* added new location type
* refactored old recording code
* record signature locations for cxx functions and java methods
* added signature locations to sample project indexer tests
* ignore signature locations in ui
* signatures in tooltip with qualified name of the function/method
* added test for finding signature location of constructor with initializer list
2018-07-20 14:00:08 +02:00
Eberhard Graether 6adcb2b31e logic: Improved search result scoring
* Increase result count relative to query length
* Only run best scoring on shortest 1000 results
* Made NameHierarchy deserializing faster
2018-07-17 14:41:17 +02:00
Eberhard Graether ad325ac974 logic: background indexing (issue #175)
* allow hiding of indexing dialogs to browse loaded project while indexing
* show indexing status in status bar while indexing
* use different dialog views for different use cases to avoid state collisions
* fixed error label in status bar jittering while indexing
* show hand cursors for clickable elements in status bar
* indexing is not interrupted on pressing ESC while in hidden
* disable error table and error label while indexing
* refactored indexing messages
* forbid indexing and changing project while indexing
* don't show indexing status messages in status bar when indexing in the background
* allow tasks to run in the background

fortune cookie message = A journey is waiting for you.
2018-07-10 11:42:58 +02:00
mlangkabel a1dd1a77c9 logic: allow the user to discard an aborted indexer run
* keep old database on filesystem while indexing
* migrate old ".coatiproject" settings to new ".srctrlprj" extension when loading project
* send new errors in MessageErrorCountUpdate after injecting
* recheck filepath exist() in FileSystem's remove, rename, copy and create functions
* updated tasks to new "override" policy
2018-07-03 18:54:53 +02:00
mlangkabel 0519fd1462 logic: fixed project shows up empty after exiting app while indexing previously empty project 2018-07-02 13:16:30 +02:00
mlangkabel 7c09f3339b ui: store and display translation unit of recorded indexing errors 2018-07-02 13:00:41 +02:00
Eberhard Graether 6794b61fab ui: Fixed activating history item from menu showed wrong symbol (issue #572)
* Refactored SearchMatch: removed delimiter, added tokenName
* Refactored MessageActivateTokens: removed tokenNames
* Restore from SearchMatches from NameHierarchies of tokens
2018-06-30 02:16:03 +02:00
Eberhard Graether 172f1b7934 logic: Moved all error handling logic into ErrorController (issue #577)
* Handle all error related messages in ErrorController
* Moved error filter state from Storage to ErrorController
* Moved all error related messages to type/error subdirectory
* Enable all errors shown by default
* Always show unfiltered error count in status bar and overview
* Fixed all errors shown again when changing error filter on errors for file
2018-06-29 13:31:05 +02:00
Eberhard Graether e287c86315 data: Allow a complete file to become incomplete again if it has errors in a later translation unit 2018-06-20 23:56:18 +02:00