小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

讓Emacs功能強(qiáng)于source Insight

 盈盈一書屋 2012-05-31

單獨(dú)的Emacs軟件的話,雖然也有著除了編輯以外的各種各樣的功能,例如Mail,網(wǎng)頁瀏覽等等,但是,僅對于我個人我還是覺得他就是個文本編輯器,因為別的功能我不用,也用不上。而且這個編輯器使用時還非常的費(fèi)勁,覺不出他比微軟的記事本強(qiáng)在哪里。

但是,Emacs支持配置其工作環(huán)境,當(dāng)結(jié)合了一些插件后,他就發(fā)揮出強(qiáng)大的功能了。
這個強(qiáng)大的功能 = SourceInsight+專用仿真Debug軟件之和。
還有就是,他是免費(fèi)的,F(xiàn)reeDownload的,可自定義的。
微軟在努力讓我們告別鍵盤,Linux則建議大家沒事別老碰鼠標(biāo)。
Emacs + gtags + cedet + ecb + doxymas + session + GDB
Emacs:GNU Emacs
gtags:GNU GLOBAL source code tag system
cedet:Collection of Emacs Development Environment Tools
ecb:Emacs Code Browser
doxymacs:Doxygen + Emacs
Doxygen:Source code documentation generator tool
session:Session Management for Emacs
GDB:GNU Project debugger

個人環(huán)境:VMware7.0.0 + (Fedora7+Ubuntu9.10)
Fedora7:現(xiàn)在fedora的最高發(fā)行版是Fedora12,所以用7的話,如果yum在線安裝,包的版本可能較低。
Ubuntu9.10:現(xiàn)在的最新版,apt在線安裝的話,包版本較新。
較新不是最新,想最新的話,去各自官網(wǎng)現(xiàn)在src安裝吧。

目標(biāo)源代碼:C語言
如果沒有現(xiàn)成的代碼就下個kernel或gcc或glib的源代碼吧。
但是建議寫個hello來試運(yùn)行,因為前者的源代碼都太大了,gtags建立tags或htags創(chuàng)建HTML模式源代碼和doxygen生成文檔等的時候,花費(fèi)時間極長。
同時也寫好hello的configure.ac和Makefile.am吧,能夠編譯后執(zhí)行,以便體驗功能。



Emacs:GNU Emacs (Ver:23.1)
Emacs:Editor MACroS(宏編輯器)
HomePage:http://www./software/emacs/
功能和熱鍵的學(xué)習(xí):

  • http://man./soft/emacsuserguide/index.html
  • http://www./software/chinese/manual/TUTORIAL.cn
  • 《學(xué)習(xí)GNU Emacs》(68元)/《GNU Emacs Lisp 編程入門》(38元)
    網(wǎng)上有中文掃描版和英文版的下載,忘了在哪里下的了,搜搜吧。
    掃描版不清晰,例代碼根本看不清,建議購入原書。
  • http://man./newsoft/Emac/book.html

下載安裝:參考上記Homepage。
http://ftp./gnu/emacs/

重點(diǎn):
 記住個別編輯工作中常用Hotkey。
 知道.emacs文件和<load-path>設(shè)置的作用和用法。
 知道LISP語言。(但是不一定要掌握這種語言,抄抄網(wǎng)絡(luò)上大俠的就行,同時也希望更多的人加入到Lisp行列中)

