Function: cperl-electric-keyword
cperl-electric-keyword is a byte-compiled function defined in
cperl-mode.el.gz.
Signature
(cperl-electric-keyword)
Documentation
Insert a construction appropriate after a keyword.
Help message may be switched off by setting cperl-message-electric-keyword
to nil.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cperl-mode.el.gz
(defun cperl-electric-keyword ()
"Insert a construction appropriate after a keyword.
Help message may be switched off by setting `cperl-message-electric-keyword'
to nil."
(let ((beg (point-at-bol))
(dollar (and (eq last-command-event ?$)
(eq this-command 'self-insert-command)))
(delete (and (memq last-command-event '(?\s ?\n ?\t ?\f))
(memq this-command '(self-insert-command newline))))
my do)
(and (save-excursion
(condition-case nil
(progn
(backward-sexp 1)
(setq do (looking-at "do\\>")))
(error nil))
(cperl-after-expr-p nil "{;:"))
(save-excursion
(not
(re-search-backward
"[#\"'`]\\|\\<q\\(\\|[wqxr]\\)\\>"
beg t)))
(save-excursion (or (not (re-search-backward "^=" nil t))
(or
(looking-at "=cut")
(looking-at "=end")
(and cperl-use-syntax-table-text-property
(not (eq (get-text-property (point)
'syntax-type)
'pod))))))
(save-excursion (forward-sexp -1)
(not (memq (following-char) (append "$@%&*" nil))))
(progn
(and (eq (preceding-char) ?y)
(progn ; "foreachmy"
(forward-char -2)
(insert " ")
(forward-char 2)
(setq my t dollar t
delete
(memq this-command '(self-insert-command newline)))))
(and dollar (insert " $"))
(cperl-indent-line)
;;(insert " () {\n}")
(cond
(cperl-extra-newline-before-brace
(insert (if do "\n" " ()\n"))
(insert "{")
(cperl-indent-line)
(insert "\n")
(cperl-indent-line)
(insert "\n}")
(and do (insert " while ();")))
(t
(insert (if do " {\n} while ();" " () {\n}"))))
(or (looking-at "[ \t]\\|$") (insert " "))
(cperl-indent-line)
(if dollar (progn (search-backward "$")
(if my
(forward-char 1)
(delete-char 1)))
(search-backward ")")
(if (eq last-command-event ?\()
(progn ; Avoid "if (())"
(delete-char -1)
(delete-char 1))))
(if delete
(cperl-putback-char cperl-del-back-ch))
(if cperl-message-electric-keyword
(message "Precede char by C-q to avoid expansion"))))))