LINUX.ORG.RU

Linux+QT4+Emacs+!cedet


0

0

Использую DEBIAN, программирую на QT4, поставил emacs, правлю исходники только им. Недавно прочитал одну статью по адресу http://voxel3d.strana.de/articles/mingwqtemacs.html , захотелось использовать cedet, все сделал так как описал автор но cedet ни вкакую не хочет работать с классами QT4. Подскажите пожалуста кто знает как заставить работать cedet с QT4. Ясно что надо гдето прописать пути к заголовочникам QT4 который у меня установлен по адресу /usr/local/Trolltech/Qt-4.1.4/.

Вообще можно ли Debian-вский родной emacs заставить работать с UTF-8. Или подскажите где взять сборку для LINUX с поддержкой UTF-8 и GTK.

Заранее спасибо.


В cedet никакущий парсер С++. По крайней мере был полгода назад. Возможно твоя проблема именно в этом. Вместо cedet лучше использовать Xrefactory. Функционал по сути тотже (даже больше, еще и рефакторинг) а реализация на порядки лучше.

Сборка emacs 22 для Debian лежит в репозитарии unstable и называется emacs-snapshot(-gtk).

Тип используемой по умолчанию кодировки настраивается командой prefer-coding-system. Чтобы был по умолчанию utf-8, допиши в конфиг допиши

(prefer-coding-system 'utf-8)

Burbaka ★★
()
Ответ на: комментарий от Burbaka

Спасибо за информацию. Вы уважаемый вашим .emacs не поделитесь. Если можно то на pacmanoid@mail.ru или прям сдесь если можно.

pacman
() автор топика
Ответ на: комментарий от pacman

Гордится мне особо не чем. У меня не километровый конфиг и английский
 я знаю плохо. Но с другой стороны вдруг пригодится :) 

;; Определяем вресию емакса 


(setq emacs-version-22 (not (string-match "21" emacs-version)))

(defmacro emacs-22 ( s ) 
  `(if emacs-version-22 ,s))

(defmacro emacs-21 ( s ) 
  `(if (not emacs-version-22) ,s))


;; Обработчик конца компиляции

(defun my-compilation-finished (compilation-buffer result-string)
  "Handle compilation finished!"
  (interactive)
  (if (string-match "finished" result-string) 
      (progn (message "No problemo!") 
	     (delete-window (get-buffer-window "*compilation*"))) 
       (message "There are errors in your program!")))



;; Примочки для Objective Caml

(load-library "ocaml-mode/caml")
(load-library "ocaml-mode/caml-emacs")
(load-library "ocaml-mode/caml-font")

