Introduce a function to CC Mode which displays the current function name
Remove an erroneous interactive specification from two functions. * lisp/progmodes/cc-cmds.el (c-display-defun-name): New command. (c-defun-name, c-cpp-define-name): Remove interactive specification. * lisp/progmodes/cc-mode.el (c-mode-base-map): Add binding C-c C-z for the new command. * doc/misc/cc-mode.texi (Other Commands): Add documentation for the new command.
This commit is contained in:
parent
383abc8898
commit
a0d30d6369
3 changed files with 32 additions and 3 deletions
|
@ -1760,6 +1760,7 @@ file. For commands that you can use to view the effect of your changes,
|
||||||
see @ref{Indentation Commands} and @ref{Filling and Breaking}.
|
see @ref{Indentation Commands} and @ref{Filling and Breaking}.
|
||||||
|
|
||||||
For details of the @ccmode{} style system, see @ref{Styles}.
|
For details of the @ccmode{} style system, see @ref{Styles}.
|
||||||
|
|
||||||
@item @kbd{C-c :} (@code{c-scope-operator})
|
@item @kbd{C-c :} (@code{c-scope-operator})
|
||||||
@kindex C-c :
|
@kindex C-c :
|
||||||
@findex c-scope-operator
|
@findex c-scope-operator
|
||||||
|
@ -1768,6 +1769,18 @@ In C++, it is also sometimes desirable to insert the double-colon scope
|
||||||
operator without performing the electric behavior of colon insertion.
|
operator without performing the electric behavior of colon insertion.
|
||||||
@kbd{C-c :} does just this.
|
@kbd{C-c :} does just this.
|
||||||
|
|
||||||
|
@item @kbd{C-c C-z} (@code{c-display-defun-name})
|
||||||
|
@kindex C-c C-z
|
||||||
|
@findex c-display-defun-name
|
||||||
|
@findex display-defun-name (c-)
|
||||||
|
Display the current function name, if any, in the minibuffer.
|
||||||
|
Additionally, if a prefix argument is given, push the function name to
|
||||||
|
the kill ring. If there is no current function,
|
||||||
|
@code{c-display-defun-name} does nothing. In Emacs, you can use this
|
||||||
|
command in the middle of an interactive search if you set the
|
||||||
|
customizable option @code{isearch-allow-scoll} to non-@code{nil}.
|
||||||
|
@xref{Not Exiting Isearch,,,emacs, GNU Emacs Manual}.
|
||||||
|
|
||||||
@item @kbd{C-c C-\} (@code{c-backslash-region})
|
@item @kbd{C-c C-\} (@code{c-backslash-region})
|
||||||
@kindex C-c C-\
|
@kindex C-c C-\
|
||||||
@findex c-backslash-region
|
@findex c-backslash-region
|
||||||
|
|
|
@ -1821,7 +1821,6 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
|
||||||
"Return the name of the current defun, or NIL if there isn't one.
|
"Return the name of the current defun, or NIL if there isn't one.
|
||||||
\"Defun\" here means a function, or other top level construct
|
\"Defun\" here means a function, or other top level construct
|
||||||
with a brace block."
|
with a brace block."
|
||||||
(interactive)
|
|
||||||
(c-save-buffer-state
|
(c-save-buffer-state
|
||||||
(beginning-of-defun-function end-of-defun-function
|
(beginning-of-defun-function end-of-defun-function
|
||||||
where pos name-end case-fold-search)
|
where pos name-end case-fold-search)
|
||||||
|
@ -2048,6 +2047,23 @@ with a brace block."
|
||||||
(eq (char-after) ?\{)
|
(eq (char-after) ?\{)
|
||||||
(cons (point-min) (point-max))))))))
|
(cons (point-min) (point-max))))))))
|
||||||
|
|
||||||
|
(defun c-display-defun-name (&optional arg)
|
||||||
|
"Display the name of the current CC mode defun and the position in it.
|
||||||
|
With a prefix arg, push the name onto the kill ring too."
|
||||||
|
(interactive "P")
|
||||||
|
(save-restriction
|
||||||
|
(widen)
|
||||||
|
(c-save-buffer-state ((name (c-defun-name))
|
||||||
|
(limits (c-declaration-limits t))
|
||||||
|
(point-bol (c-point 'bol)))
|
||||||
|
(when name
|
||||||
|
(message "%s. Line %s/%s." name
|
||||||
|
(1+ (count-lines (car limits) point-bol))
|
||||||
|
(count-lines (car limits) (cdr limits)))
|
||||||
|
(if arg (kill-new name))
|
||||||
|
(sit-for 3 t)))))
|
||||||
|
(put 'c-display-defun-name 'isearch-scroll t)
|
||||||
|
|
||||||
(defun c-mark-function ()
|
(defun c-mark-function ()
|
||||||
"Put mark at end of the current top-level declaration or macro, point at beginning.
|
"Put mark at end of the current top-level declaration or macro, point at beginning.
|
||||||
If point is not inside any then the closest following one is
|
If point is not inside any then the closest following one is
|
||||||
|
@ -2092,7 +2108,6 @@ function does not require the declaration to contain a brace block."
|
||||||
|
|
||||||
(defun c-cpp-define-name ()
|
(defun c-cpp-define-name ()
|
||||||
"Return the name of the current CPP macro, or NIL if we're not in one."
|
"Return the name of the current CPP macro, or NIL if we're not in one."
|
||||||
(interactive)
|
|
||||||
(let (case-fold-search)
|
(let (case-fold-search)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(and c-opt-cpp-macro-define-start
|
(and c-opt-cpp-macro-define-start
|
||||||
|
|
|
@ -389,7 +389,8 @@ control). See \"cc-mode.el\" for more info."
|
||||||
;;(define-key c-mode-base-map "\C-c\C-v" 'c-version)
|
;;(define-key c-mode-base-map "\C-c\C-v" 'c-version)
|
||||||
;; (define-key c-mode-base-map "\C-c\C-y" 'c-toggle-hungry-state) Commented out by ACM, 2005-11-22.
|
;; (define-key c-mode-base-map "\C-c\C-y" 'c-toggle-hungry-state) Commented out by ACM, 2005-11-22.
|
||||||
(define-key c-mode-base-map "\C-c\C-w" 'c-subword-mode)
|
(define-key c-mode-base-map "\C-c\C-w" 'c-subword-mode)
|
||||||
(define-key c-mode-base-map "\C-c\C-k" 'c-toggle-comment-style))
|
(define-key c-mode-base-map "\C-c\C-k" 'c-toggle-comment-style)
|
||||||
|
(define-key c-mode-base-map "\C-c\C-z" 'c-display-defun-name))
|
||||||
|
|
||||||
;; We don't require the outline package, but we configure it a bit anyway.
|
;; We don't require the outline package, but we configure it a bit anyway.
|
||||||
(cc-bytecomp-defvar outline-level)
|
(cc-bytecomp-defvar outline-level)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue