changeset 111868:98f94116b751

* lisp/textmodes/texinfo.el (texinfo-mode-map): Bind texinfo-insert-@end. (texinfo-mode): Don't disable adaptive-fill-mode. (texinfo-insert-block): Adjust cursor placement for blocks with arg. (texinfo-insert-@end, texinfo-insert-braces, texinfo-insert-@code) (texinfo-insert-@dfn, texinfo-insert-@email, texinfo-insert-@emph) (texinfo-insert-@example, texinfo-insert-@file, texinfo-insert-@item) (texinfo-insert-@kbd, texinfo-insert-@node, texinfo-insert-@noindent) (texinfo-insert-@quotation, texinfo-insert-@samp) (texinfo-insert-@strong, texinfo-insert-@table, texinfo-insert-@var) (texinfo-insert-@uref): Use define-skeleton. (texinfo-insert-@-with-arg): Delete.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 10 Dec 2010 09:10:08 -0500
parents 930d5c8afda2
children 2b8673bc05c8
files lisp/ChangeLog lisp/textmodes/texinfo.el
diffstat 2 files changed, 82 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Dec 10 13:56:44 2010 +0200
+++ b/lisp/ChangeLog	Fri Dec 10 09:10:08 2010 -0500
@@ -1,3 +1,17 @@
+2010-12-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* textmodes/texinfo.el (texinfo-mode-map): Bind texinfo-insert-@end.
+	(texinfo-mode): Don't disable adaptive-fill-mode.
+	(texinfo-insert-block): Adjust cursor placement for blocks with arg.
+	(texinfo-insert-@end, texinfo-insert-braces, texinfo-insert-@code)
+	(texinfo-insert-@dfn, texinfo-insert-@email, texinfo-insert-@emph)
+	(texinfo-insert-@example, texinfo-insert-@file, texinfo-insert-@item)
+	(texinfo-insert-@kbd, texinfo-insert-@node, texinfo-insert-@noindent)
+	(texinfo-insert-@quotation, texinfo-insert-@samp)
+	(texinfo-insert-@strong, texinfo-insert-@table, texinfo-insert-@var)
+	(texinfo-insert-@uref): Use define-skeleton.
+	(texinfo-insert-@-with-arg): Delete.
+
 2010-12-10  Eli Zaretskii  <eliz@gnu.org>
 
 	* arc-mode.el (archive-zip-extract): If w32-quote-process-args is
@@ -16,8 +30,8 @@
 
 	* menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p):
 	New functions.
-	(menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>: Use
-	them instead of `nil' and `>', respectively.
+	(menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>:
+	Use them instead of `nil' and `>', respectively.
 	(menu-bar-showhide-tool-bar-menu): Use menu-bar-frame-for-menubar
 	instead of `nil'.
 	(toggle-menu-bar-mode-from-frame): Use menu-bar-frame-for-menubar
--- a/lisp/textmodes/texinfo.el	Fri Dec 10 13:56:44 2010 +0200
+++ b/lisp/textmodes/texinfo.el	Fri Dec 10 09:10:08 2010 -0500
@@ -443,7 +443,9 @@
     (define-key map "\C-c\C-s"     'texinfo-show-structure)
 
     (define-key map "\C-c}"          'up-list)
+    ;; FIXME: This is often used for "close block" aka texinfo-insert-@end.
     (define-key map "\C-c]"          'up-list)
+    (define-key map "\C-c/"	     'texinfo-insert-@end)
     (define-key map "\C-c{"		'texinfo-insert-braces)
 
     ;; bindings for inserting strings
@@ -583,11 +585,8 @@
 	(concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-separate))
   (make-local-variable 'paragraph-start)
   (setq paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-start))
-  (make-local-variable 'sentence-end-base)
-  (setq sentence-end-base
+  (set (make-local-variable 'sentence-end-base)
 	"\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'”)}]*")
-  (make-local-variable 'adaptive-fill-mode)
-  (setq adaptive-fill-mode nil)
   (make-local-variable 'fill-column)
   (setq fill-column 70)
   (make-local-variable 'comment-start)
@@ -646,7 +645,13 @@
 	(completing-read (format "Block name [%s]: " texinfo-block-default)
 			 texinfo-environments
 			 nil nil nil nil texinfo-block-default))
-  \n "@" str \n _ \n "@end " str \n)
+  \n "@" str
+  ;; Blocks that take parameters: all the def* blocks take parameters,
+  ;;  plus a few others.
+  (if (or (string-match "\\`def" str)
+          (member str '("table" "ftable" "vtable")))
+      '(nil " " -))
+  \n _ \n "@end " str \n)
 
 (defun texinfo-inside-macro-p (macro &optional bound)
   "Non-nil if inside a macro matching the regexp MACRO."
@@ -717,163 +722,131 @@
 		(not (looking-at "@end"))))
     (texinfo-next-unmatched-end)))
 
