home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / gnu / emacs / sources / 789 < prev    next >
Encoding:
Text File  |  1992-11-12  |  2.7 KB  |  80 lines

  1. Newsgroups: gnu.emacs.sources
  2. Path: sparky!uunet!convex!darwin.sura.net!zaphod.mps.ohio-state.edu!usc!elroy.jpl.nasa.gov!ames!pacbell.com!iggy.GW.Vitalink.COM!cs.widener.edu!eff!world!barryn
  3. From: barryn@world.std.com (Barry N. Nelson)
  4. Subject: visit the file at point pickf.el
  5. Message-ID: <BARRYN.92Nov12110458@world.std.com>
  6. Sender: barryn@world.std.com (barry n nelson)
  7. Organization: The World
  8. Distribution: gnu
  9. Date: Thu, 12 Nov 1992 16:04:58 GMT
  10. Lines: 68
  11.  
  12. I am not a good lisp programmer. I hope someone will take my ideas,
  13. rewrite the code and incorporate them into the next releases of
  14. appropriate packages.  We use this function whenever we edit C files,
  15. and we want to jump quickly to one of its include files.
  16.  
  17. ;; ============================================
  18. ;; pickf.el - visit the file pointed by the mouse.
  19. ;;
  20. ;; Author: Jamie Tan, General Signal Corp./Drytek
  21. ;; <barryn@world.std.com>
  22. ;;
  23. ;; USAGE: 
  24. ;; Visit a file by placing the mouse at the filename in any
  25. ;; buffer and double clicking the middle button or pressing C-c C-f.
  26. ;; 
  27. ;; You have to set your own search path in the variable 'pickf-path'
  28. ;; If you don't have the imouse package. Remove the first line and the
  29. ;; last line. You can still use the key bindings. 
  30.  
  31. (require 'imouse)
  32.  
  33. (defvar pickf-path
  34.   "pick-file search path")
  35.  
  36. (setq pickf-path '("./" "../" "../../" "/drytek/vw/h/"))
  37.  
  38. (defun pick-file-default ()
  39.   "returns the base file name of the picked file"
  40.   (save-excursion
  41.     (while (looking-at "[0-9A-Za-z_/\.\-]")
  42.       (forward-char 1))
  43.     (setq endpoint (point))
  44.     (if (re-search-backward "[^0-9A-Za-z_/\.\-]" nil t)
  45.     (progn (forward-char 1)
  46.            (buffer-substring (point) endpoint)))))
  47.  
  48. (defun pick-file ()
  49.   "visit the file pointed by the mouse."
  50.   (interactive)
  51.   (setq base-name (pick-file-default))
  52.   (setq path pickf-path)
  53.   (setq found-file nil)
  54.   (while path
  55.     (setq fname (concat (car path) base-name))
  56.     (if (file-attributes (expand-file-name fname))
  57.     (progn
  58.       (setq path nil)
  59.       (setq found-file t))
  60.       (setq path (cdr path))))
  61.   (if found-file
  62.       (find-file (expand-file-name (expand-file-name fname)))
  63.     (message (concat base-name " not found"))))
  64.  
  65. (global-set-key "\C-c\C-f" 'pick-file)
  66.  
  67. (defun extend-mouse-drag-or-pickf (mdata)
  68.   "Set point at mouse.  With double-click, call pick-file,
  69. with one click call extend-mouse-drag."
  70.   (case mouse::clicks
  71.     (1 (extend-mouse-drag mdata))
  72.     (2 (pick-file))))
  73.  
  74. (global-set-mouse mouse-modify mouse-down 'extend-mouse-drag-or-pickf)
  75. -- 
  76. Barry N. Nelson             --------- __o       __o       __o       __o
  77. barryn@world.std.com        ------- _`\<,_    _`\<,_    _`\<,_    _`\<,_
  78. Drytek (508) 657-3933 X4317 ------ (*)/ (*)  (*)/ (*)  (*)/ (*)  (*)/ (*)
  79. A Unit of General Signal    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  80.