;--------------------------------------------------------------------- ; linkjump ; ; $Modtime: 03/07/29 22:58 $ ; $Revision: 2 $ ; ; Copyright (C) Silent Factory 1994. All rights reserved. ; - Yuiti SHINOZAKI - ;--------------------------------------------------------------------- ; 現在はC言語用のジャンプリスプ ; そのうちいろいろ対応できたらうれしいが・・・ ; 使いやすそうなアーキテクチャ募集 ;--------------------------------------------------------------------- ; 使用方法 ; ; 1.下のようなものを site-lisp.l へ追加する。 ; .xyzzy へ追加したい人はよくわからない。 ; ちなみにバイトコンパイルして動作するかどうかは詳細不明。 ; キーコンフィグはお好きに変更してたもれー ; ; linkjump コマンド ;(load-library "linkjump.l") ; C-F9 で link-jump ;(global-set-key #\C-F9 'display-include-find-file) ;(set-function-bar-label #\C-F9 "LinkJump") ; ; 2.書き込んだあと、%XYZZYHOME%/XYZZZY. ファイルを消して、 ; xyzzy を起動すれば取り込まれるはず ; ;--------------------------------------------------------------------- ;(provide "linkjump") ;(in-package "editor") ;--------------------------------------------------------------------- ; グローバル export ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- ; 各自設定 ;--------------------------------------------------------------------- (defconstant *linkjump-common-path* '( "C:/toolz/Txtedit/xyzzy" "C:/toolz/Txtedit/xyzzy/site-lisp" "C:/toolz/Txtedit/xyzzy/lisp" "C:/Tornado/target/h/dhcp" "C:/Tornado/target/h" "c:/tornado/host/h/wrn/wm/mibcomp" "c:/tornado/host/h/wrn/wm/util/common" "c:/tornado/host/h/wrn/wm/util/port/bsd44" "c:/tornado/host/h/wrn/wm/util/port/cygnusnt" "c:/tornado/host/h/wrn/wm/util/port/msdos" "c:/tornado/host/h/wrn/wm/util/port/solaris" "c:/tornado/host/include" "c:/tornado/host/include/private" "c:/tornado/host/include/win32" "c:/tornado/host/include/win32/rpc" "c:/tornado/host/include/win32/sys" "c:/tornado/host/x86-win32/i386-pc-mingw32/sys-include" "c:/tornado/host/x86-win32/i386-pc-mingw32/sys-include/Windows32" "c:/tornado/host/x86-win32/i386-pc-mingw32/sys-include/sys" "c:/tornado/host/x86-win32/include/g++-2" "c:/tornado/host/x86-win32/include/g++-2/std" "c:/tornado/host/x86-win32/lib/gcc-lib/i386-pc-mingw32/gcc-2.96/include" "c:/tornado/host/x86-win32/lib/gcc-lib/mips-wrs-vxworks/gcc-2.96/include" "c:/tornado/rti/rtilib.4.1h/include/share/rtilib" "c:/tornado/rti/rtilib.4.1h/include/share/rtilibxx" "c:/tornado/rti/rtilib.4.1h/include/vx/rtilib" "c:/tornado/rti/rtilib.4.1h/include/win32/rtilib" )) ;--------------------------------------------------------------------- ; 関数 ;--------------------------------------------------------------------- ; 登録されたパスリストにそのファイルがあるか調べ、 ; あればそのフルパスを返す ; なければnil (defun search-path-list (file path-list) ; Listじゃないなら (if (not (listp path-list)) (progn (if (file-exist-p (merge-pathnames file path-list)) (merge-pathnames file path-list) nil)) ; Listなら (progn (if (file-exist-p (merge-pathnames file (car path-list))) (merge-pathnames file (car path-list)) (if (cdr path-list) (search-path-list file (cdr path-list)) nil))))) ; 定型文字列のとりだし (defun include-file-name () (interactive) (save-excursion (beginning-of-line) (if (re-search-forward "[ \t]*[<\"]\\([^>\"]+\\)[>\"]") (buffer-substring (match-beginning 1) (match-end 1)) nil))) ;--------------------------------------------------------------------- ; #includeファイルを開く ;--------------------------------------------------------------------- (defun display-include-find-file () "#includeファイルを開く" (interactive) ; 探したいファイル名を取得 (let ((file (include-file-name)) ;カーソル位置のモジュールファイル名取得 (dir (if (get-buffer-file-name) ;現在のファイルのあるデレクトリ名取得(ファイル名なければnil) (directory-namestring (get-buffer-file-name)) nil))) ; カレントデレクトリ探す (if (file-exist-p (merge-pathnames file dir)) (display-buffer (find-file-other-window (merge-pathnames file dir))) ; なければcommon探す (if (search-path-list file *linkjump-common-path*) (display-buffer (find-file-other-window (search-path-list file *linkjump-common-path*))) ; あれば表示 ; 無ければメッセージをば (message "~Aが見つかりません" file))))) #| ;--------------------------------------------------------------------- ; 参考資料 ;--------------------------------------------------------------------- ; 別バッファで別ウィンドでファイルを開く (display-buffer (find-file-other-window fullpath-filename)) ; 別バッファでファイルを開く (find-file-other-window "/stb_v1/include/systype.h") ; ファイルが存在するか調べる (file-exist-p "/stb_v1/include/systype.h") ; フルパスファイル名からパス取得 (directory-namestring (get-buffer-file-name)) ; パスとファイル名からフルパスファイル名作成 (merge-pathnames file dir) ; スタブ #include #include "systype.h" |#