google code-beautifer

星期四, 6月 08, 2017

emacs 裡要快速跳躍記憶文件位置

編輯超過一千行的程式,要從不管是開頭或結尾跳到中間都會蠻痛苦的。當然emacs 也可以下指令一次跳好幾頁,但是要是不知道正確的數量一次到位,也是很麻煩,這時候需要有個好方法來快速跳躍:比如說在事情沒做完的位置先留個書籤,就可以先跑到其他的地方編輯(比如說回頭去修改定義,或前一次叫用的地方改個幾行),改完再按一個鍵跑回來
理論上要是cedet 可以辨識你的程式語言語法的話,應該是不太需要用記憶程式位置,不過有時候就是得在一些cedet 不是支援很好的文件裡跳來跳去作編輯,這時記憶程式位置就很有用

emacs 裡要記憶位置可以用register 或bookmark來完成:
register有個缺點: 一旦關掉emacs 這些記憶就被清掉,而且位置標籤名只能用單一字母。但是對於臨時要用的再方便不過,但是用 bookmark的話位置標籤名會一直記住,且位置標籤名可以取一個很長的名稱,比較不常用的位置這樣記會比較適合
用bookmark 的話,假如對某個檔是第一次叫用,預設的標籤名就是目前檔名,假如是針對多個檔案這當然是方便,但是對在同一個檔案裡跳來跳去就不便。

