Opened 7 years ago

Last modified 7 years ago

#12925 closed defect

linkresolvers should be sorted by name — at Version 1

Reported by: Jun Omae Owned by: Peter Suter
Priority: normal Component: WikiAutoCompletePlugin
Severity: normal Keywords:
Cc: Trac Release: 1.0

Description (last modified by Jun Omae)

Currently, linkresolvers suggests unsorted link names. I think the suggestion should be sorted by name.

The 20 link resolvers are defined by Trac core.

>>> from trac.test import EnvironmentStub
>>> from trac.loader import load_components
>>> from trac.wiki.api import WikiSystem
>>> env = EnvironmentStub()
>>> load_components(env)
>>> wikisys = WikiSystem(env)
>>> names = set()
>>> for provider in wikisys.syntax_providers:
...   for name, resolver in provider.get_link_resolvers():
...     names.add(name)
...
>>> names = sorted(names)
>>> len(names)
20
>>> names
['attachment', 'browser', 'bug', 'changeset', 'comment', 'diff', 'export', 'htdocs', 'log', 'milestone', 'query', 'raw-attachment', 'report', 'repos', 'search', 'sha', 'source', 'ticket', 'timeline', 'wiki']
  • wikiautocomplete/htdocs/js/wikiautocomplete.js

    diff --git a/wikiautocomplete/htdocs/js/wikiautocomplete.js b/wikiautocomplete/htdocs/js/wikiautocomplete.js
    index 22e1899..34da355 100644
    a b jQuery(document).ready(function($) { 
    7878
    7979    ], {
    8080        appendTo: $('body'),
     81        maxCount: 20
    8182    });
    8283});
  • wikiautocomplete/web_ui.py

    diff --git a/wikiautocomplete/web_ui.py b/wikiautocomplete/web_ui.py
    index 4afa1f4..ea81c25 100644
    a b class WikiAutoCompleteModule(Component): 
    7474
    7575        if strategy == 'linkresolvers':
    7676            wiki = WikiSystem(self.env)
    77             completions = []
    78             for provider in wiki.syntax_providers:
    79                 for name, resolver in provider.get_link_resolvers():
    80                     if name.startswith(term):
    81                         completions.append(name)
    82             self._send_json(req, completions)
     77            completions = set(name for provider in wiki.syntax_providers
     78                                   for name, resolver
     79                                        in provider.get_link_resolvers()
     80                                   if name.startswith(term))
     81            self._send_json(req, sorted(completions))
    8382
    8483        elif strategy == 'ticket':
    8584            try:

Change History (1)

comment:1 Changed 7 years ago by Jun Omae

Description: modified (diff)
Note: See TracTickets for help on using tickets.