快速include一个系统头文件
作者: 王纯业
输入inc, 然后按空格, 会提示输入文件名称.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ;; 安装 abbrev (mapc (lambda (mode) (define-abbrev-table mode '( ("inc" "" skeleton-include 1) ))) '(c-mode-abbrev-table c++-mode-abbrev-table)) ;; 输入 inc , 可以自动提示输入文件名称,可以自动补全. (define-skeleton skeleton-include "generate include<>" "" > "#include <" (completing-read "Include File:" (mapcar #'(lambda (f) (list f )) (apply 'append (mapcar #'(lambda (dir) (directory-files dir)) (list "/usr/include" "/usr/local/include" "/usr/include/g++-3"))))) ">") |
下面的这段代码的也许更加有用,当你发呆的时间超过 4 秒以上,
头文件的文件名称自动加一个下划线,在上面按回车,可以打开这个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | (defvar wcy-c/c++-hightligh-included-files-key-map nil) (if wcy-c/c++-hightligh-included-files-key-map nil (setq wcy-c/c++-hightligh-included-files-key-map (make-sparse-keymap)) (define-key wcy-c/c++-hightligh-included-files-key-map (kbd "<RET>") 'find-file-at-point)) (defun wcy-c/c++-hightligh-included-files () (interactive) (when (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode)) (save-excursion (goto-char (point-min)) ;; remove all overlay first (mapc (lambda (ov) (if (overlay-get ov 'wcy-c/c++-hightligh-included-files) (delete-overlay ov))) (overlays-in (point-min) (point-max))) (while (re-search-forward "^#include[ \t]+[\"<]\\(.*\\)[\">]" nil t nil) (let* ((begin (match-beginning 1)) (end (match-end 1)) (ov (make-overlay begin end))) (overlay-put ov 'wcy-c/c++-hightligh-included-files t) (overlay-put ov 'keymap wcy-c/c++-hightligh-included-files-key-map) (overlay-put ov 'face 'underline)))))) ;; 这不是一个好办法,也可以把它加载到 c-mode-hook or c++-mode-hook 中。 (setq wcy-c/c++-hightligh-included-files-timer (run-with-idle-timer 4 t 'wcy-c/c++-hightligh-included-files)) |

GD Star Rating
loading...
标签:ann, ann77, C/C++, face, keymap, lambda, 王纯业, 补全, 配色, 配色loading...
最新评论