And it is in 50556 2016-01-29 13:39 GMT+01:00 Nicolai Hess <nicolaih...@gmail.com>:
> > > 2016-01-29 13:10 GMT+01:00 Denis Kudriashov <dionisi...@gmail.com>: > >> Hi Nicolai. >> Now your proposals in slice 17496 >> <https://pharo.fogbugz.com/f/cases/17496/add-table-for-all-defined-method-selectors-and-use-it-in-code-completion-and-syntax-highlighting> >> . >> We change it a little bit: we make SelectorsTable lazy. And code >> completion uses it too. >> > > +1, > > Let's see if it works :) > Thanks > > > >> >> 2016-01-16 22:17 GMT+01:00 Nicolai Hess <nicolaih...@gmail.com>: >> >>> >>> >>> 2016-01-16 13:46 GMT+01:00 Marcus Denker <marcus.den...@inria.fr>: >>> >>>> >>>> On 16 Jan 2016, at 13:26, Nicolai Hess <nicolaih...@gmail.com> wrote: >>>> >>>> >>>> >>>> 2016-01-16 10:11 GMT+01:00 Marcus Denker <marcus.den...@inria.fr>: >>>> >>>>> >>>>> anyone an idea? >>>>> >>>>> I'm trying to think. >>>>> Looks like it would be good to be able to make a distinction between >>>>> symbols and selectors (selectors installed >>>>> in method dictionaries) >>>>> >>>>> >>>>> yes, this would improve code completion a bit, too, as there are more >>>>> symbols than symbols that are actually names >>>>> of methods. >>>>> >>>>> The data could be created per environment (Smalltalk globals) the >>>>> first time and then cached till shutdown. >>>>> (it would be an array of size 46451, pointing to existing symbols). >>>>> >>>>> The environment could cache sent selectors, too… pablo did an >>>>> experiment with that. >>>>> >>>>> Marcus >>>>> >>>>> >>>> How about a new SymbolTable "SelectorTable" that gets new entries on >>>> every method compilation ? >>>> >>>> >>>> maybe better when a method is added to a Method Dictionary? This way >>>> even adding things the strange >>>> way would work... >>>> >>> >>> I tried some methods from TBehavior basicAddSelector:withMethod: >>> but for example Nautilus, directly modifies method dict >>> >>> >>>> >>>> >>>> I hacked a simple experimental version. >>>> But I don't yet understand the workflow for initialisation of the >>>> Symbol class (with rehash, interned, and compacting). >>>> >>>> >>>> If we hook into adding methods, then compactSymbolTable and rehash >>>> could just reset the SelectorTable and fill it after by going over all >>>> methods… >>>> >>> >>> >>> see attached changesets. >>> >>> load with: >>> >>> DangerousClassNotifier disableDuring:[ >>> String subclass: #Symbol >>> instanceVariableNames: '' >>> classVariableNames: 'NewSymbols OneCharacterSymbols SymbolTable >>> SelectorTable' >>> package: 'Collections-Strings' >>> ]. >>> >>> DangerousClassNotifier disableDuring:[ >>> 'selectortable.1.cs' >>> asFileReference fileIn. >>> ]. >>> Symbol initSelectorTable. >>> 'use_selector_table.cs' asFileReference fileIn. >>> >>> what do you think ? >>> >>> (selectortable.cs defines SelectorTable and some methods in Symbol and >>> String) >>> (use_selector_table adds selectors as internedSelectorSymbol if this >>> selector is set as a selector on CompiledMethod >>> and uses findInternedSelector .... in RubStyler visitMessageNode) >>> >>> >>>> >>>> >>>> Marcus >>>> >>>> >>> >> >