module Steep module Server module ChangeBuffer : _WithProject interface _WithProject def project: () -> Project end type changes = Hash[Pathname, Array[Services::ContentChange]] attr_reader mutex: Thread::Mutex attr_reader buffered_changes: changes # Yields `buffered_changes` to modify with synchronization # def push_buffer: [A] () { (changes) -> A } -> A # Yields or returns a copy of `buffered_changes` after clearing `buffered_changes` content # def pop_buffer: [A] () { (changes) -> A } -> A | () -> changes # Load files from `project` to `buffered_changes` # def load_files: (project: Project, commandline_args: Array[String]) -> void # Load changes from a request with `DidChangeTextDocumentParams` into `buffered_changes` # def collect_changes: (untyped request) -> void end end end