視這個變數對於修改的本質,我自己是這樣工作:假如是臨時要在一個檔案跳來跳去,而且一旦改完這個位置就不須需要記憶的,我用register 來處裡,位置名就取1, 2, 3, 4  ....
但是對於久久用一下的就用bookmark,當然bookmark 也是可以用單一字母來當標籤名
所以我通常都用bookmark 來處理,就像前面說的:短期記憶就用1 2 3 4 命名,需要長期記憶的再取個有意義方便回想的名稱
我有在.emacs設定下綁定兩個熱鍵F9跟 F12 來當設置書籤 跟跳到書籤去
(global-set-key (kbd "") 'bookmark-set)
(global-set-key (kbd "") 'bookmark-jump)

此外我有搭配hide-show mode ,先把目前不會去處理的一些副程式的細節收藏起來,真的要用時再打開。這樣編輯處理大程式就更清爽靈活

星期三, 6月 07, 2017

用 windows版emacs輸入中文

忘了是 23 版還是24 版之後的emacs 加入了unicode 支援,所以在新的winodws 上輸入中文還是改用unicode 編碼吧

得先把這兩行加到.emacs
(require 'unicode-fonts)
(unicode-fonts-setup)

在windows 下.emacs 他的路徑要放在\User\使用者名稱\AppData\Roaming\之下 (怪異的是我照新的方式在.emacs.d下設置init.el 沒用 )

中文輸入法我目前是用pime ,不過pime 1.10 或0.16對emacs 都有個問題:在按enter 之前,選字buffer 不會出現,但是按enter後選字buffer 的內容會正確送到應用程式裡
可是在其他編輯程式如emeditor下  pime都沒有問題

然後目前cygwin mate desktop下我沒有辦法輸入中文,可能跟它預設的ibus 輸入有關,
cygwin 版emacs其實可以用symbolic link 跟windows版emacs共用設定檔,但是額外安裝套件跟路徑得自己搞定

星期三, 5月 03, 2017

randr :多螢幕的空間配置變換

多螢幕的空間配置是門學問,因為螢幕通常是寬大於高,比較直覺的作法是把次螢幕放在主螢幕的上方,所以不用時時都頭抬的高高,有需要才抬頭,以gnome desktop 而言,他會把面板顯示鎖定放在主螢幕頂端,但是桌面的捷徑因為跟著桌面的左上角起開始排列,他們會跑到次螢幕去,

這用法一般工作還好但是有個問題,有些程式好像水土不服(比如說pluma 編輯器):除非你要是在次螢幕下進行使用pluma開啟檔案選單,不然的話,會發現pluma在主螢幕下進行的檔案開啟選單行為會很怪異,(基本上要是選單很長的話,他不會往下列而是往上列,但是因為Gnome shell 的面板taskbar 放在主螢幕頂端,他就認為到頂了就切掉而不會去利用主螢幕面板顯示更上方的次螢幕,所以明明螢幕空間很多,選單卻擠在一起)不過不是所有程式都是這樣,我認為是pluma 沒設計的很周全,不過gedit 被改到我很不順手,三不五時除了emacs 外我還是得用pluma寫東西。所以我是這樣設定:

一般需要專心debug 很長的程式之類工作而不需做檔案開啟之時,把雙螢幕切到上下並列的配置,不然才就是左右(而且以左邊的主螢幕為主)
要切換可以用Arandr ,用他的GUI寫兩個設置檔:一個是上下並列的配置,一個是左右並列的配置。這暫時可以解決,但還不夠好:因為每次切換要先開Arandr ,然後開啟設置檔,再點執行....需要很多鍵很慢。理論上Arandr 可以配置綁定某一快捷鍵給某一螢幕設置檔,但是0.17 版只支援metacity ,所以我在改成用mutter 的gnome shell 上按了設置的快捷鍵是沒有用的。
所以後來我寫了兩個執行檔,內容分別是
xrandr --output DVI-I-3 --right-of DVI-I-2
xrandr --output DVI-I-3 --above DVI-I-2
然後寫了兩個gnome 的桌面捷徑去分別執行。想知道螢幕的代碼可以用不加任何參數去執行 xrandr  比如說這是我在某電腦的執行結果,可以看到 4 個介面 DVI-I-XXX 只執行了兩個,如何配置就看個人
$ xrandr
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DVI-I-2 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
   1680x1050     59.95*+
   1440x900      74.98    59.89 
   1360x765      60.00 
   1280x1024     75.02    60.02 
   1280x960      60.00 
   1280x720      60.00 
   1152x864      75.00 
   1024x768      75.03    70.07    60.00 
   800x600       75.00    72.19    60.32    56.25 
   640x480       75.00    72.81    59.94 
DVI-I-3 connected 1440x900+1680+0 (normal left inverted right x axis y axis) 408mm x 255mm
   1440x900      59.89*+  74.98 
   1280x1024     75.02    60.02 
   1152x864      75.00 
   1024x768      75.03    70.07    60.00 
   800x600       75.00    72.19    60.32    56.25 
   640x480       75.00    72.81    59.94 

在從睡眠模式醒來後,或是鎖定螢幕一陣子後,有時候會發生螢幕的桌布花屏,偏移或解析度錯誤的情形,一個方式是用alt -F2 去強迫重畫桌面,重新啟動rAndr 也是可以解決
   
一些設置可以去參考
http://www.thinkwiki.org/wiki/Xorg_RandR_1.2

星期六, 4月 22, 2017

把(emacs下的)程式輸出成 pdf 檔

有時候出門不方便帶筆電,但是得用手機或平板看之前寫的程式,能方便的轉PDF 就很重要,因為現在的機子很多不能跑Linux ,看大程式檔這種的事反而變得很麻煩。  

我因為是在Linux下工作,所是用這個方案。https://genomeek.wordpress.com/2013/03/08/emarch-2-create-a-pdf-with-highlighted-code-source/
他會在你原檔案所在的目錄下產生一個XXX.pdf 的檔案,XXX 就是你的原檔名,比如說hello.c 就會產生hello.c.pdf
假如你有文字有做syntext highlight 這些顏色也會保留。預設值我覺得應付一般狀況還好,不過有時候可能會因個人所好想做一些調整,比如說轉成橫式輸出,或是把每頁的檔頭縮到最小,這就得在postsciprt 輸出時調參數,這以後再談。

要是在windows 下但又沒又裝cygwin 就比較麻煩,這篇的作法是靠GhostView,但安裝也算容易
https://www.emacswiki.org/emacs/PostScriptToPDF

星期一, 3月 27, 2017

FreeCAD 裏用尺測量stl 檔

FreeCAD 其實蠻強大的,只是有很多事情除了軟體操作外,是得用上CAD 的知識才能順利完成,所以沒有CAD 知識背景的新手上路很辛苦,比如說明明畫面就有測量尺可用,可是打開stl 檔點半天就是沒有辦法測量。
後來才知道得先把mesh 資料產生相對應的shape ,這樣有點線就可以選兩點做測量。用法是:
主選單-> Part-> Create shape from mesh
這時得等一下讓電腦算,算完原圖會出現一大堆線,這就可以開始用尺測量