Function: c-electric-pound
c-electric-pound is an interactive and byte-compiled function defined
in cc-cmds.el.gz.
Signature
(c-electric-pound ARG)
Documentation
Insert a "#".
If c-electric-flag is set, handle it specially according to the variable
c-electric-pound-behavior. If a numeric ARG is supplied, or if point is
inside a literal or a macro, nothing special happens.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-cmds.el.gz
(defun c-electric-pound (arg)
"Insert a \"#\".
If `c-electric-flag' is set, handle it specially according to the variable
`c-electric-pound-behavior'. If a numeric ARG is supplied, or if point is
inside a literal or a macro, nothing special happens."
(interactive "*P")
(c-with-string-fences
(if (c-save-buffer-state ()
(or arg
(not c-electric-flag)
(not (memq 'alignleft c-electric-pound-behavior))
(save-excursion
(skip-chars-backward " \t")
(not (bolp)))
(save-excursion
(and (= (forward-line -1) 0)
(progn (end-of-line)
(eq (char-before) ?\\))))
(c-in-literal)))
;; do nothing special
(let (post-self-insert-hook) ; Disable random functionality.
(self-insert-command (prefix-numeric-value arg)))
;; place the pound character at the left edge
(let ((pos (- (point-max) (point)))
(bolp (bolp)))
(beginning-of-line)
(delete-horizontal-space)
(insert (c-last-command-char))
(and (not bolp)
(goto-char (- (point-max) pos))))))
(c--call-post-self-insert-hook-more-safely))