]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/ada-mode/gpr-skel.el
Merge commit 'affdc4611d859e6f643e38c2ed9ad83debb92633'
[gnu-emacs-elpa] / packages / ada-mode / gpr-skel.el
old mode 100755 (executable)
new mode 100644 (file)
index 485a097..08a8d6d
@@ -1,6 +1,6 @@
-;;; gpr-skel.el --- an extension to Gpr mode for inserting statement skeletons
+;;; gpr-skel.el --- an extension to Gpr mode for inserting statement skeletons  -*- lexical-binding:t -*-
 
-;; Copyright (C) 2013 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2015 Free Software Foundation, Inc.
 
 ;; Authors: Stephen Leake <stephen_leake@stephe-leake.org>
 
 ;;;;; user variables, example skeletons intended to be overwritten
 
 (defcustom gpr-skel-initial-string "{header}\n{project}"
-  "*String to insert in empty buffer.
+  "String to insert in empty buffer.
 This could end in a token recognized by `gpr-skel-expand'."
   :type 'string
-  :group 'gpr
-  :safe 'stringp)
+  :group 'gpr                           ;FIXME: Unknown!
+  :safe #'stringp)
 
 (define-skeleton gpr-skel-user-restricted
   "Example copyright/license skeleton, with automatic year and owner."
@@ -94,14 +94,14 @@ Each user will probably want to override this."
 
 (define-skeleton gpr-skel-package
   "Insert a package with name from `str'."
-  ()
+  "Package name: "
   "package " str " is\n"
   _
   "end " str ";")
 
 (define-skeleton gpr-skel-project
   "Insert a project with name from `str'."
-  ()
+  "Project name: "
   "project " str " is\n"
   _
   "end " str ";")
@@ -148,7 +148,7 @@ trailing `...' if there are more keys."
   "Expand the token or placeholder before point to a skeleton, as defined by `skeleton-token-alist'.
 A token is a symbol in the current syntax.
 A placeholder is a symbol enclosed in generic comment delimiters.
-If the word before point is not in `gpr-skel-token-alist', assume
+If the word before point is not in `skeleton-token-alist', assume
 it is a name, and use the word before that as the token."
   (interactive "*")
 
@@ -212,17 +212,32 @@ it is a name, and use the word before that as the token."
   (if old
       ;; hippie is asking us to try the "next" completion; we don't have one
       nil
-    (let ((pos (point)))
+    (let ((pos (point))
+         (undo-len (if (sequencep pending-undo-list) (length pending-undo-list) 0)))
       (undo-boundary)
       (condition-case nil
          (progn
            (skeleton-expand)
            t)
-       ('error
-        ;; undo hook action, motion
-        (undo)
+       (error
+        ;; undo hook action if any
+        (unless (= undo-len (if (sequencep pending-undo-list) (length pending-undo-list) 0))
+          (undo))
+
+        ;; undo motion
         (goto-char pos)
         nil)))))
+
+(defun skeleton-next-placeholder ()
+  "Move point forward to start of next placeholder."
+  (interactive)
+  (skip-syntax-forward "^!"))
+
+(defun skeleton-prev-placeholder ()
+  "Move point forward to start of next placeholder."
+  (interactive)
+  (skip-syntax-backward "^!"))
+
 ;; end FIXME:
 
 ;;;;; token alist, setup
@@ -249,8 +264,8 @@ it is a name, and use the word before that as the token."
 (provide 'gpr-skeletons)
 (provide 'gpr-skel)
 
-(setq gpr-expand 'skeleton-expand)
+(setq gpr-expand #'skeleton-expand)
 
-(add-hook 'gpr-mode-hook 'gpr-skel-setup)
+(add-hook 'gpr-mode-hook #'gpr-skel-setup)
 
 ;;; end of file