簡單說明:

  • .emacs文件:是Emacs啟動時,自動讀取用戶自定義配置的默認(rèn)的配置文件
    (手動創(chuàng)建該文件,自定義配置都寫在該文件中,LISP語言,"/home/yourname/"路徑下)
  • shell命令啟動Emacs時,如果用'emacs -q'命令,則不加載任何額外的自定義設(shè)置啟動Emacs.
  • <load-path>:由'.emacs'文件中編寫的相應(yīng)的自定義配置,調(diào)用的關(guān)聯(lián)**.el文件的存放路徑。
    (在.emacs中記入該路徑時,建議使用絕對路徑.這樣通過shell命令無論用哪個帳戶的ENV啟動Emacs時,都能正確讀取對應(yīng)的**.el文件。也就是無視'~'所代替的ENV中的$HOME的值是什么,LISP語言)
    這個<load-path>的文件夾,可以手動創(chuàng)建(推薦),也可以用Emacs軟件的默認(rèn)路徑(/usr/local/share/emacs/site-lisp/)。
  • 下記的.emacsLoadpath 就是手動創(chuàng)建的一個文件夾,其中放置一些,準(zhǔn)備使用的el文件啦,cedet啦,ecb啦,gtags.el啦等等。


 

例:
;load-path
(add-to-list 'load-path "/home/yourname/.emacsLoadpath")


個人.emacs文件中的內(nèi)容:
(僅安裝emacs軟件后,即可完成的動作,無需安裝其他的組件,但需要個別插件,都是參考其他大俠的)

 

;load-path
(add-to-list 'load-path "/home/yourname/.emacsLoadpath")

(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.
 '(column-number-mode t);默認(rèn)顯示行號的同時,也顯示列號
 '(display-time-mode t);顯示當(dāng)前時間
 '(inhibit-startup-screen t);關(guān)閉啟動畫面
 '(show-paren-mode t);顯示與當(dāng)前光標(biāo)所在位置的括號匹配的另一個括號
)

(setq visible-bell t);關(guān)閉出錯時的蜂鳴提示聲
(mouse-avoidance-mode'animate);當(dāng)鼠標(biāo)箭頭與光標(biāo)相近時,使鼠標(biāo)箭頭自動移開
;(blink-cursor-mode nil);光標(biāo)不閃爍
(setq-default cursor-type 'bar);光標(biāo)顯示為一豎線
(tool-bar-mode -1);; 不顯示emcas的工具欄
(menu-bar-mode -1);; 不顯示emcas的菜單欄,按ctrl+鼠標(biāo)右鍵仍能調(diào)出該菜單
(setq x-select-enable-clipboard t);; 支持emacs和外部程序之間進(jìn)行粘貼
(fset 'yes-or-no-p 'y-or-n-p);以 'y/n'字樣代替原默認(rèn)的'yes/no'字樣
(setq frame-title-format "%b@emacs");在最上方的標(biāo)題欄顯示當(dāng)前buffer的名字
(setq make-backup-files nil);關(guān)閉自動備份功能
(setq auto-save-mode nil);關(guān)閉自動保存模式
(setq auto-save-default nil);不生成名為#filename# 的臨時文件
(setq require-final-newline t);; 自動的在當(dāng)前的buffer文件的最后加一個空行
(global-set-key "\r" 'align-newline-and-indent);;自動縮進(jìn)<C-j>變?yōu)?lt;Enter>
(setq echo-keystrokes 0.1);; 盡快顯示按鍵序列提示
(global-font-lock-mode t);; 語法高亮
;; 用來顯示當(dāng)前光標(biāo)在哪個函數(shù)
;(require 'which-func)
(which-func-mode 1)
(setq which-func-unknown "unknown")
;; 用M-x執(zhí)行某個命令的時候,在輸入的同時給出可選的命令名提示
(icomplete-mode 1)
(define-key minibuffer-local-completion-map (kbd "SPC") 'minibuffer-complete-word)

(global-hl-line-mode 1);;高亮當(dāng)前行

;;;;;;;;;;;;;;;;;啟動時最大化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'maxframe)
(add-hook 'window-setup-hook 'maximize-frame t)
;下載maxframe.el并放置在<load-path>中
;http:///2007/02/22/maximize-on-startup-part-2/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;web方式顯示行號;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(set-scroll-bar-mode 'right);滾動條在右側(cè)
(set-scroll-bar-mode nil)   ; 不顯示滾動條, even in x-window system (recommended)
(require 'wb-line-number)
(wb-line-number-toggle)
;下載wb-line-number.el并放置在<load-path>中
;http://homepage1./blankspace/emacs/elisp.html
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;cc-mode;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "/home/lb/.emacsLoadpath/cc-mode-5.31.3")
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)
;http://cc-mode./
;http://www./html/linuxwangluojishu/linuxxitongguanliyuan/200902/28-3728.html
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(set-face-background 'default "gainsboro");背景設(shè)定
;顏色參考value:X界面菜單欄中[edit]->[text properties]->[Display colors]

;未完其他內(nèi)容在本文的后續(xù)部分介紹
;session
;global(GNU GLOBAL source code tag system)
;##cedet(Collection of Emacs Development Environment Tools)
;##ecb(Emacs Code Browser)
;##doxymacs
;##compile
;##GDB








gtags:GNU GLOBAL source code tag system (Ver:5.7.7)
HP:http://www./software/global/
看看Tutorial(指導(dǎo))中的Overview就知道,通過gtags能夠建立軟件工程項目。
這就說明,Emacs+gtags的組合,就可以是能夠創(chuàng)建工程項目的編輯軟件了。
(基本等于sourceinsight,如果在加上cedet和ecb就更完美了)

還有很多人不用gtags而用的是cscope,我個人沒用過cscope,大家可嘗試使用。

支持的基本環(huán)境

  • Shell command line
  • Bash shell
  • Vi editor (Nvi, Elvis, vim)
  • Less viewer
  • Emacs editor (Emacs, Mule, Xemacs)
  • Web browser
  • Doxygen documentation system 

基本用法:
①下載安裝gtags后,在源文件的目錄中,鍵入"gtags -v"命令,就會生成相應(yīng)文件。
[xx@localhost sys]$ gtags -v

例:source code(/usr/src/sys)       123MB

GPATH 1MB `GPATH' path name database
GTAGS 26MB `GTAGS' definition database
GRTAGS 22MB `GRTAGS' reference database
GSYMS 23MB `GSYMS' symbol database
-------------------------------------
total of tag files 72MB

gtags的其他options的含義,請參考man手冊。
(輔助:http://blog./u3/98822/showart_2129660.html)

②下載安裝gtags后,會有名為gtags.el的文件,注意看安裝時make install的list,即可找到gtags.el的安裝位置(默認(rèn)目錄是:/usr/local/share/gtags/)。
gtags.el的路徑設(shè)置為Emacs的<load-path>。
例:
`$HOME/.emacs'文件中加入下記代碼例。

 

(setq load-path (cons "/home/owner/global" load-path));gtags.el load-path

(autoload 'gtags-mode "gtags" "" t);gtags-mode is true

從此啟動Emacs后,及在<load-path>中l(wèi)oad了gtags.el文件,并將gtags-mode設(shè)置為真(等同于每次啟動后,都在Emacs中的M-x,手動鍵入gtags-mode)。

個人.emacs文件中的內(nèi)容:

;##global(GNU GLOBAL source code tag system);;;;;;;;;;;;;;;;;;;;;
;to use global from Emacs, you need to load the `gtags.el' and execute gtags-mode function in it.
;you need to add it to load-path. for `gtags.el'file.
;(add-to-list 'load-path "<path to gtags.el>");已經(jīng)在之前的代碼中l(wèi)oad完了
(autoload 'gtags-mode "gtags" "" t);;start Emacs and execute gtags-mode function.  
(setq c-mode-hook
      '(lambda ()
     (gtags-mode 1)));get into gtags-mode whenever you get into c-mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


③當(dāng)源程序的源文件的內(nèi)容變化了(導(dǎo)致行號變化),或追加刪除了源文件等等。只要有改變,就要更新gtags生成的那4個文件。

例:source code(/usr/src/sys)

[xx@localhost sys]$ gtags -vi 
or
[xx@localhost sys]$ global -u (推薦)

詳細(xì)用法:
直接參考gtags的英文的Tutorial(指導(dǎo))。
有很多章節(jié)可以跳過,因為那是global在別的編輯軟件中的應(yīng)用方法的說明。(例如shell,vi等)
 章節(jié)還是要必看的。

看了gtags的英文的Tutorial(指導(dǎo))后,發(fā)現(xiàn)htags也蠻有用的。
$ htags -Ff -sanohIvt 'Welcome to XXX source tour!' --table-flist=1
$

注:gtags-parser和gtags-cscope沒搞明白,哪位大俠能幫幫忙解說一下,或發(fā)個說明鏈接什么的。
gtags會調(diào)用gtags-parser和gtags-cscope對目標(biāo)代碼,進(jìn)些分析,目的為生成源碼的tags。?

gtags完成的基本動作(具備鍵盤的快捷鍵):

  • 鼠標(biāo)滾輪鍵(下按):根據(jù)上下文,找到"函數(shù)或常量或變量"的"定義或調(diào)用"的位置。
    或,按【enter】。
  • 鼠標(biāo)右鍵:返回。(就是按完滾輪鍵后,想返回到原來剛才的位置的話,就按右鍵)
    鼠標(biāo)右鍵(返回),我想應(yīng)該是emacs的功能,而不是Global的功能。
    如果鍵盤操作的話,應(yīng)該是:
    ①調(diào)用處搜索關(guān)鍵字→ 結(jié)果列表→ [Enter]鍵選擇→ 被選部分的代碼表示
    ②被選部分處,再次搜索相同關(guān)鍵字→ 結(jié)果列表→ [Enter]鍵選擇→ 原調(diào)用處的代碼再表示
  • 光標(biāo)+Enter:當(dāng)按滾輪鍵后,出現(xiàn)的調(diào)用位置的結(jié)果為多個時,將光標(biāo)調(diào)整到相應(yīng)行,按下回車即可跳轉(zhuǎn)到對應(yīng)位置。
    (如圖,名為_exit_ts的函數(shù)在整個項目中,有多個位置調(diào)用他)




※※※※※ 先去試試上記內(nèi)容吧!如果不行,往下進(jìn)行也沒什么意義?!?/div>




CEDET:Collection of Emacs Development Environment Tools Ver:1.0pre6


HP:http://cedet./
安裝:http://cedet./setup.shtml  (切記看看下載后的INSTALL文件,需要make編譯)
沒有CEDET的話,后續(xù)的ecb不能安裝使用。

這個組件,安裝簡單,使用便利。(望大家閱讀文檔,了解他的各種功能)

我個人常用的兩個功能是,speedbar和smart code completion(自動補(bǔ)全)

個人.emacs文件中的內(nèi)容:

 

;##cedet(Collection of Emacs Development Environment Tools);;;;;;
(load-file "/home/yourname/.emacsLoadpath/cedet/common/cedet.el")
;讀取子目錄中的特別的 .el 文件
(global-ede-mode 1); Enable the Project management system
(semantic-load-enable-code-helpers); Enable prototype help and smart completion 
(global-srecode-minor-mode 1); Enable template insertion menu
(global-set-key [(f4)] 'speedbar-get-focus);speedbar快捷鍵[F4]
(define-key c-mode-base-map [(control tab)] 'semantic-ia-complete-symbol-menu);自動補(bǔ)全Ctrl+tab
;(control tab)(meta ?/)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


speedbar插圖




smart code completion(自動補(bǔ)全)插圖:
就是當(dāng)輸入一個已有的函數(shù)名或變量常量名的時候,輸?shù)揭话霑r按快捷鍵自動補(bǔ)全剩余的字母。
我自定義的該功能的快捷鍵是<Ctrl> + <Tab>,也有設(shè)成<Meta> + / 的,根據(jù)個人習(xí)慣,自行定義。



來自官網(wǎng)的插圖:






注:當(dāng)前發(fā)布的最新版的CEDET Ver:1.0pre6,在使用的時候發(fā)現(xiàn)了一個問題。
就是在執(zhí)行自動補(bǔ)全功能,索引tags時,到LL/confname.h的10%時,Linux系統(tǒng)會down機(jī)。
這個不幸的事情在我的電腦上發(fā)生了。

解決方法(轉(zhuǎn)載):http://hi.baidu.com/susdisk/blog/item/dceeded0278c7d85a1ec9c01.html
----轉(zhuǎn)載------

cedet索引LL/confname.h時emacs掛掉解決方案
2009年12月06日 星期日 19:11

    使用cedet1.0pre6時一直有這個問題,一旦看一個新工程時,semantic進(jìn)行索引tags,到LL/confname.h的10%時就會down掉,沒有響應(yīng)。在mail-list里面已經(jīng)有討論(http://www./showthread.php?t=101444),解決方案也很簡單,不用1.0pre6,使用cvs版本,如果還使用了ecb,則在重新?lián)Qcvs版本后還要重編譯ecb,否則emacs是load error的。cedet的cvs版本獲取地址:
(shell命令)

cvs -z3 -d:pserver:anonymous@cedet.cvs.:/cvsroot/cedet co -P cedet

    現(xiàn)在好了,emacs不會在看一個新工程時就掛掉了,而且聽說cvs版本的補(bǔ)全功能更完備一些。

------------




ECB:Emacs Code Browser Ver:ecb-2.40

HP:http://ecb./
安裝:http://ecb./docs/Installation.html#Installation
其中
Requirements內(nèi)容中的1和2還是必要的,3和4對于我來說用不上(我的環(huán)境非XEmacs,目標(biāo)代碼也不是Java)

輔助:
http://blog.csdn.net/intrepyd/archive/2009/07/09/4333893.aspx

  • 其中在上記"輔助"的blog中設(shè)置[鼠標(biāo)支持]的時候,fedora使用'鼠標(biāo)滾輪下按'的方式選擇和設(shè)置。
  • 關(guān)閉ecb的"每日提醒"和info和upgrandoption界面,請參考下記.emacs文件中的代碼。


疑問:ecb中的
Methods窗口為什么有的時候是空的,什么都沒有?
有的時候能夠正確表示當(dāng)前源文件中定義的函數(shù)/類型/成員列表呢?
難道是當(dāng)前的文件定義的數(shù)量太多?
貌視保存一下當(dāng)前文件,就能正確表示了。(待反復(fù)確認(rèn))


個人.emacs文件中的內(nèi)容:

 

;##ecb(Emacs Code Browser);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path
                     "/home/lb/.emacsLoadpath/ecb")
(load-file "/home/lb/.emacsLoadpath/ecb/ecb.el")
(require 'ecb)
(require 'ecb-autoloads)
;(setq ecb-auto-activate t);自動啟動ecb
(setq ecb-auto-activate t;自動啟動ecb
ecb-tip-of-the-day nil;不顯示每日提醒
inhibit-startup-message t;不知道什么意思,望各位指導(dǎo)
ecb-auto-compatibility-check nil;
ecb-version-check nil;
)
(global-set-key [f8] 'ecb-activate) ;;定義F8鍵為激活ecb
(global-set-key [f7] 'ecb-deactivate) ;;定義F7為停止ecb
;;;; 各窗口間切換
(global-set-key [M-left] 'windmove-left)
(global-set-key [M-right] 'windmove-right)
(global-set-key [M-up] 'windmove-up)
(global-set-key [M-down] 'windmove-down)
;;;; 使某一ecb窗口最大化
(define-key global-map "\C-c1" 'ecb-maximize-window-directories)
(define-key global-map "\C-c2" 'ecb-maximize-window-sources)
(define-key global-map "\C-c3" 'ecb-maximize-window-methods)
(define-key global-map "\C-c4" 'ecb-maximize-window-history)
;;;; 恢復(fù)原始窗口布局
(define-key global-map "\C-c`" 'ecb-restore-default-window-sizes)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


ecb界面插圖




ecb的Method窗口最大化





官網(wǎng)的各種插圖
http://ecb./screenshots/index.html

※※※※※ 到這里是不是覺得已經(jīng)可以基本完全=SourceInsight了呢?※※※※※
※※※※※   去試試上記內(nèi)容吧!如果不行,往下進(jìn)行還是沒啥意思。   ※※※※※





doxymacs:Doxygen + {X}Emacs Ver:1.8.0

文檔文檔文檔,文檔是寫給誰的?寫給別人看的?寫給領(lǐng)導(dǎo)看的?
我覺得文檔是寫給你自己的,為了備忘、整理思路和確認(rèn)檢查。(例如本貼,望大家都來留下一筆吧)
但是寫文檔,好像挺費(fèi)勁呀。尤其是coding完成/功能實現(xiàn)之后,就更不愿意回過頭來寫已經(jīng)完成的功能的設(shè)計文檔了。
其實設(shè)計文檔都應(yīng)該在實際coding之前完成,而不是,之后補(bǔ)寫。

那么,就用Doxygen根據(jù)代碼來生成文檔吧。不過生成的文檔,只能當(dāng)做該模塊的外部規(guī)格文檔。詳細(xì)設(shè)計文檔可以在此基礎(chǔ)上修改做成。使得文檔的做成變得簡單方便了。

那Doxymacs和Doxygen是什么關(guān)系呢?

Doxygen是根據(jù)code生成文檔的工具。
主要是根據(jù)code中的注釋內(nèi)容生成文檔,這個注釋是要按照Doxygen工具中約定的寫法格式才能夠正確的生成文檔。
他可以使你養(yǎng)成寫注釋的習(xí)慣,寫好注釋的習(xí)慣。
同時你做成的代碼,后期可維護(hù)能力也大幅提高。
如果你看到幾千行的code一行注釋都沒有,會不會有種想吐的感覺呢?

Doxymacs則是結(jié)合在Emacs中的插件。
通過快捷鍵,自動完成符合Doxygen中要求的注釋格式。
當(dāng)然注釋的具體內(nèi)容是要由設(shè)計者自行添加的。

Doxymacs HP: http://doxymacs./
輔助:http://blog./u3/98822/showart_2137605.html

個人.emacs文件中的內(nèi)容:

 

;##doxymacs;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "/home/lb/share/emacs/site-lisp/");讀取安裝el的路徑
(require 'doxymacs) ;; 啟動doxymacs
;;注釋高亮,針對C和C++程序
(defun my-doxymacs-font-lock-hook ()
  (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
      (doxymacs-font-lock)))
(add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)
(doxymacs-mode);doxymacs-mode常true
(global-set-key [(f6)] 'doxymacs-mode);doxymacs-mode快捷鍵[F6]
;(add-hook 'c-mode-common-hook 'doxymacs-mode) ;; 啟動doxymacs-mode
;(add-hook 'c++-mode-common-hook 'doxymacs-mode) ;; 啟動doxymacs-mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;





Doxygen:Source code documentation generator tool Ver:1.6.2

HP:http://www./~dimitri/doxygen/index.html
安裝方法和使用方法,看看Manual吧。

輔助:
http:///2005September/2005-09-13/200335.html
http://blog.csdn.net/SigmaSys/
http://blog.csdn.net/nightelve/archive/2008/05/31/2498047.aspx
http://blog./u3/98822/showart_2136698.html

生成的文檔的格式類型:
HTML
LaTeX
RTF
XML
Man Page

Doxygen會根據(jù)生成的configuration文件中的設(shè)定,來生成對應(yīng)的文檔。
Doxywizard可以更方便的設(shè)置這個configuration設(shè)定文件(GUI化)。
要么就用text模式來自行設(shè)置configuration文件,這個文件有點(diǎn)像Makefile文件的感覺。

看完Getting started章節(jié)后,即可生成你的第一份文檔了。
不過詳細(xì)的內(nèi)容,還是請仔細(xì)閱讀Manual。


關(guān)于Doxywizard:
使用源代碼安裝,沒能安裝上。異常的messages忘了是什么就不貼出來了。
終于裝上了,http://blog./u3/98822/showart.php?id=2154045

但是,由于使用的是fedora系統(tǒng),所以通過yum找到了Doxywizard 1.5.5,并安裝成功。(其他Linux使用apt命令)

那么就將Doxywizard 1.5.5的貼圖發(fā)出來讓大家看看
(不知和doyxgen 1.6.2一起使用會有什么異常,也許是新的個別選項無法設(shè)置吧)
(建議大家源碼安裝和doyxgen 1.6.2匹配的Doxywizard)
哦,對了這個Doxywizard的啟動是通過shell命令方式啟動的,不是點(diǎn)擊圖標(biāo)的形式。





插一張,doxygen生成的method圖,以便大家參考,當(dāng)然還生成各個函數(shù)的獨(dú)立的圖等等




有時通過method圖,也能發(fā)現(xiàn)軟件潛在的風(fēng)險,如下圖main函數(shù)的紅色箭頭部分






對于軟件的分析,僅用上面的method類狀態(tài)遷移圖是不夠的,尤其是對別人的代碼進(jìn)行分析。
再生成流程圖吧。(autoflowchart or Crystal REVS)(非doxygen)
http://blog./u3/98822/showart_2145179.html






關(guān)于Fedora的yum:
yum是在線更新fedora的重要工具之一:Yellow dog Updater

yumex是yum命令的圖形化前端可選組件。(yum extender)
HP:http://www./blog/

安裝時,可使用shell命令:$ yum install yumex
網(wǎng)上相關(guān)說明很多。(yum命令的用法)

插圖:





※※※※※文檔已經(jīng)能生成了,后面內(nèi)容都是輔助內(nèi)容了(但用處很大,提高效率)※※※※※




session:Session Management for Emacs Ver:session-2.2a

HP:http://emacs-session./


下記轉(zhuǎn)載:

來自http://man./soft/emacszh/x373.html
----------------------
5.2 session
5.2.1 session簡介

session擴(kuò)展包可以使Emacs保存每次編輯的一些歷史記錄, 這樣, 在下次打開Emacs時就可以使用上下鍵在以前輸入的信息中選取, 十分方便實用.
5.2.2 session的使用

session的使用十分簡單, 只需要在~/.emacs中加入如下幾句就可 以了:

(add-to-list 'load-path "<path to session>")
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
----------------------

來自http://www./pc/pccon.php?id=6063&nid=143960
----------------------
;;記錄所有操作
(require 'session)
(add-hook 'after-init-hook 'session-initialize)

;;記錄和恢復(fù)屏幕
(load "desktop") 
(desktop-load-default) 
(desktop-read)
;;desktop自動存盤模式
,23需要加
(desktop-save-mode 1)
----------------------

在GNU Emacs的Manual中有詳細(xì)的說明。
找找吧。google下"Emacs session"就有。



注:在使用session的時候,每次啟動都有個提示信息,需要按'y'后,完成啟動。
---------
Please answer y or n. Warning: desktop file appears to be in use by PID ????.
Using it may cause conflicts. Use it anyway? (y or n) "
---------
參考了下記帖子后,解決。
(即去掉(desktop-read)項,我還真說不清這項是干什么用的,沒讀手冊和幫助呀)
https://bugs./ubuntu/+source/emacs-snapshot/+bug/163342

個人.emacs文件中的內(nèi)容:

 

;;;;;;;;;;;session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;??????
;(add-to-list 'load-path "<path to session>")
(require 'session)
(add-hook 'after-init-hook 'session-initialize);啟動時初始化session

;;記錄和恢復(fù)屏幕
(load "desktop") 
(desktop-load-default) 
;(desktop-read)
;;desktop自動存盤模式,23需要加
(desktop-save-mode 1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;







GDB:The GNU Project Debugger  Ver:7.0.1

HP:http://www./software/gdb/

GDB的使用方法就不多說了,網(wǎng)上找找吧。

這里僅介紹他的功能之一:gdb-many-windows

個人.emacs文件中的內(nèi)容:

;##GDB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(global-set-key [(f5)] 'gdb-many-windows);gdb-many-windows快捷鍵[F5]
(setq gdb-use-separate-io-buffer t) ; 不需要"IO buffer"時,則設(shè)為nil
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


--------------
注:裝完GDB 7.0.1 后,GDB不能啟動。
錯誤提示是:
gdb: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

解決方法是(網(wǎng)摘):
在/etc/bashrc 或 ~/.bashrc 或 ~/.bash_profile 等等,位置加入下記:

export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
--------------
(是不是GDB安裝的路徑錯了呢!?)


GDB模式啟動后,下面的6個buffer將被顯示:

+----------------------------------------------------------------------+
| GDB Toolbar |
+-----------------------------------+----------------------------------+
| GUD buffer (I/O of GDB) | Locals buffer |
| | |
| | |
| | |
+-----------------------------------+----------------------------------+
| Source buffer | I/O buffer (of debugged program) |
| | (comint-mode) |
| | |
| | |
| | |
| | |
| | |
| | |
+-----------------------------------+----------------------------------+
| Stack buffer | Breakpoints buffer |
| RET gdb-frames-select | SPC gdb-toggle-breakpoint |
| | RET gdb-goto-breakpoint |
| | D gdb-delete-breakpoint |
+-----------------------------------+----------------------------------+


各buffer的含義如下:

  • GDB Toolbar        - GDB 操作Toolbar
  • GUD buffer         - 執(zhí)行操作的buffer
  • Locals buffer      - 本地變量名和值的表示buffer
  • Source buffer      - 表示sourcecode的buffer
  • IO/ buffer         - 表示程序的輸入輸出的buffer
  • Stack buffer       - 運(yùn)行停止的時候,調(diào)用關(guān)系的表示buffer
  • Breakpoints buffer - breakpoints斷點(diǎn)的表示buffer

buffer崩潰的時候、通過'M-x gdb-restore-windows'返回原狀態(tài)。


gdb-many-windows插圖







其他內(nèi)容:

1.compile
GNU Emacs中有個功能叫compile。
當(dāng)編輯完源代碼后,<M-x>中輸入compile,會跳轉(zhuǎn)執(zhí)行make -k。
我記得 -k 的意思是,在遇見錯誤的時候,不停止,繼續(xù)編譯。之后,會有發(fā)現(xiàn)錯誤的個數(shù)的表示。
通過快捷鍵可直接跳轉(zhuǎn)到每個錯誤的源代碼,方便修正錯誤。

看了《學(xué)習(xí)GNU Emacs》一書之后,就知道了。

個人.emacs文件中的內(nèi)容:

 

;##compile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-key c-mode-base-map [(f9)] 'compile);emacs的compile命令快捷鍵F9
(setq compile-command "make");默認(rèn)的make -k命令,變?yōu)閙ake命令
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



2.buffer切換
當(dāng)打開多個buffer的時候,相互之間切換,不要用'M-x o'了。
這種有序的切換方式,太慢了,影響工作效率。

請使用'shift + 光標(biāo)':就是shift + (↑ ↓ ← →)
.emacs文件中追加

;; move window (Shift + cursor)
(windmove-default-keybindings)
(setq windmove-wrap-around t)

;;;;;;;;





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多