mirror of
https://github.com/textmate/textmate.git
synced 2026-01-22 21:27:56 -05:00
Ensure grammar is retained during parsing
Since parsing is done in a separate thread, and it works with pointers, we need to ensure that the grammar is retained for at least as long as the thread lives.
This commit is contained in:
@@ -109,6 +109,7 @@ namespace ng
|
||||
text::indent_t const& indent () const { return _indent; }
|
||||
|
||||
bool set_grammar (bundles::item_ptr const& grammarItem);
|
||||
parse::grammar_ptr grammar () const { return _grammar; }
|
||||
|
||||
scope::context_t scope (size_t i, bool includeDynamic = true) const;
|
||||
std::map<size_t, scope::scope_t> scopes (size_t from, size_t to) const;
|
||||
|
||||
@@ -33,6 +33,7 @@ namespace ng
|
||||
void handle_reply (result_t const& result);
|
||||
|
||||
private:
|
||||
parse::grammar_ptr _grammar;
|
||||
size_t _client_key;
|
||||
buffer_t& _buffer;
|
||||
size_t _revision;
|
||||
@@ -50,6 +51,7 @@ namespace ng
|
||||
|
||||
buffer_parser_t::buffer_parser_t (buffer_t& buffer, parse::stack_ptr const& parserState, std::string const& line, std::pair<size_t, size_t> const& range, size_t const& batch_start, size_t limit_redraw) : _buffer(buffer)
|
||||
{
|
||||
_grammar = buffer.grammar();
|
||||
_client_key = server().register_client(this);
|
||||
_revision = buffer.revision();
|
||||
server().send_request(_client_key, (request_t){ parserState, line, range, batch_start, limit_redraw });
|
||||
|
||||
Reference in New Issue
Block a user