mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-02-02 20:16:25 +00:00
(expand-map): Don't define SPC.
(expand-template-abbreviation): Function deleted. (expand-try-to-expand): Function deleted. (expand-abbrev-hook): Add a no-self-insert property. (expand-skeleton-end-hook): Use skeleton-position. (expand-add-abbrevs): Doc fix.
This commit is contained in:
parent
e26f93cc0d
commit
55b723320a
104
lisp/expand.el
104
lisp/expand.el
@ -25,20 +25,12 @@
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Purpose of this package:
|
||||
;; 1. Expand abbreviations only when they are at the end of a line and not
|
||||
;; in a comment or in a string.
|
||||
;; 2. Position the cursor after expansion to a place specified by advance.
|
||||
;; 3. Indent the expanded region.
|
||||
;; 4. If a list of points as been provided with the abbreviation definition,
|
||||
;; the functions expand-jump-to-previous-mark and expand-jump-to-next-mark
|
||||
;; moved from mark to mark.
|
||||
;;
|
||||
;; Installation:
|
||||
;; * store this file somewhere in your load-path and byte compile it.
|
||||
;; * put (require 'expand) in your .emacs or in site-start.el or generate
|
||||
;; autoloads.
|
||||
;; * and according to the mode install your expansion table.
|
||||
;; This package defines abbrevs which expand into structured constructs
|
||||
;; for certain languages. The construct is indented for you,
|
||||
;; and contains points for you to ;; fill in other text.
|
||||
|
||||
;; These abbrevs expand only at the end of a line and when not in a comment
|
||||
;; or a string.
|
||||
;;
|
||||
;; Look at the Sample: section for emacs-lisp, perl and c expand lists.
|
||||
;; For example for c-mode, you could declare your abbrev table with :
|
||||
@ -58,7 +50,7 @@
|
||||
;;
|
||||
;; and enter Expand mode with the following hook :
|
||||
;;
|
||||
;; (add-hook 'c-mode-hook (function (lambda()
|
||||
;; (add-hook 'c-mode-hook (function (lambda ()
|
||||
;; (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
|
||||
;; (expand-mode))))
|
||||
;;
|
||||
@ -67,7 +59,7 @@
|
||||
;;
|
||||
;; (add-hook 'expand-mode-load-hook
|
||||
;; (function
|
||||
;; (lambda()
|
||||
;; (lambda ()
|
||||
;; (add-hook 'expand-expand-hook 'indent-according-to-mode)
|
||||
;; (add-hook 'expand-jump-hook 'indent-according-to-mode)
|
||||
;; (define-key expand-map '[(control tab)] 'expand-jump-to-next-mark)
|
||||
@ -88,7 +80,7 @@
|
||||
|
||||
;;; Constants:
|
||||
|
||||
(defconst expand-mode-version "$Id: expand.el,v 1.13 1996/11/23 18:59:53 fred Exp $"
|
||||
(defconst expand-mode-version "$Id: expand.el,v 1.1 1996/12/28 19:41:45 rms Exp rms $"
|
||||
"Version tag for expand.el.")
|
||||
|
||||
(defconst expand-mode-help-address "expand-help@sugix.frmug.org"
|
||||
@ -284,7 +276,7 @@
|
||||
;;; Code:
|
||||
|
||||
;;;###autoload
|
||||
(defun expand-mode(&optional arg)
|
||||
(defun expand-mode (&optional arg)
|
||||
"Toggle Expand mode.
|
||||
With argument ARG, turn Expand mode on if ARG is positive.
|
||||
In Expand mode, inserting an abbreviation at the end of a line
|
||||
@ -300,7 +292,6 @@ causes it to expand and be replaced by its expansion."
|
||||
;;;###autoload
|
||||
(defvar expand-map (make-sparse-keymap)
|
||||
"Key map used in Expand mode.")
|
||||
(define-key expand-map " " 'expand-template-abbreviation)
|
||||
|
||||
(or (assq 'expand-mode minor-mode-alist)
|
||||
(setq minor-mode-alist (cons (list 'expand-mode expand-mode-name)
|
||||
@ -312,22 +303,27 @@ causes it to expand and be replaced by its expansion."
|
||||
|
||||
;;;###autoload
|
||||
(defun expand-add-abbrevs (table abbrevs)
|
||||
"Add a list of abbrev to the table.
|
||||
Each abbrev description entry has the following format :
|
||||
(abbrev expansion arg)
|
||||
where
|
||||
abbrev is the abbreviation to replace.
|
||||
expansion is the replacement string or a function which will make
|
||||
the expansion. For example you could use the DMacros or skeleton packages
|
||||
"Add a list of abbrev to abbrev table TABLE.
|
||||
ABBREVS is a list of abbrev definitions; each abbrev description entry
|
||||
has the form (ABBREV EXPANSION ARG).
|
||||
|
||||
ABBREV is the abbreviation to replace.
|
||||
|
||||
EXPANSION is the replacement string or a function which will make the
|
||||
expansion. For example you, could use the DMacros or skeleton packages
|
||||
to generate such functions.
|
||||
arg is an optional element which can be a number or a list of
|
||||
numbers. If arg is a number, the cursor will be placed at arg chars
|
||||
from the beginning of the expanded text. If expansion is a list of
|
||||
numbers the cursor will be placed according to the first number of the
|
||||
list from the beginning of the expanded text and marks will be placed
|
||||
and you will be able to visit them cyclicaly with the functions
|
||||
expand-jump-to-previous-mark and expand-jump-to-next-mark. If arg is
|
||||
omitted, the cursor will be placed at the end of the expanded text."
|
||||
|
||||
ARG is an optional argument which can be a number or a list of
|
||||
numbers. If ARG is a number, point is placed ARG chars from the
|
||||
beginning of the expanded text.
|
||||
|
||||
If ARG is a list of numbers, point is placed according to the first
|
||||
member of the list, but you can visit the other specified positions
|
||||
cyclicaly with the functions `expand-jump-to-previous-mark' and
|
||||
`expand-jump-to-next-mark'.
|
||||
|
||||
If ARG is omitted, point is placed at the end of the expanded text."
|
||||
|
||||
(if (null abbrevs)
|
||||
table
|
||||
(expand-add-abbrev table (nth 0 (car abbrevs)) (nth 1 (car abbrevs))
|
||||
@ -342,7 +338,7 @@ This variable is local to a buffer.")
|
||||
(make-variable-buffer-local 'expand-pos)
|
||||
|
||||
(defvar expand-index 0
|
||||
"Index of the last marker used in expand-pos.
|
||||
"Index of the last marker used in `expand-pos'.
|
||||
This variable is local to a buffer.")
|
||||
(make-variable-buffer-local 'expand-index)
|
||||
|
||||
@ -376,25 +372,10 @@ This variable is local to a buffer.")
|
||||
)
|
||||
'expand-abbrev-hook)))
|
||||
|
||||
;;;###autoload
|
||||
(defun expand-template-abbreviation(arg)
|
||||
"Do the expansion job if we are at the end of a line or insert space."
|
||||
(interactive "p")
|
||||
(or (expand-try-to-expand)
|
||||
(self-insert-command arg)))
|
||||
|
||||
;; Try to expand an abbrev. On success check if it is an Expand mode abbrev
|
||||
;; else undo the expansion.
|
||||
(defun expand-try-to-expand()
|
||||
(if (not (expand-abbrev))
|
||||
nil
|
||||
(if (not (stringp (symbol-value last-abbrev)))
|
||||
t
|
||||
(unexpand-abbrev)
|
||||
nil)))
|
||||
|
||||
(defun expand-abbrev-hook()
|
||||
"Abbrev hook used to do the expansion job of expand abbrevs. See `expand-add-abbrevs'."
|
||||
(put 'expand-abbrev-hook 'no-self-insert t)
|
||||
(defun expand-abbrev-hook ()
|
||||
"Abbrev hook used to do the expansion job of expand abbrevs.
|
||||
See `expand-add-abbrevs'."
|
||||
;; Expand only at the end of a line if we are near a word that has
|
||||
;; an abbrev built from expand-add-abbrev.
|
||||
(if (and (eolp)
|
||||
@ -423,7 +404,7 @@ This variable is local to a buffer.")
|
||||
t))))
|
||||
)
|
||||
|
||||
(defun expand-do-expansion()
|
||||
(defun expand-do-expansion ()
|
||||
(delete-backward-char (length last-abbrev-text))
|
||||
(let* ((vect (symbol-value last-abbrev))
|
||||
(text (aref vect 0))
|
||||
@ -442,7 +423,7 @@ This variable is local to a buffer.")
|
||||
t)
|
||||
)
|
||||
|
||||
(defun expand-abbrev-from-expand(word)
|
||||
(defun expand-abbrev-from-expand (word)
|
||||
"Test if an abbrev has a hook."
|
||||
(or
|
||||
(and (intern-soft word local-abbrev-table)
|
||||
@ -457,7 +438,7 @@ This variable is local to a buffer.")
|
||||
(backward-word 1)
|
||||
(buffer-substring p (point)))))
|
||||
|
||||
(defun expand-jump-to-previous-mark()
|
||||
(defun expand-jump-to-previous-mark ()
|
||||
"Move the cursor to previous mark created by the expansion."
|
||||
(interactive)
|
||||
(if expand-pos
|
||||
@ -468,7 +449,7 @@ This variable is local to a buffer.")
|
||||
(goto-char (aref expand-pos expand-index))
|
||||
(run-hooks 'expand-jump-hook))))
|
||||
|
||||
(defun expand-jump-to-next-mark()
|
||||
(defun expand-jump-to-next-mark ()
|
||||
"Move the cursor to next mark created by the expansion."
|
||||
(interactive)
|
||||
(if expand-pos
|
||||
@ -556,10 +537,11 @@ This variable is local to a buffer.")
|
||||
v))
|
||||
|
||||
;; integration with skeleton.el
|
||||
;; Used in `skeleton-end-hook' to fetch the positions for @ skeleton tags.
|
||||
;; See `skeleton-insert'.
|
||||
(defun expand-skeleton-end-hook ()
|
||||
"`skeleton-end-hook' to enable expand marks jumps for @ skeleton tags see `skeleton-insert'."
|
||||
(if skeleton-marks
|
||||
(setq expand-list skeleton-marks)))
|
||||
(if skeleton-positions
|
||||
(setq expand-list skeleton-positions)))
|
||||
|
||||
(add-hook 'skeleton-end-hook (function expand-skeleton-end-hook))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user