Дадзены артыкул не прэтэндуе на ўяўленне падрабязнага апісання налад Emacs у якасці асяроддзя распрацоўкі (гэта тэма для асобнага артыкула). Я проста спрабаваў даць невялікае апісанне "Як наладзіць Cedet для працы з C & C++", хоць большасць з гэтых апісанняў будзе даступна і на іншых мовах, падтрымоўваных Cedet.
Пакет Cedet - гэты збор некалькіх бібліятэк, уключаючы розныя каманды, але выкарыстоўваныя для аднаго задання — забяспечваюць функцыянальнасць пры працы з зыходным кодам, напісаным на розных мовах праграмавання:
Цяпер лепш выкарыстоўваць палепшаную версію Cedet, якая даступная на сайце Sourceforge.net. Пасля спампоўкі кода, вам трэба змяніць функцыі cedet і кампіляваць пакет з наступнай камандай:
emacs -Q -l cedet-build.el -f cedet-build
or, to compile in terminal window, and exit after compilation, you can use following command:
emacs -Q -nw -l cedet-build.el -f cedet-build -f save-buffers-kill-terminal
Загрузка пакета адбываецца ў скрыпце cedet.el, так што ўсё, што вам трэба зрабіць — проста вынікаць ініцыялізацыі Emacs 2:
(загрузны файл "~/emacs/cedet/common/cedet.el")
Калі вы жадаеце выкарыстоўваць праекты, вам трэба ўключыць функцыю абмену — яна даступная з пакетам EDE:
(global-ede-mode t)
У залежнасці ад вашых патрабаванняў вы можаце выкарыстоўваць адну з каманд, апісаных ніжэй, каб запампаваць патрабаваны набор характарыстак (гэтыя каманды прыведзены ў парадку павелічэння, і кожная наступная каманда складаецца з функцыі папярэдняй каманды):
запампаваць-semantic-з-мінімальнымі-магчымасцямі — дазваляе мінімальны лік з неабходных патрабаванняў —
захоўвае сінтаксічную інфармацыю ў часавым буферы абмену для наступнага выкарыстання (Semanticdb), і спампоўвае інфармацыю з
Semanticdb і Ebrowse;запампаваць-semantic-з-памагатымі-кода — дазваляе другарадны-рэжым для навігацыі ў буферы, рэжым-semantic-закладкі для захоўвання адрасоў наведаных тэгаў, і
рэжым-semantic-абагульненні, які паказвае інфармацыю пра тэг пад пунктамі;запампаваць-semantic-з-памагатымі-кода-падтрымных-gaudy — дазваляе імя-semantic-stickyfunc, якое адлюстроўвае імя дзейснай функцыі ў першым радку спісу буфера, рэжым-дэкарацыі-semantic
для ўпрыгожвання тэгаў, выкарыстоўваючы розныя твары, і рэжым-semantic-дадатковы для аўтаматычнага стварэння магчымых імёнаў, калі карыстач спыняе працу на некаторы час;запампаваць-semantic-з-пашыранымі-памагатымі-кода — дазваляе рэжым-which-функцый, які паказвае імя дзейснай функцыі ў радку стану;запампаваць-semantic-з-якія выпраўляюць-памагатымі — дазваляе некалькі рэжымаў, якія карысныя пры выпраўленні Semantic — адлюстроўвае памылкі, іх стан і г.д.Вам усяго толькі трэба дадаць назву адной з гэтых каманд пасля каманды спампоўкі Cedet. Да прыкладу:
(semantic-load-enable-excessive-code-helpers)
Усё астатняе ў гэтай секцыі пацвярджае, што мінімальныя функцыі Semantic былі паскочваны.
Для выкарыстання дадатковых функцый па завяршэнні імя і адлюстраванню інфармацыі пра тэгі &
класах, вам таксама трэба будзе запампаваць пакет semantic-ia. Гэта можна зрабіць з дапамогай наступнай каманды:
(require 'semantic-ia)
Пасля спампоўкі гэтага пакета, вам трэба будзе атрымаць доступ да каманд, апісаным ніжэй.
Для звычайнай працы сістэмных бібліятэк, Semantic патрэбен доступ да сістэмы, уключаючы файлы, якія ўтрымоўваюць інфармацыю пра функцыі & тыпах дадзеных, выкарыстоўваных у гэтых бібліятэках.
Калі вы выкарыстоўваеце GCC для праграмавання ў C & C++, то Semantic зможа аўтаматычна знайсці шлях,
у которм сістэма будзе ўключаць размешчаныя ў ёй файлы. Каб зрабіць гэта, вам трэба загрузіць пакет semantic-gcc
з наступнай камандай:
(require 'semantic-gcc)
Вы таксама можаце спецыялізаваць іншыя шляхі для пошуку зняволеных у іх файлаў (і гэтыя шляхі таксама могуць вар'іравацца ў розных рэжымах). Каб дадаць шлях у спіс сістэмы,
вы можаце выкарыстоўваць каманду semantic-add-system-include, якая прымае два параметру —
радок са шляхам для ўключэння файлаў, і знак, які ўяўляе імя асноўнага рэжыму, для якога будзе выкарыстоўвацца гэты шлях. Да прыкладу:
(semantic-add-system-include "~/exp/include/boost_1_37" 'c++-mode)
Для аптымізацыі працы з тэгамі вы можаце выкарыстоўваць некалькі тэхнік:
/usr/include,
/usr/local/include, etc.) з камандай semanticdb-create-ebrowse-database ці
semanticdb-create-cscope-database;semanticdb-find-default-throttle — Да прыкладу, несипользовать інфармацыю з сістэмы, уключаючы файлы,
выдаляючы знак system са спісу аб'ектаў для пошуку c-mode:
(setq-mode-local c-mode semanticdb-find-default-throttle
'(project unloaded system recursive))
Semantic вытрымкі з сінтаксічнай інфармацыі калі Emacs знаходзіцца ў рэжыме чакання. Вы можаце аптымізаваць
semantic-idle-scheduler-idle-time час чакання (у секундах), калі вы не жадаеце выкарыстоўваць стандартныя значэнні.
Пакет Semantic можа працаваць з пакетам imenu. Гэта дазваляе адлюстроўваць меню са спісам функцый, варыятыўнасцю, і іншымі тэгамі. Для актывацыі гэтай особнности
вы можаце выкарыстоўваць semantic-load-enable-code-helpers, ці, вам трэба дадаць наступны код у файл ініцыялізацыі:
(defun my-semantic-hook () (imenu-add-to-menubar "TAGS")) (add-hook 'semantic-init-hooks 'my-semantic-hook)
Калі вы выкарыстоўваеце стандартную працэдуру загрузкі Cedet, то Semanticdb будзе загружаны аўтаматычна. Ці вы можаце запампаваць і выкарыстоўваць яго з дапамогай наступны каманд:
(require 'semanticdb) (global-semanticdb-minor-mode 1)
Для працы з Semanticdb, вам трэба вызначыць колькасць разнавіднасцяў, якія выкарыстоўваюцца для спецыялізацыі шляху, дзе захоўваецца база дадзеных і некаторыя іншыя параметры.
Гэтыя варыянты могуць быць усталяваны праз semanticdb працоўную групу.
Акрамя таго, Semanticdb можа выкарыстоўваць базы дадзеных, створаныя вонкавымі ўтылітамі —
gtags з
GNU Global, ctags, ebrowse & cscope. Для актывацыі трэба выкарыстоўваць наступны код:
;; калі вы жадаеце дазволіць падтрымку для gnu global (require 'semanticdb-global) (semanticdb-enable-gnu-global-databases 'c-mode) (semanticdb-enable-gnu-global-databases 'c++-mode) ;; дазволіць ctags для некаторых моў: ;; Unix Shell, Perl, Pascal, Tcl, Fortran, Asm (semantic-load-enable-primary-exuberent-ctags-support)
Для паляпшэння працы Semantic з кодамі З & C++ рэкамендуецца выкарыстоўваць пакет EDE (працуе з праектамі і т. д.). Для гэтых моў пакет EDE вызначае адмысловы тып праекта —
ede-cpp-root-project, які забяспечвае дадатковую інфармацыю о Semantic, якая будзе скарыстана
для аналізу зыходнага кода вашага праекта.
Для вызначэння вашага праекта вам трэба использоватьь наступны код:
(ede-cpp-root-project "Test" :name "Test Project" :file "~/work/project/CMakeLists.txt" :include-path '("/" "/Common" "/Interfaces" "/Libs" ) :system-include-path '("~/exp/include") :spp-table '(("isUnix" . "") ("BOOST_TEST_DYN_LINK" . "")))
Вы можаце выкарыстоўваць любы файл у аснове вашага праекта, як параметр :file. Гэты файл
не разабраны, але выкарыстоўваецца толькі як якар для пошуку файлаў у праектах.
Для пошуку ўключаных файлаў Semantic выкарыстоўвае кірунку з двух спісаў, якія вызначаны
для праекта. Параметр :system-include-path выкарыстоўваецца для вызначэння спісу ўсяго шляху,
які будзе шукаць уключаныя ў"сістэму" файлы. Іншы параметр —
:include-path
вызначае спіс кірункаў, якія адносяцца да асновы праекта, які будзе знойдзены
для вашых уключаных файлаў (калі імёны будуць пачынацца з /, гэта значыць, што шлях
вызначаны адносна асновы праекта). Замест вызначэння шляху як спісаў,
вы можаце падаць функцыю, якая будзе вырабляць пошук уключаных файлаў у ваш
праект. Вы можаце прачытаць пра гэта ў иснструкции да EDE.
Іншы параметр, які можа быць вызначаны ў тлумачэнні да пректу, - гэта спіс
вызначэнняў, якія будуць выкарыстоўвацца падчас кадаванні. Параметр :spp-table
дазваляе определеить спіс пар, які складаецца з імя знака & значэнні, вызначаных для дадзенага
імя. У прыкладзе вышэй мы вызначаем два знака —
isUnix і BOOST_TEST_DYN_LINK, якія
прызначаны для працэсара, і гэта дазваляе правесці правільнае фарматаванне кода.
Карыстач, калі запатрабуецца, можа памяняць варыятыўнасць файлаў усярэдзіне праекта. Гэта можа быць
зроблена шляхам спецыфікацыі параметру :local-variables, і мінанні спісу пар знакаў
па імі/значэнню, і гэтыя значэнні будуць падстаўлены да файлаў праекта.
Больш падрабязную інфармацыю пра вызначэнне працэсара вы можаце знайсці
semantic-lex-c-preprocessor-symbol-map. Спіс знакаў, вызначаных для
некаторых файлаў з зыходным кодам, вы можаце атрымаць пры дапамозе каманды semantic-lex-spp-describe, і
выкарыстоўваць яе вынік для параметру :spp-table ці semantic-lex-c-preprocessor-symbol-map.
Шматлікія спісы ў бібліятэках адзначаны макрасамі ў адным з уключаных файлаў, і вы можаце выкарыстоўваць гэтыя
значэнні. Каб зрабіць гэта, вы павінны пасартаваць гэтыя файлы ў парадку
semantic-lex-c-preprocessor-symbol-file, і калі Cedet правядзе аналіз,
гэтыя значэнні будуць прыняты да ўвагі. Наогул гэта варыятыўнасць мае толькі адну каштоўнасць — файл
са значэннямі для стандартнай бібліятэкі C++. У якасці прыкладу, я жадаў бы паказаць канфігурацыю Cedet's
у працы з Qt4:
(setq qt4-base-dir "/usr/include/qt4") (semantic-add-system-include qt4-base-dir 'c++-mode) (add-to-list 'auto-mode-alist (cons qt4-base-dir 'c++-mode)) (add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir "/Qt/qconfig.h")) (add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir "/Qt/qconfig-dist.h")) (add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir "/Qt/qglobal.h"))
Пасля дадання гэтых радкоў у ваш файл инициализациивы смоежете выкарыстоўваць імя для класаў, вызначаных у бібліятэцы Qt4. Прыклад гэтага вы видете на малюначку ўнізе.
З пункту гледжання карыстача, Semantic выконвае некалькі асноўных каманд — стварэнне
імя, які змяшчае інфармацыю пра тэгі (адрозненні, fфункции і т. д.), і навігацыя
ў зыходным кодзе. Некорые каманды створаны ў пакеце semantic-ia, тады як іншыя -
у Senator, а астатнія ў Semantic's.
У некаторых каманд няма стандартнага вызначэння ключа, і будзе лепш для вас стварыць такое, зручнае вам, і набор каманд, патрабаваных для яго, да прыкладу, як гэтыя:
(defun my-cedet-hook () (local-set-key [(control return)] 'semantic-ia-complete-symbol) (local-set-key "\C-c?" 'semantic-ia-complete-symbol-menu) (local-set-key "\C-c>" 'semantic-complete-analyze-inline) (local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle)) (add-hook 'c-mode-common-hook 'my-cedet-hook)
Жадалася б адзначыць, што распрацоўка Semantic's ідзе досыць актыўна, а калі што-небудзь не працуе, ці працуе няправільна, то адпраўляйце прыклады кода на cedet-devel mailing list — аўтар Cedet's адказвае звычайна хутка.
Стварэнне імя для функцый, зменных & класаў - часта выкарыстоўваная функцыя,
калі вы працуеце з зыходным кодам3. Усярэдзіне Semantic ёсць два пакета, якія забяспечваюць
гэта дзеянне —
semantic-ia і Senator. Каманды створаныя ў semantic-ia выкарыстоўваюць
функцыю semantic-analyze-possible-completions для стварэння спісу магчымых імёнаў,
і гэта функцыя прымае да ўвагі шматлікія параметры, і яна таксама можа быць
пашырана карыстачом для выдачы больш дакладных імёнаў. У той жа час, каманды з пакета
Senator выкарыстоўваюць прасцейшыя метады для стварэння спісу ўсіх варыянтаў імёнаў
(звычайна выкарыстоўваецца инйормация пра вызначэнні толькі ў бягучым файле), і гэта часам прыводзіць да
няправільнага стварэння імёнаў.
Калі вы выкарыстоўваеце каманду semantic-ia-complete-symbol, калі набіраеце код, то
яе праца прывядзе да завяршэння перадачы імя — імя функцыі, зменнай, ці
чальца класа, у залежнасці ад кантэксту. Калі ёсць некалькі варыянтаў імя, тое
гэта імя будзе дадзена агульнай часткі, а калі вы выклічце гэту каманду ў другі
раз, то будзе паказаны буфер з усімі магчымымі камбінацыямі. Карыстач можа таксама выкарыстоўваць каманду
semantic-ia-complete-symbol-menu, якая таксама аналізуе выкарыстоўваны кантэкст, і адлюстроўвае
спіс магчымых варыянтаў у графічным меню, з якога карыстачом будзе
абрана патрэбнае імя4. Акрамя таго, там ёсць каманда semantic-ia-complete-tip, якая
адлюстроўвае спіс магчымых імёнаў прылад.
Як было сказана вышэй, пакет Senator таксама мае каманды для стварэння імёнаў,
якая працуе хутка, але з меншай дакладнасцю, бо каманды выкарыстоўваюць некалькі параметраў
у стварэнні імя. Каманда senator-complete-symbol (C-c , TAB) стварае імя
для дзейснага тэга і выдае першы знойдзены варыянт у якасці выніку. Калі імя няправільна,
вы можаце запытаць другое імя для спісу, паўтараючы гэту каманду і т. д.
Калі там шмат варыянтаў магчымых імёнаў, ці вы жадаеце ўбачыць поўны спіс функцый і
зменных для некалькіх класаў, то лепш выкарыстоўваць каманду senator-completion-menu-popup
(C-c , SPC), якая адлюстроўвае спіс усіх магчымых камбінацый у графічным меню.
Акрамя гэтых каманд, для некаторых моў карыстач можа выкарыстоўваць адмысловы рэжым —
semantic-idle-completions-mode (ён будзе загружаны, калі вы выкарыстоўваеце
emantic-load-enable-gaudy-code-helpers, ці вы можаце ўсталяваць яго самога) — у гэтым рэжыме
назвы імёнаў паказаны аўтаматычна, калі карыстач спыняе працу на некаторы час (рэжым
сну). Стандартна паказваецца толькі першая магчымая назва, і карыстач можа выкарыстоўваць ключ TAB
для навігацыі па спісе магчымых імёнаў.
Для моў, падобных З, карыстач можа выкарыстоўваць каманду semantic-complete-self-insert, праз
. і/ці > ключы, як паказана ніжэй:
(defun my-c-mode-cedet-hook () (local-set-key "." 'semantic-complete-self-insert) (local-set-key ">" 'semantic-complete-self-insert)) (add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)
Выкарыстанне гэтых налад прывядзе да актывацыі каманды semantic-complete-self-insert, калі
карыстач націсне . ці > пасля зменных, якія размешчаны ў класах ці структурах, і
адлюстраваных у спісе магчымых імёнаў для дадзенага класа ці структуры.
Пакет semantic-ia апрацоўвае некалькі каманд, якія дазваляюць атрымаць інфармацыю пра
класы, функцыях & зменных. У якасці дакументацыі выкарыстоўваюцца коментарии, знойдзеныя ў зыходным
кодзе, уключаючы каментары, напісаныя для Doxygen. Вось наступныя каманды:
semantic-ia-show-docsemantic-ia-show-summarysemantic-ia-describe-classАдна з найболей карысных каманд для навігацыі ў зыходным кодзе - semantic-ia-fast-jump,
якая дазваляе пераскочыць з вызначэння функцыі ці зменнай, чыё імя знаходзіцца
пад паказальнікам. Вы можаце вярнуцца пры дапамозе каманды semantic-mrub-switch-tag (C-x B), якая даступная
пры выкарыстанні рэжыму semantic-mru-bookmark-mode.
Semantic таксама падае дзве дадатковыя каманды дле пераходу да функцыі ці зменнай:
вызначаных у дзейсным файле —
semantic-complete-jump-local (C-c , j), ці вызначаных у дзейсным праекце —
semantic-complete-jump (C-c , J). Абедзве каманды дазваляюць уводзіць імя
функцыі ці зменнай (уключаючы мясцовыя зменныя для функцый) і пераходзіць да знойдзеных
пазначэнняў (вы можаце выкарыстоўваць імя па змаўчанні для ўводу імя).
Галоўнае адрозненне паміж камандамі semantic-ia-fast-jump & semantic-complete-jump -
гэта тое, што першая працуе са складанымі імёнамі, такімі, як this::that->foo(), тады як другая
можа знаходзіць толькі простыя імёны як foo.
Каманда semantic-analyze-proto-impl-toggle дазваляе пераключэнне паміж функцыямі
і мовамі, і якая працуе з рознымі варыяцыямі функцый.
Іншая карысная каманда -
semantic-decoration-include-visit, якая дазваляе працаваць з уключаным файлам, чыё імя
размешчана пад пунктам.
Senator таксама прапануе некалькі каманд для навігацыі ў зыходным кодзе. Гэта команы
senator-next-tag (C-c , n) і senator-previous-tag (C-c , p), якія перасоўваюць курсор
да наступнага ці преыдущему тэгу, а таксама каманда senator-go-to-up-reference (C-c , u), якая
перасоўвае курсор да "бацькоўскаму" тэгу (да прыкладу, для функцыі чальцоў класа, "родителського" тэга
дэкларацыя класа).
Не так даўно Semantic была створана вельмі карысная функцыя —
semantic-symref, якая
дазваляе знаходзіць месцы, дзе знакі, чые імёны размешчаны пад пунктамі, выкарыстоўваюцца ў вашым праекце.
Калі вы жадаеце знайсці ўжыванне знаку з любым імем, вы можаце выкарыстоўваць semantic-symref-symbol,
які дазваляе вам вызначыць імя знака.
Калі перавагі дадзенаму імю не былі знойдзены ў базе дадзеных (GNU Global, etc.),
то гэта каманда паспрабуе знайсці іх з дапамогай find-grep. У выніку адбору
гэтых каманд будзе створаны новы буфер з вынікамі, і карыстач зможа выкарыстоўваць іх для пераходу
ў паказаныя месцы:
Бо ў Semantic ёсць амаль поўная сінтаксічная інфармацыя пра зыходны код, гэта дазваляе яму
наладзіць функцыянальнасць, падобную на функцыянальнасць, створаную ў пакеце hideshow.
Для працы з гэтай функцыяй вам трэба стварыць узаемадзеянне паміж
global-semantic-tag-folding-mode зменнымі. Калі вы зробіце гэта, у поле
адлюструюцца маленькія трыкутнікі, і вы зможаце адкрываць і зачыняць часткі кода,
проста націскаючы на іх (не толькі часці исходого кода, але і каментары, і іншыя
oобъекты).
У Senator ёсць падобная функцыя, але яна звычайна выкарыстоўваецца для вышэйшых аб'ектаў —
функцый, класаў і т. д. Вы можаце адкрываць частку кода з камандай senator-fold-tag
(C-c , -), і зачыняць з senator-unfold-tag (C-c , +).
Пакет Senator определеяет набор каманд для працы стегами, што дазваляе карыстачу выразаць
ці скапіяваць тэг, і перамясціць яго ў іншае месца і т. д. Каб абразаць бягучы тэг (звычайна гэта
апісанне якой-небудзь функцыі ці яе месцазнаходжанне), патрабуецца каманда senator-kill-tag (C-c ,
C-w). Вы можаце функцыянаваць тэг стандартным спалучэннем клавіш C-y, калі каманда
senator-yank-tag (C-c , C-y) працуе толькі з месцазнаходжаннем тэга без цела. Іншая карысная каманда
senator-copy-tag (C-c , M-w), якая капіюе бягучы тэг — гэта вельмі
зручна, калі вы жадаеце змясціць месцазнаходжанне функцыі ў бягучы файл, напрыклад.
Senator дазваляюць змяняць паводзіны стандартных пошукавых каманд (re-search-forward,
isearch-forward і іншыя), калі вы працуеце з зыходным кодам, такім чынам, яны прадставяць пошук
толькі ў абраных тэгах. Для актывацыі гэтага рэжыму выкарыстоўвайце:
senator-isearch-toggle-semantic-mode каманду(C-c , i), а з камандай
senator-search-set-tag-class-filter (C-c , f) вы можаце абмежаваць пошук да абраных тыпаў тэга
—
function для функцый, variable для зменных і т. д.
Вытакже можаце вырабляць пошук па тэгах без актывацыі гэтага рэжыму — вы проста павінны выклікаць
наступную каманду: senator-search-forward ці senator-search-backward.
Пакет Srecode позваляет карыстачу размяркоўваць розныя раскладкі кодаў, але ён адрозніваецца ад
іншых пакетаў, якія рэалізуюць размеркаванне раскладак, наколькі спіс даступных раскладак
можа вар'іравацца ў залежнасці ад выкарыстоўванага тэксту. Да прыкладу, усталёўка функцыі get/set здарыцца,
толькі есль вы знаходзіцеся ўсярэдзіне класа. Ці ўсталёўка функцыі
можа адбыцца па-за іншай функцыяй.
Асноўная каманда, выкарыстоўваная для размеркавання раскладак, - srecode-insert, якая працуе
ад ключоў C-c / /. Гэта каманда спытае ў карыстача імя раскладкі (вы можаце
ўвесці яе, выкарыстоўваючы стваральнік імёнаў). Спіс магчымых раскладак будзе вар'іравацца, у залежнасці ад
сапраўднага кантэксту. Калі вы жадаеце пераразмеркаваць тую ж раскладку яшчэ раз, вы можаце выкарыстоўваць каманду
srecode-insert-again.
C-c / .).
Раскладкі, вызначаныя карыстачом, Могуць таксама выкарыстоўваць уласныя спалучэнні ключоў. Яны могуць выкарыстоўваць
знакі са спісу C-c / [a..z], і карыстач можа ўдакладніць становішча раскладкі, ключ да кторой
будзе пацверджаны. Да прыкладу, для C++ вы можаце выкарыстоўваць спалучэнне C-c / c для змены
становішча класа.
Спалучэнні ключоў, якія выкарыстоўваюць вышэйшыя знакі, прызначаны для раскладак & каманд, створаных
у Srecode. Да прыкладу, C-c / G (srecode-insert-getset) вызначае пару функцый
get/set для некаторых зменных чальцоў класа, тады як C-c / E (srecode-edit) выкарыстоўваецца для рэдагавання
раскладак. Час ад часу спіс гэтай каманды змяняецца, таму вам трэба шукаць
у иснструкции для атрымання рэальнага спісу каманд.
Акрамя раскладак, sсозданных у Cedet, карыстач можа ствараць свае ўласныя закладкі і захоўваць іх
у ~/.srecode, дзе Cedet знойдзе іх аўтаматычна. Вы можаце прачытаць
пра стварэнне закладак у інструкцыі да Srecode, якая даступная нароўні з іншымі
дакументамі Cedet.
Разам з Cedet падаецца некалькі дадатковых пакетаў. Некаторыя з іх
размешчаны ў падпраграме contrib, якая таксама будзе дададзена ў спіс пошуку пакета, калі вы
загрузіце Cedet, і вам не трэба будзе рабіць нічога іншага, каб загрузіць іх.
Самы просты пакет складаецца з некалькі дадатковых каманд, якія выкарыстоўваюць для сваёй працы інфармацыю, якая змяшчаецца ў Semantic. Стандартна ў гэтых каманд няма ўсталявальных лючей, таму вам трэба будзе ўсталяваць іх самастойна.
Каманда eassist-list-methods, створаная ў файле з зыходным кодам, пакажа вам спіс
функцый, змешчаных у дзейсным буферы і дазволіць вам хутка перайсці на абраную
функцыю.
Калі вы распрацуеце код для працы на C і/ці C++ мовах, тады вам будзе карысная каманда eassist-switch-h-cpp
— яна пераходзіць паміж уключанымі файламі, якія ўтрымоўваюць
дадаткі (калі ў іх адны і тыя ж імёны, але розныя напаўненні).
1. Першы радок патрэбна, толькі калі вы ствараеце пакет з CVS
2. Вы можаце выкарыстоўваць my configuration file for Cedet як аснову, хоць яна ўтрымоўвае шмат непатрэбных рэчаў
3. TТакже ёсць каманда semantic-complete-analyze-inline, якая паказвае спіс усіх
магчымых назваў у асобным акне, што звычайна бывае карысным у графічным меню
4. Калі стварэнне імя працуе няправільна, паспрабуйце прааналізаваць, чаму гэта адбываецца, і адпраўце паведамленне пра памылку толькі пасля гэтага. Інфармацыю пра адпраўку паведамленняў пра памылку вы можаце знайсці ў кіраўніцтве карыстача Semantic у секцыі Smart Completion Debugging
Last change: 14.03.2011 08:13 |