首页 > 代码库 > emacs quick open and jump file (or buffer) which name is current word

emacs quick open and jump file (or buffer) which name is current word

Sometime, we need to open a file or buffer which name began with current word in emacs.

Here I give the solution as follows.

;; -----------------------------------------------------------------------------
;; quick-file-jump.el
;; Why this module?
;;     Sometimes, we need to open a file or buffer which name 
;;            began with current word in emacs.
;;     Here is the solution.
;;
;; Install.
;;   put this file (quick-file-jump.el) in your load path and
;;   add follow codes into your initial emacs files (.emacs or init.el)
;;   (require ‘quick-file-jump)
;;   (global-set-key (kbd "<M-return>") ‘ab/quick-buffer-jump)
;;
;; Author:
;;   Aborn Jiang (aborn.jiang@foxmail.com)
;;   2014-05-13
;; -----------------------------------------------------------------------------

(provide ‘quick-file-jump)
(defun ab/quick-buffer-jump ()
  "Quickly jump to buffer/file which name is current word"
  (interactive)
  (setq fname (current-word))
  (setq blist (buffer-list))
  (setq status nil)
  (setq switchedbuffer "nil")
  (dolist (value blist)
    (when (and (bufferp value)
               (buffer-file-name value)
               (not status)
               (string-match (concat "^" (regexp-quote fname))
                             (buffer-name value)))
      (progn (switch-to-buffer (buffer-name value))
             (setq status t)
             (setq switchedbuffer (buffer-name value)))
      ))
  (if status                     ;; success search in buffer list.
      (message "skip to %s buffer" switchedbuffer)
    (ab/quick-file-jump)))       ;; find files in current path.

(defun ab/quick-file-jump ()
  "Quickly open and jump file with name begin with current word"
  (interactive)
  (setq fname (current-word))
  (setq switchedfile "nil")
  (setq dflist (directory-files (ab/get-current-path)))
  (dolist (value dflist)
    (when (and (file-regular-p value)
               (string-match 
                (concat "^" (regexp-quote fname)) value))
      (find-file value)
      (setq switchedfile value)
      (setq status t)))
  (if status                     ;; success search in file list
      (message "open and skip to %s file." switchedfile)
    (message "not find file name begin %s" fname)))

(defun ab/get-current-path ()
  "Get the current path"
  (interactive)
  (message (file-name-directory (buffer-file-name))))

;; default global key setting
(global-set-key (kbd "<M-return>") ‘ab/quick-buffer-jump)