Commits

Anonymous committed 9a04203

proposing autoimport assists in codeassist if enabled

Comments (0)

Files changed (1)

ropemacs/interface.py

         prompt = 'Completion for %s: ' % starting
         result = lisputils.ask_values(prompt, names,
                                       starting=starting, exact=None)
-        lisp.delete_region(starting_offset + 1, offset + 1)
-        lisp.insert(result)
+        self._apply_assist(result, starting_offset, offset)
 
     @rawprefixed
     def lucky_assist(self, prefix):
         else:
             lisputils.message('Not enough proposals!')
             return
-        lisp.delete_region(starting_offset + 1, offset + 1)
-        lisp.insert(result)
+        self._apply_assist(result, starting_offset, offset)
+
+    def _apply_assist(self, assist, start, offset):
+        if ' : ' in assist:
+            name, module = assist.rsplit(' : ', 1)
+            lisp.delete_region(start + 1, offset + 1)
+            lisp.insert(name)
+            self._insert_import(name, module)
+        else:
+            lisp.delete_region(start + 1, offset + 1)
+            lisp.insert(assist)
+
+    def _calculate_proposals(self):
+        self._check_project()
+        resource, offset = self._get_location()
+        source = self._get_text()
+        maxfixes = lisp['ropemacs-codeassist-maxfixes'].value()
+        proposals = codeassist.code_assist(self.project, source, offset,
+                                           resource, maxfixes=maxfixes)
+        proposals = codeassist.sorted_proposals(proposals)
+        starting_offset = codeassist.starting_offset(source, offset)
+        names = [proposal.name for proposal in proposals]
+        if self.autoimport is not None:
+            starting = source[starting_offset:offset]
+            names.extend(x[0] + ' : ' + x[1]
+                         for x in self.autoimport.import_assist(starting))   
+        return starting_offset, names
 
     def _check_autoimport(self):
         self._check_project()
-        if self.auto_import is None:
+        if self.autoimport is None:
             lisputils.message('autoimport is disabled; '
                               'see `ropemacs-enable-autoimport\' variable')
             return False
         lisp.insert(newimport)
         lisp.goto_char(current + len(newimport))
 
-    def _calculate_proposals(self):
-        self._check_project()
-        resource, offset = self._get_location()
-        source = self._get_text()
-        maxfixes = lisp['ropemacs-codeassist-maxfixes'].value()
-        proposals = codeassist.code_assist(self.project, source, offset,
-                                           resource, maxfixes=maxfixes)
-        proposals = codeassist.sorted_proposals(proposals)
-        starting_offset = codeassist.starting_offset(source, offset)
-        names = [proposal.name for proposal in proposals]
-        return starting_offset, names
-
     def _calculate_prefix(self, names):
         if not names:
             return ''
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.