]> git.eshelyaron.com Git - emacs.git/commitdiff
Introduce a function to CC Mode which displays the current function name
authorAlan Mackenzie <acm@muc.de>
Fri, 3 Nov 2017 19:45:17 +0000 (19:45 +0000)
committerAlan Mackenzie <acm@muc.de>
Fri, 3 Nov 2017 19:45:17 +0000 (19:45 +0000)
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.

doc/misc/cc-mode.texi
lisp/progmodes/cc-cmds.el
lisp/progmodes/cc-mode.el

index c90f6d06bf628a846b4639c6bc7d8d86c58de85a..09a86c888d31b0795e2ed59805aaa37e7fca3926 100644 (file)
@@ -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}.
 
 For details of the @ccmode{} style system, see @ref{Styles}.
+
 @item @kbd{C-c :} (@code{c-scope-operator})
 @kindex C-c :
 @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.
 @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})
 @kindex C-c C-\
 @findex c-backslash-region
index ca64b54420049520f2dcefca789399e64b3ee306..2b6631359328717398770fcfd9322feeaa239b8d 100644 (file)
@@ -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.
 \"Defun\" here means a function, or other top level construct
 with a brace block."
-  (interactive)
   (c-save-buffer-state
       (beginning-of-defun-function end-of-defun-function
        where pos name-end case-fold-search)
@@ -2048,6 +2047,23 @@ with a brace block."
              (eq (char-after) ?\{)
              (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 ()
   "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
@@ -2092,7 +2108,6 @@ function does not require the declaration to contain a brace block."
 
 (defun c-cpp-define-name ()
   "Return the name of the current CPP macro, or NIL if we're not in one."
-  (interactive)
   (let (case-fold-search)
     (save-excursion
       (and c-opt-cpp-macro-define-start
index b0e5fe47a7c2b10ae881ab07d1990d6119b4ebb9..f74e931a8bb056fe235cf5cce273e7758a003076 100644 (file)
@@ -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-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-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.
 (cc-bytecomp-defvar outline-level)