File: pycomplete.el

package info (click to toggle)
python-mode 1%3A1.0-3.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 236 kB
  • ctags: 234
  • sloc: lisp: 3,607; python: 58; sh: 49; makefile: 31
file content (36 lines) | stat: -rw-r--r-- 975 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
;;; Complete symbols at point using Pymacs.

;;; See pycomplete.py for the Python side of things and a short description
;;; of what to expect.

(require 'pymacs)
(require 'python-mode)

(pymacs-load "pycomplete")

(defun py-complete ()
  (interactive)
  (let ((pymacs-forget-mutability t)) 
    (insert (pycomplete-pycomplete (py-symbol-near-point)
				   (py-find-global-imports)))))

(defun py-find-global-imports ()
  (save-excursion
    (let (first-class-or-def imports)
      (goto-char (point-min))
      (setq first-class-or-def
	    (re-search-forward "^ *\\(def\\|class\\) " nil t))
      (goto-char (point-min))
      (setq imports nil)
      (while (re-search-forward
	      "^\\(import \\|from \\([A-Za-z_][A-Za-z_0-9]*\\) import \\).*"
	      nil t)
	(setq imports (append imports
			      (list (buffer-substring
				     (match-beginning 0)
				     (match-end 0))))))
      imports)))

(define-key py-mode-map "\M-\C-i"  'py-complete)

(provide 'pycomplete)