;;;;; user variables, example skeletons intended to be overwritten
-(defcustom ada-skel-initial-string "{header}"
+(defcustom ada-skel-initial-string
+ "{header}
+-- Emacs note: Type C-c C-e with point after the above placeholder
+--
+-- This text was inserted by ada-skel-initial-string;
+-- M-x customize-variable <RET> ada-skel-initial-string <RET>
+-- (info \"(ada-mode)Statement skeletons\")"
"*String to insert in empty buffer.
This could end in a token recognized by `ada-skel-expand'."
:type 'string
)
+;; override ada-mode 4.01 autoloaded functions
+(define-obsolete-function-alias 'ada-header 'ada-skel-header "24.4"
+ "Insert a descriptive header at the top of the file.")
+
;;;;; Ada skeletons (alphabetical)
(define-skeleton ada-skel-accept
(define-skeleton ada-skel-for
"Insert a for loop statement with an optional name (from `str')."
()
- str & ":\n"
+ str & " :\n"
"for " _ " loop\n"
"end loop " str | -1 ";")
"is\n"
"begin\n"
_
- "end " str ";")
+ "end " str ";" >)
(define-skeleton ada-skel-function-spec
"Insert a function type specification with name from `str'."
(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 (eq 't pending-undo-list)
+ 0
+ (length pending-undo-list))))
(undo-boundary)
(condition-case nil
(progn
(ada-skel-expand)
t)
- ('error
- ;; undo ada-case-adjust, motion
- (undo)
+ (error
+ ;; undo hook action if any
+ (unless (or (eq 't pending-undo-list)
+ (= undo-len (length pending-undo-list)))
+ (undo))
+
+ ;; undo motion
(goto-char pos)
nil)))))
+(defun ada-skel-next-placeholder ()
+ "Move point to after next placeholder."
+ (skip-syntax-forward "^!")
+ (skip-syntax-forward "w!"))
+
+(defun ada-skel-prev-placeholder ()
+ "Move point to after previous placeholder."
+ (skip-syntax-backward "^!"))
+
(defun ada-skel-setup ()
- "Setup a buffer ada-skel."
+ "Setup a buffer for ada-skel."
(add-hook 'skeleton-end-hook 'ada-indent-statement nil t)
(when (and ada-skel-initial-string
(= (buffer-size) 0))
(provide 'ada-skel)
(setq ada-expand 'ada-skel-expand)
+(setq ada-next-placeholder 'ada-skel-next-placeholder)
+(setq ada-prev-placeholder 'ada-skel-prev-placeholder)
(add-hook 'ada-mode-hook 'ada-skel-setup)