Function: electric-pascal-terminate-line
electric-pascal-terminate-line is an interactive and byte-compiled
function defined in pascal.el.gz.
Signature
(electric-pascal-terminate-line)
Documentation
Terminate line and indent next line.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/pascal.el.gz
;;;
;;; Electric functions
;;;
(defun electric-pascal-terminate-line ()
"Terminate line and indent next line."
(interactive)
;; First, check if current line should be indented
(save-excursion
(beginning-of-line)
(skip-chars-forward " \t")
(if (looking-at pascal-autoindent-lines-re)
(pascal-indent-line)))
(delete-horizontal-space) ; Removes trailing whitespaces
(newline)
;; Indent next line
(pascal-indent-line)
;; Maybe we should set some endcomments
(if pascal-auto-endcomments
(pascal-set-auto-comments))
;; Check if we shall indent inside comment
(let ((setstar nil))
(save-excursion
(forward-line -1)
(skip-chars-forward " \t")
(cond ((looking-at "\\*[ \t]+)")
;; Delete region between `*' and `)' if there is only whitespaces.
(forward-char 1)
(delete-horizontal-space))
((and (looking-at "(\\*\\|\\*[^)]")
(not (save-excursion (search-forward "*)" (point-at-eol) t))))
(setq setstar t))))
;; If last line was a star comment line then this one shall be too.
(if (null setstar)
(pascal-indent-line)
(insert "* "))))