Найти - Пользователи
Полная версия: Emacs + python - intellisence/autocomplit
Начало » Инструментальные средства разработки » Emacs + python - intellisence/autocomplit
1
clopomor
Добрі люди допоможіть!
є Emacs 22.1 + ecb+cedet+(oo-browser)+(color-theme)+tabbar+session
Усе працює швидко і непогано, один мінус - поганий автокомпліт(використовується semantic, etags не пробував)
Хочеться автокомпліту як в Eclipse+pydev(вони непідходять, жеруть багато ресурсів, хочеться легшого середовища)
Автокомпліт в емаксі не йде по модулях які імпортуються і доповнює лише те що є в файлі…
Питання - Чи можливо налаштувати в емаксі автокомпліт щоб він використовував інклуди/імпорти ?
Мож хтось поділиться конфігом, чи взагалі таке можливе? Чи варто спробувати etags ?

************************
.emacs
************************

;;
;; Mule cyrillic config
(set-language-environment 'UTF-8)

;; Prevent the startup message
(setq inhibit-startup-message t)

;; C-tab switchs to a next window
(global-set-key ‘other-window)

;; conservatively scrolling
(setq scroll-conservatively 50)
(setq scroll-margin 4)

;; tabs
(require ’tabbar)
(tabbar-mode t)
(global-set-key 'tabbar-forward)
;;(global-set-key 'tabbar-backward)
(global-set-key ‘tabbar-backward)

;; session
(require ’session)
(add-hook ‘after-init-hook ’session-initialize)

;; Cedet
(setq semantic-load-turn-useful-things-on t)
(load-file “/usr/share/emacs22/site-lisp/cedet/common/cedet.el”)
(global-set-key 'semantic-ia-complete-symbol-menu)
;;(global-set-key ‘semantic-ia-complete-tip)
;;(semantic-load-enable-code-helpers)
(semantic-load-enable-excessive-code-helpers)

;;
(load-file “/usr/share/emacs22/site-lisp/color-theme/themes/color-theme-library.el”)
(require ’color-theme)
;;(color-theme-comidia)
(color-theme-ramangalahy)

;;
;;(require 'pc-bufsw)
;;(pc-bufsw::bind-keys )




;; hideshow
(load-library “hideshow”)
(add-hook ‘c++-mode-hook ; other modes similarly
(lambda () (hs-minor-mode 1)))

;; ECB
;;(add-to-list ’load-path “/usr/share/emacs22/site-lisp/ecb”)
(load-file “/usr/share/emacs22/site-lisp/ecb/ecb.el”)
(require ‘ecb)
(global-set-key (kbd “\e\el”) ’ecb-toggle-ecb-windows)
(global-set-key (kbd “\e\eea”) ‘ecb-activate)
(global-set-key (kbd “\e\eed”) ’ecb-deactivate)

;;trial xref
;;(load “xrefactory”)
;;

(set-face-font ‘default “-xos4-terminus-medium-r-normal–14-140-72-72-c-80-iso10646-1”)

;;(tool-bar-mode 0)
(require ’ido)
(ido-mode t)




;;
;;(set-language-environment ‘Cyrillic-KOI8)



(global-set-key (kbd “\C-\\”) ’user-toggle-input-method)
(global-set-key (kbd “\e(”) ‘user-to-cyr)
(global-set-key (kbd “\e)”) ’user-to-nil)

(defun user-cyrillic-redefinitions ()
“Set of global keys binding for cyrillic.
This function is to be called from user-toggle-input-method”
(global-set-key (kbd “?”) (lambda()(interactive)(insert “,”)))
(global-set-key (kbd “/”) (lambda()(interactive)(insert “.”)))
(global-set-key (kbd “,”) (lambda()(interactive)(insert “:”)))
(global-set-key (kbd “:”) (lambda()(interactive)(insert “%”)))
(global-set-key (kbd “*”) (lambda()(interactive)(insert “;”)))
(global-set-key (kbd “;”) (lambda()(interactive)(insert “*”)))
(global-set-key (kbd “.”) (lambda()(interactive)(insert “?”))))

(defun user-nil-redefinitions ()
“Restoring global keys binding after user-cyrillic-redefinitions.
This function is to be called from user-toggle-input-method”
(global-set-key (kbd “?”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “/”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “$”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “,”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “:”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “*”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “;”) (lambda()(interactive)(self-insert-command 1)))
(global-set-key (kbd “.”) (lambda()(interactive)(self-insert-command 1))))

(defun user-toggle-input-method ()
“Change the stadart function tuggle-input-method
to redefine keys for cyrillic input from UNIX type to win type”
(interactive)
(toggle-input-method)
(if (string= current-input-method “cyrillic-jcuken”)
(user-cyrillic-redefinitions)
(user-nil-redefinitions))
(message “keybord changed to %s” current-input-method))

(defun user-to-cyr ()
“Change input method to Cyrillic,
I bound this function with Alt-Shift-9, that is M-(”
(interactive)
(when (string= current-input-method nil)
(user-toggle-input-method)))

(defun user-to-nil ()
“Change input method to nil (generally to English),
I bound this function with Alt-Sfift-0 that is M-)”
(interactive)
(when (string= current-input-method “cyrillic-jcuken”)
(user-toggle-input-method)))
;;end gav

;;—————————————————————————-
;; Set up environment
;;—————————————————————————-

;; Backup files/versioning
(setq make-backup-files nil) ; don't make pesky backup files
(setq version-control ‘never) ; don’t use version numbers for backup files

;; Environment
(setq tab-width 4) ; tab = 5 spaces
(setq-default indent-tabs-mode nil) ; use spaces (not tabs) for indenting
(setq kill-ring-max 10) ; don't save too many kills
(setq require-final-newline t) ; always terminate last line in file
(setq default-major-mode ‘text-mode) ; default mode is text mode
(setq next-screen-context-lines 1) ; # of lines of overlap when scrolling
(setq auto-save-interval 300) ; autosave every N characters typed
(setq default-fill-column 77) ; the column beyond which do word wrap
(setq scroll-preserve-screen-position t); make pgup/dn remember current line
(setq next-line-add-newlines nil) ; don’t scroll past end of file
(setq ewd-kp-usage ‘num) ; keypad numbers are numbers by default
(global-auto-revert-mode 1) ; autorevert buffers if files change

;; Paren matchine
(show-paren-mode t) ; highlight matching parens, etc
(setq show-paren-style ’parenthesis) ; highlight character, not expression
(setq blink-matching-paren-distance 51200) ; distance to match paren as


;; Set up paths
(setq exec-path (cons “~/bin” exec-path))

;; modeline options
(which-func-mode t) ; show current function in modeline
(setq display-time-day-and-date t) ; display day and date
(display-time) ; display the time

;; Set up frame position and coloring

;;—————————————————————————-
;; Set up additional packages
;;—————————————————————————-


;; make a spiffy, organized buffer menu
(require ‘msb)


;;—————————————————————————
;; Stuff from M-x customize
;;—————————————————————————
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won’t work right.
‘(ecb-source-path (quote (“~/” “/home/gav/Projects”)))
’(ecb-tip-of-the-day nil)
;;
‘(cua-mode t nil (cua-base))
’(cursor-in-non-selected-windows nil)
‘(desktop-save-mode t)
’(display-time-mode t)
‘(ecb-options-version “2.32”)
’(indicate-buffer-boundaries (quote right))
‘(scalable-fonts-allowed t)
’(show-paren-mode t)
‘(transient-mark-mode t)
’(unibyte-display-via-language-environment t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
;;'(font-lock-builtin-face ((((class color)) (:foreground “Blue”))))
;;'(font-lock-comment-face ((((class color)) (:foreground “firebrick” :italic t))))
;;'(font-lock-constant-face ((((class color)) (:foreground “Blue”))))
;;'(font-lock-function-name-face ((((class color)) (:foreground “DarkGoldenrod”))))
;;'(font-lock-keyword-face ((((class color)) (:foreground “Blue”))))
;;'(font-lock-reference-face ((((class color)) (:foreground “Purple”))))
;;'(font-lock-string-face ((((class color)) (:foreground “DarkGreen”))))
;;'(font-lock-type-face ((((class color)) (:foreground “Red”))))
;;'(mode-line ((((class color)) (:foreground “floral white” :background “PlumDesktop”))))
;;'(region ((((class color)) (:background “burlywood”))))
;;'(show-paren-match ((((class color)) (:background “burlywood4”)))))

;;—————————————————————————
;; Enable some functions
;;—————————————————————————
;;(put ‘downcase-region ’disabled nil)
;;(put ‘upcase-region ’disabled nil)
balu
Я, особисто, cedet так до пуття і не довів, в т.ч толком не працює і зі scheme, а повинен би… Тримаю його тільки заради ecb та CommonLisp-а. Взагалі, емакс з пітоном не дуже :( Навіть іх новий модуль python.el я замінив на python-mode.el, бо кал. Як вийде python3000, мабуть прийдеться з емаксом (для пітон) розпрощатись.
Хоча, можливо, в http://community.livejournal.com/ru_emacs/ тобі допоможуть.
clopomor
Попробую іще прикрутити exuberant-ctags
як не дасть нічого путнього прийдеться використовувати екліпс .
Хоч краще б емакс … набагато швидше працює…
balu
clopomor
Хоч краще б емакс … набагато швидше працює…
Фыча емакс не в швидкості, а в тому, що його легше навчити новому, ніж екліпс. Плюс шорткати в"їдаються в руки і працювати з чимось іншим стає тяжко.
clopomor
ось намагаюсь навчити автодоповненню - не виходить… Емакс бачить тільки те, що уже є в відкритих файлах… Тут , як варіант - відкривати файли інклудів/імпортів і тримати відкритими…
А ось в Екліпсі усе чудово доповнює, але тормозить на 1Г оперативки і з сановською явою…(потужнішу машину брати не хочу - для усього іншого її аж задостатньо)
Дивився іще на Boa - погано працює, якщо почати проект в ньому, а потім влізти туди ручками - він уже не бачить змін та й продовжити не може - не може розібрати об"єктів після ручної зміни.
Розглядаю як варіант SPE але не можу дістати останній з svn - я за файрволом/проксі, і не є їх адміном - мені просто ріже чекоут… Одні люди радили, що непоганий… Може б хтось з прямим доступом в нет зробив тарбол? Був б дуже вдячний…
balu
Я використовую dabbrev. Для вже введеного він чудово доповнює. А держати все відкритим негоже - задовбаєшся між буферами перемикатись. В екліпсі автокомпліт не найкращим чином працює, але там є чудова функція зразу показувати документацію. НАйкращий автокомпліт я бачив у wingide, але вона платна, зате пыдтримуэ стандартны кейбындынги емакса.
dabbrev використовуэться так:

(global-set-key 'dabbrev-completion)
(global-set-key 'dabbrev-expand)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB