Example #1
0
    def tag_search(self, pattern):
        if not self.have_database() or pattern is None:
            return

        self._view.clear_items()
        if pattern == '':
            return

        if self._task:
            self._task.stop()

        def _line(line):
            match = re.search('([^\ ]*)[\ ]+([0-9]+) ([^\ ]+) (.*)', line)
            if match is None:
                return
            data = match.groups()
            self._view.add_item(
                GtagsItem(file=data[2],
                          line=data[1],
                          dataline=data[3],
                          symbol=data[0],
                          search=pattern))
            if len(self._view._list) > 200:
                self._task.stop()

        #FIXME this is not portable
        cmd = 'for foo in `global -c %s`; do global -x -e $foo; done' % pattern
        self._task = GeneratorSubprocessTask(_line)
        self._task.start(cmd, cwd=self._project.source_directory, shell=True)
Example #2
0
    def cmd_find(self, options, pattern):

        # stop and clear task
        if self.task:
            self.task.stop()
        self._view.clear_items()

        # don't make empty search
        if not pattern:
            return

        # prepare command
        cmd = '/usr/bin/env man %s "%s"' % (options, pattern)
        #XXX: unittest
        reman = re.compile(
            r'''
            (?P<name>\w+)
            \s*(\[\])\s* #whitespace and gentoo brackets
            \((?P<group>[\w\d]+)\)
            \s*-\s*
            (?P<desc>.*)
            ''', re.VERBOSE)

        # match and add each line
        def _line(result):
            # avoid too many results
            if len(self._view.list) > 100:
                self.task.stop()

            match = reman.match(result)
            if not match:
                return
            name = match.group('name')
            group = match.group('group')
            desc = match.group('desc')

            # add in list
            self._view.add_item(ManItem(name, int(group), desc, pattern))

        # launch man subprocess
        self.task = GeneratorSubprocessTask(_line)
        self.task.start(cmd, shell=True)