(add-hook 'caml-mode-hook
	  (function (lambda () 
		      (progn 
			(define-key caml-mode-map [(meta kp-0)] 'ml-mli-switch)))))

;; Примочки для Си++ 

(add-hook 'c++-mode-hook 
	  (function (lambda () 
		      (define-key c++-mode-map [(meta kp-0)] 'cpp-hpp-switch))))



(setq exec-path (cons "~/.emacs.d/xref" exec-path))
(setq load-path (cons "~/.emacs.d/xref/emacs" load-path))
(load "xrefactory")


;; Всякая полезная шняга 

(load-library "iswitchb")

(emacs-22 (load-library "savehist"))

(load-file "~/.emacs.d/swbuff.el")
(load-file "~/.emacs.d/sawfish.el")
(load-file "~/.emacs.d/file-ext-switch.el")
(load-file "~/.emacs.d/qbebasic.el")
(load-file "~/.emacs.d/darcs.el")
(load-file "~/.emacs.d/color-theme.el")


(setq swbuff-exclude-buffer-regexps (cons "\\*.*\\*" swbuff-exclude-buffer-regexps))



;; Привязка файлов к режимам

(setq auto-mode-alist (cons '("\\.jl"            . sawfish-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.h\\(pp\\)?"    . c++-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.tcpp"          . c++-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.ml[iylp]?"     . caml-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.l[(isp)(sp)]?" . slime-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.pro"           . prolog-mode) auto-mode-alist))



;; Клавиатурные привязки

(global-set-key [(control x) b] 'iswitchb-buffer)
(global-set-key [(control return)] 'iswitchb-buffer)
(global-set-key [(control x) (control b)] 'ibuffer)
(global-set-key [(control c) (control c)] 'compile)
(global-set-key [(control c) (control d)] 'gdb)
(global-set-key [(meta kp-0)] 'cpp-hpp-switch)
(global-set-key [(control kp-multiply)] 'kill-buffer)
(global-set-key [(meta kp-enter)] 'delete-other-windows)
(global-set-key [(meta kp-subtract)] 'swbuff-switch-to-previous-buffer)
(global-set-key [(meta kp-add)] 'swbuff-switch-to-next-buffer)
(global-set-key [(control z)] 'undo)
(global-set-key [(control tab)] 'other-window)

;; Дополнительные настройки

(color-theme-blue-mood)

(emacs-21 (toggle-truncate-lines))

(pc-selection-mode)

(emacs-22 (savehist-mode t))

(global-font-lock-mode t)

(scroll-bar-mode nil)

Burbaka ★★
()
Ответ на: комментарий от Burbaka

Вот еще нашел Это мой конфиг который я юзаю на работе :) 

(defconst author "Пупкин Иван")


;; Функция для compile проверяющий успешно ли закончилась компиляция. 
;; Если успешно - то закрывает окно и выводит надпись "No problemo" в modeline 
;; В противном случае выводит строку "There are errors!" в modeline 

(defun myfn-compilation-finished (compilation-buffer result-string)
  "Handle compilation finished!"
  (interactive)
  (if (string-match "finished" result-string) (and (message "No problemo!") (delete-window (get-buffer-window "*compilation*"))) (message "There are errors in your program!")))


(setq compilation-finish-function (function myfn-compilation-finished))


;; функции для  проекта "XXXXXX"


(defun create-constructor-cpp-file (file-name desc-string)
  "Make .cpp header"
  (interactive "FFile name: \nsDescription: ")
  (find-file file-name)

  (let* ((file-name-string (file-relative-name file-name default-directory))
	 (date-string (current-time-string))
	 (h-file-name (replace-string file-name-string "\\.cpp" ".h")))
    (insert (concat 
	     
	     "/////////////////////////////////////////////////////////////"
	     "\n// Имя : " file-name-string
	     "\n// Авторы : " author 
	     "\n// Дата создания : "date-string
	     "\n// CVS-ID: $Id:  $"
	     "\n// " desc-string
	     "\n//////////////////////////////////////////////////////////////"
	     "\n"
	     "\n#include \"" h-file-name "\""
	     "\n"
	     "\nBEGIN_PARSER_NAMESPACE"
	     "\n\n"
	     "\nEND_PARSER_NAMESPACE\n"
	     "\n\n"))))

(defun create-constructor-h-file (file-name desc-string)
  "Make .h  header"
  (interactive "FFile name: \nsDescription: ")

  (find-file file-name)

  (let* ((file-name-string (file-relative-name file-name default-directory))
	 (date-string (current-time-string))
	 (file-name-upcasing (replace-string (upcase file-name-string) "\\." "_")))

    (insert (concat
	     "/////////////////////////////////////////////////////////////"
	     "\n// Имя : " file-name-string
	     "\n// Авторы : " author
	     "\n// Дата создания : " date-string
	     "\n// CVS-ID: $Id:  $"
	     "\n// " desc-string 
	     "\n//////////////////////////////////////////////////////////////"
             "\n"
	     "\n#ifndef " file-name-upcasing
	     "\n#define " file-name-upcasing
	     "\n"
	     "\nBEGIN_PARSER_NAMESPACE"
	     "\n\n"
	     "\nEND_PARSER_NAMESPACE"
	     "\n\n"
	     "\n#endif"
	     "\n"))))


;; Нашлепки для работы с Си++

(define-skeleton c++-for-stmt 
  "Abbrev for for statement"
  nil
  > "for( "_";"_";"_" )"
  \n > "{" _ "}"
)

(define-skeleton c++-while-stmt 
  "Abbrev for while statement"
  nil
  > "while( "_" )"
  \n > "{" _ "}"
)

(define-skeleton c++-switch-stmt 
  "Abbrev for switch statement"
  nil
  > "switch( "_" )"
  \n > "{"
  \n > "case " _ ":" _ "break;"
  \n > "case " _ ":" _ "break;"
  \n > "default :" _ "break;"
  \n > "}"
)

(define-skeleton c++-if-stmt
  "Abbrev for if statement"
  nil
  > "if ( "_" )"
  \n > "{" _ "}"
)

(define-skeleton c++-ifelse-stmt
  "Abbrev for if ... else  statement"
  nil
  > "if ( "_" )"
  \n > "{" _ "}"
  \n > "else"
  \n > "{" _ "}"
)

(define-skeleton c++-class-stmt
  "Abbrev for class  statement"
  nil
  > "class " _
  \n > "{" _ "};"
)

(define-skeleton c++-struct-stmt
  "Abbrev for class  statement"
  nil
  > "struct " _
  \n > "{" _ "};"
)

(define-skeleton c++-uint 
  "Abbrev for unsigned int"
  nil
  "unsigned int"
)

(defmacro c++-add-keyword (keywords-table keyword-regexp keyword-param)
  `(setq ,keywords-table 
	 (append ,keywords-table
		 (list (list (c-make-font-lock-search-function ,keyword-regexp ',keyword-param))))))


(add-hook 'c++-mode-hook 
	  (function (lambda () 
		      (progn 

			(define-abbrev c++-mode-abbrev-table "forr"    ""  `c++-for-stmt)
			(define-abbrev c++-mode-abbrev-table "whilee"  ""  `c++-while-stmt)
			(define-abbrev c++-mode-abbrev-table "switchh" ""  `c++-struct-stmt)
			(define-abbrev c++-mode-abbrev-table "iff"     ""  `c++-if-stmt)	    
			(define-abbrev c++-mode-abbrev-table "ifelse"  ""  `c++-ifelse-stmt)
			(define-abbrev c++-mode-abbrev-table "classs"  ""  `c++-class-stmt)
			(define-abbrev c++-mode-abbrev-table "uuint"   "unsigned int")

			(c++-add-keyword c++-font-lock-keywords   "bind_v" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-1 "bind_v" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-2 "bind_v" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-3 "bind_v" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords   "bind_r" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-1 "bind_r" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-2 "bind_r" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-3 "bind_r" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords   "requires" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-1 "requires" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-2 "requires" (0 font-lock-keyword-face t))
			(c++-add-keyword c++-font-lock-keywords-3 "requires" (0 font-lock-keyword-face t))

			(define-key c++-mode-map [(control c) (control c)] 'compile)
			(define-key c++-mode-map [(control c) (control d)] 'gdb)
			(define-key c++-mode-map [(meta kp-0)] 'cpp-hpp-switch)

			))))


;; Примочки для работы с Objective Caml 

(load-library "caml")
(load-library "caml-emacs")
(load-library "caml-font")

(add-hook 'caml-mode-hook 
	  (function (lambda () 
		      (define-key caml-mode-map [(meta kp-0)] 'ml-mli-switch))))


;; Библиотеки для работы с sawfish-ским lisp-ом

(load-library "~/.emacs.d/sawfish.el")


;; Мелкая полезная шняга 

(load-library "iswitchb")
(load-library "~/.emacs.d/swbuff.el")
(load-library "~/.emacs.d/file-ext-switch.el")
(load-library "~/.emacs.d/swbuff.el")
(setq swbuff-exclude-buffer-regexps (cons "\\*.*\\*" swbuff-exclude-buffer-regexps)) 

(setq ispell-local-dictionary "ru")

(defun toggle-iswitchb-shit-buffer-display ()
  (interactive)
  ( if (string-match  "\\^ " (car iswitchb-buffer-ignore)) 
       (progn 
	 (setq iswitchb-buffer-ignore (list "\\*.*\\*"))
 	 (message "shit buffer off"))
       (progn 
	 (setq iswitchb-buffer-ignore (list "^ "))
 	 (message "shit buffer on"))))


;; Привязки файлов к режимам

(setq auto-mode-alist (cons '("\\.h" . c++-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.tcpp" . c++-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.jl"  . sawfish-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.ml?" . caml-mode) auto-mode-alist))

(global-font-lock-mode t)
(toggle-truncate-lines t)
(toggle-iswitchb-shit-buffer-display)
(pc-selection-mode)


;; Привязки клавиш 


(global-set-key [delete] 'delete-char)
(global-set-key [kp-delete] 'delete-char)
;;(global-set-key [(shift delete)] 'kill-primary-selection)
(global-set-key [(control x) b] 'iswitchb-buffer)
(global-set-key [(control x) (control b)] 'ibuffer)
(global-set-key [(control return)] 'iswitchb-buffer)
(global-set-key [(control x) return return] 'toggle-iswitchb-shit-buffer-display)
(global-set-key [(control kp-multiply)] 'kill-buffer)
(global-set-key [(control z)] 'undo)
(global-set-key [(meta kp-enter)] 'delete-other-windows)
(global-set-key [(meta kp-add)] 'swbuff-switch-to-next-buffer)
(global-set-key [(meta kp-subtract)] 'swbuff-switch-to-previous-buffer)
(global-set-key [(control tab)] 'other-window)

Burbaka ★★
()
Ответ на: комментарий от pacman

Сейчас GNU Emacs 22. Просто потому, что у него look'n'feel лучше чем у других. Особенно меня радует подсветка активного буффера :) Наконец-то приляпали, 21 век на дворе. Перешел на него с XEmacs около полугода назад. XEmacs впринципе тоже ничего, но что-то меня в нем неустраивало, сейчас уже не припомню :)

Burbaka ★★
()
Ответ на: комментарий от Burbaka

s/подсветка активного буффера/подсветка активного окна/ чтоб быть верным терминологии.

Burbaka ★★
()
Ответ на: комментарий от vtVitus

Только я не понял насчёт того что он работает "The evaluation period will expire eight (8) days from the date of the first installation of Xrefactory." 8 дней а потом переставлять ? или что ?

vtVitus ★★★★★
()
Ответ на: комментарий от CrazyPit

Или переключиться на джаву (да-да, лисп лучше, но работу не найти; хотя на hh.ru есть одна). Для джавы xref бесплатный.

hbee ★★★★
()
Ответ на: комментарий от CrazyPit

>Или купить. Можно ещё сломать, если совесть позволяет.

Оно на работе надо, работа не разорится на 400$. Ломать совесть не позволяет.

:(

vtVitus ★★★★★
()
Ответ на: комментарий от hbee

>Эге, да он заброшен!

Есть jde, достаточно хорошо работает, хотя и достаточно тормозно.

vtVitus ★★★★★
()
Ответ на: комментарий от hbee

> да-да, лисп лучше, но работу не найти;

Тогда уж лучше перл. Он хоть на юникс завязан можно сказать

CrazyPit ★★★
()
Ответ на: комментарий от Burbaka

> В cedet никакущий парсер С++. По крайней мере был полгода назад. Возможно твоя проблема именно в этом. Вместо cedet лучше использовать Xrefactory. Функционал по сути тотже (даже больше, еще и рефакторинг) а реализация на порядки лучше.

К тому же, последние полгода или больше в unstable то cedet сломают, то semantic.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.