;;; hippie-exp.el --- expand text trying various ways to find its expansion.
+;; Copyright (C) 1992 Free Software Foundation, Inc.
+
;; Author: Anders Holst <aho@sans.kth.se>
;; Last change: 6 August 1995
;; Version: 1.4
;; Keywords: abbrev
-;; Copyright (C) 1992 Free Software Foundation, Inc.
-;;
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
-;;
+
;; `hippie-expand' is a single function for a lot of different kinds
;; of completions and expansions. Called repeatedly it tries all
;; possible completions in succession.
;;; Code:
+(defgroup hippie-expand nil
+ "Expand text trying various ways to find its expansion."
+ :group 'abbrev)
+
(defvar he-num -1)
(defvar he-string-beg (make-marker))
or insert functions in this list.")
;;;###autoload
-(defvar hippie-expand-verbose t
- "*Non-nil makes `hippie-expand' output which function it is trying.")
+(defcustom hippie-expand-verbose t
+ "*Non-nil makes `hippie-expand' output which function it is trying."
+ :type 'boolean
+ :group 'hippie-expand)
;;;###autoload
-(defvar hippie-expand-max-buffers ()
+(defcustom hippie-expand-max-buffers ()
"*The maximum number of buffers (apart from the current) searched.
-If nil, all buffers are searched.")
+If nil, all buffers are searched."
+ :type '(choice (const :tag "All" nil)
+ integer)
+ :group 'hippie-expand)
;;;###autoload
-(defvar hippie-expand-ignore-buffers '("^ \\*.*\\*$" dired-mode)
+(defcustom hippie-expand-ignore-buffers '("^ \\*.*\\*$" dired-mode)
"*A list specifying which buffers not to search (if not current).
Can contain both regexps matching buffer names (as strings) and major modes
-\(as atoms)")
+\(as atoms)"
+ :type '(repeat (choice regexp (symbol :tag "Major Mode")))
+ :group 'hippie-expand)
;;;###autoload
(defun hippie-expand (arg)
(ding))
(if (and hippie-expand-verbose
(not (window-minibuffer-p (selected-window))))
- (message (concat "Using "
- (prin1-to-string (nth he-num
- hippie-expand-try-functions-list)))))))
+ (message "Using %s"
+ (prin1-to-string (nth he-num
+ hippie-expand-try-functions-list))))))
(if (and (>= he-num 0)
(eq (marker-buffer he-string-beg) (current-buffer)))
(progn
(defvar he-file-name-chars
(cond ((memq system-type '(vax-vms axp-vms))
"-a-zA-Z0-9_/.,~^#$+=:\\[\\]")
- ((memq system-type '(ms-dos ms-windows))
+ ((memq system-type '(ms-dos windows-nt))
"-a-zA-Z0-9_/.,~^#$+=:\\\\")
(t ;; More strange file formats ?
"-a-zA-Z0-9_/.,~^#$+="))
(if (memq system-type '(vax-vms axp-vms))
(or (file-directory-p file)
(file-directory-p (concat file "[000000]")))
- (file-directory-p dir-part)))
+ (file-directory-p file)))
(defun he-concat-directory-file-name (dir-part name-part)
"Try to slam together two parts of a file specification, system dependently."
- (cond ((memq system-type '(axp-vms vax-vms))
+ (cond ((null dir-part) name-part)
+ ((memq system-type '(axp-vms vax-vms))
(if (and (string= (substring dir-part -1) "]")
(string= (substring name-part 0 2) "[."))
(concat (substring dir-part 0 -1) (substring name-part 1))
(concat dir-part name-part)))
- ((memq system-type '(ms-dos ms-windows))
+ ((memq system-type '(ms-dos w32))
(if (and (string-match "\\\\" dir-part)
(not (string-match "/" dir-part))
(= (aref name-part (1- (length name-part))) ?/))