;;; skeleton.el --- Lisp language extension for writing statement skeletons -*- coding: utf-8 -*-
-;; Copyright (C) 1993-1996, 2001-2013 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1996, 2001-2014 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <occitan@esperanto.org>
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
;; Keywords: extensions, abbrev, languages, tools
;; This file is part of GNU Emacs.
(signal 'quit 'recursive)
recursive))
-(defun skeleton-newline ()
- (if (or (eq (point) skeleton-point)
- (eq (point) (car skeleton-positions)))
- ;; If point is recorded, avoid `newline' since it may do things like
- ;; strip trailing spaces, and since recorded points are commonly placed
- ;; right after a trailing space, calling `newline' can destroy the
- ;; position and renders the recorded position incorrect.
- (insert "\n")
- (newline)))
(defun skeleton-internal-1 (element &optional literal recursive)
(cond
(let ((pos (if (eq element '>) (point))))
(cond
((and skeleton-regions (eq (nth 1 skeleton-il) '_))
- (or (eolp) (newline))
+ (or (eolp) (insert "\n"))
(if pos (save-excursion (goto-char pos) (indent-according-to-mode)))
(indent-region (line-beginning-position)
(car skeleton-regions) nil))
(if pos (indent-according-to-mode)))
(skeleton-newline-indent-rigidly
(let ((pt (point)))
- (skeleton-newline)
+ (insert "\n")
(indent-to (save-excursion
(goto-char pt)
(if pos (indent-according-to-mode))
(current-indentation)))))
(t (if pos (reindent-then-newline-and-indent)
- (skeleton-newline)
+ (insert "\n")
(indent-according-to-mode))))))
((eq element '>)
(if (and skeleton-regions (eq (nth 1 skeleton-il) '_))
(let* ((mark (and skeleton-autowrap
(or (eq last-command 'mouse-drag-region)
(and transient-mark-mode mark-active))))
- (skeleton-end-hook)
(char last-command-event)
(skeleton (or (assq char skeleton-pair-alist)
(assq char skeleton-pair-default-alist)
(if (not skeleton-pair-on-word) (looking-at "\\w"))
(funcall skeleton-pair-filter-function))))
(self-insert-command (prefix-numeric-value arg))
- (skeleton-insert (cons nil skeleton) (if mark -1))))))
+ ;; Newlines not desirable for inserting pairs. See bug#16138.
+ (let ((skeleton-end-newline nil))
+ (skeleton-insert (cons nil skeleton) (if mark -1)))))))
\f
;; A more serious example can be found in sh-script.el