-(defun texinfo-insert-@end ()
+(define-skeleton texinfo-insert-@end
   "Insert the matching `@end' for the last Texinfo command that needs one."
-  (interactive)
-  (let ((string
 	 (ignore-errors
 	   (save-excursion
+      (backward-word 1)
 	     (texinfo-last-unended-begin)
-	     (match-string 1)))))
-    (insert "@end ")
-    (if string (insert string "\n"))))
-
-;; The following insert commands accept a prefix arg N, which is the
-;; number of words (actually s-exprs) that should be surrounded by
-;; braces.  Thus you can first paste a variable name into a .texinfo
-;; buffer, then say C-u 1 C-c C-c v at the beginning of the just
-;; pasted variable name to put @var{...} *around* the variable name.
-;; Operate on previous word or words with negative arg.
+      (or (match-string 1) '-)))
+  \n "@end " str \n)
 
-;; These commands use texinfo-insert-@-with-arg
-(defun texinfo-insert-@-with-arg (string &optional arg)
-  (if arg
-      (progn
-        (setq arg (prefix-numeric-value arg))
-        (if (< arg 0)
-            (progn
-              (skip-chars-backward " \t\n\r\f")
-              (save-excursion
-                (forward-sexp arg)
-                (insert "@" string "{"))
-              (insert "}"))
-          (skip-chars-forward " \t\n\r\f")
-          (insert "@" string "{")
-          (forward-sexp arg)
-          (insert "}")))
-    (insert "@" string "{}")
-    (backward-char)))
-
-(defun texinfo-insert-braces ()
+(define-skeleton texinfo-insert-braces
   "Make a pair of braces and be poised to type inside of them.
 Use \\[up-list] to move forward out of the braces."
-  (interactive)
-  (insert "{}")
-  (backward-char))
+  nil
+  "{" _ "}")
 
-(defun texinfo-insert-@code (&optional arg)
+(define-skeleton texinfo-insert-@code
   "Insert a `@code{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "code" arg))
+  nil
+  "@code{" _ "}")
 
-(defun texinfo-insert-@dfn (&optional arg)
+(define-skeleton texinfo-insert-@dfn
   "Insert a `@dfn{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "dfn" arg))
+  nil
+  "@dfn{" _ "}")
 
-(defun texinfo-insert-@email (&optional arg)
+(define-skeleton texinfo-insert-@email
   "Insert a `@email{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "email" arg))
+  nil
+  "@email{" _ "}")
 
-(defun texinfo-insert-@emph (&optional arg)
+(define-skeleton texinfo-insert-@emph
   "Insert a `@emph{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "emph" arg))
+  nil
+  "@emph{" _ "}")
 
-(defun texinfo-insert-@example ()
+(define-skeleton texinfo-insert-@example
   "Insert the string `@example' in a Texinfo buffer."
-  (interactive)
-  (insert "@example\n"))
+  nil
+  \n "@example" \n)
 
-(defun texinfo-insert-@file (&optional arg)
+(define-skeleton texinfo-insert-@file
   "Insert a `@file{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "file" arg))
+  nil
+  "@file{" _ "}")
 
-(defun texinfo-insert-@item ()
+(define-skeleton texinfo-insert-@item
   "Insert the string `@item' in a Texinfo buffer.
 If in a table defined by @table, follow said string with a space.
 Otherwise, follow with a newline."
-  (interactive)
-  (insert "@item"
+  nil
+  \n "@item"
 	  (if (equal (ignore-errors
 		      (save-excursion
 			(texinfo-last-unended-begin)
 			(match-string 1)))
 		     "table")
-	      ?\s
-	    ?\n)))
+      " " '\n)
+  _ \n)
 
-(defun texinfo-insert-@kbd (&optional arg)
+(define-skeleton texinfo-insert-@kbd
   "Insert a `@kbd{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "kbd" arg))
+  nil
+  "@kbd{" _ "}")
 
-(defun texinfo-insert-@node ()
+(define-skeleton texinfo-insert-@node
   "Insert the string `@node' in a Texinfo buffer.
 Insert a comment on the following line indicating the order of
 arguments to @node.  Insert a carriage return after the comment line.
 Leave point after `@node'."
-  (interactive)
-  (insert "@node \n@comment  node-name,  next,  previous,  up\n")
-  (forward-line -2)
-  (forward-char 6))
+  nil
+  \n "@node " _ \n)
 
-(defun texinfo-insert-@noindent ()
+(define-skeleton texinfo-insert-@noindent
   "Insert the string `@noindent' in a Texinfo buffer."
-  (interactive)
-  (insert "@noindent\n"))
+  nil
+  \n "@noindent" \n)
 
-(defun texinfo-insert-@quotation ()
+(define-skeleton texinfo-insert-@quotation
   "Insert the string `@quotation' in a Texinfo buffer."
-  (interactive)
-  (insert "@quotation\n"))
+  \n "@quotation" \n)
 
-(defun texinfo-insert-@samp (&optional arg)
+(define-skeleton texinfo-insert-@samp
   "Insert a `@samp{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "samp" arg))
+  nil
+  "@samp{" _ "}")
 
-(defun texinfo-insert-@strong (&optional arg)
+(define-skeleton texinfo-insert-@strong
   "Insert a `@strong{...}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "strong" arg))
+  nil
+  "@strong{" _ "}")
 
-(defun texinfo-insert-@table ()
+(define-skeleton texinfo-insert-@table
   "Insert the string `@table' in a Texinfo buffer."
-  (interactive)
-  (insert "@table "))
+  nil
+  \n "@table " _ \n)
 
-(defun texinfo-insert-@var (&optional arg)
+(define-skeleton texinfo-insert-@var
   "Insert a `@var{}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "var" arg))
+  nil
+  "@var{" _ "}")
 
-(defun texinfo-insert-@uref (&optional arg)
+(define-skeleton texinfo-insert-@uref
   "Insert a `@uref{}' command in a Texinfo buffer.
 A numeric argument says how many words the braces should surround.
 The default is not to surround any existing words with the braces."
-  (interactive "P")
-  (texinfo-insert-@-with-arg "uref" arg))
+  nil
+  "@uref{" _ "}")
 (defalias 'texinfo-insert-@url 'texinfo-insert-@uref)
 
 ;;; Texinfo file structure