[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r118183: * lisp/progmodes/cfengine.el (cfengine3-def
From: |
Leo Liu |
Subject: |
[Emacs-diffs] trunk r118183: * lisp/progmodes/cfengine.el (cfengine3-defun-full-re): New var. |
Date: |
Thu, 23 Oct 2014 08:10:00 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 118183
revision-id: address@hidden
parent: address@hidden
committer: Leo Liu <address@hidden>
branch nick: trunk
timestamp: Thu 2014-10-23 16:07:40 +0800
message:
* lisp/progmodes/cfengine.el (cfengine3-defun-full-re): New var.
(cfengine3-create-imenu-index): Use it and use ` ' for separation.
(cfengine3-current-defun): New function.
(cfengine3-mode): Set add-log-current-defun-function.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/progmodes/cfengine.el
cfengine.el-20091113204419-o5vbwnq5f7feedwu-2944
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2014-10-23 01:38:59 +0000
+++ b/lisp/ChangeLog 2014-10-23 08:07:40 +0000
@@ -1,3 +1,10 @@
+2014-10-23 Leo Liu <address@hidden>
+
+ * progmodes/cfengine.el (cfengine3-defun-full-re): New var.
+ (cfengine3-create-imenu-index): Use it and use ` ' for separation.
+ (cfengine3-current-defun): New function.
+ (cfengine3-mode): Set add-log-current-defun-function.
+
2014-10-23 Stefan Monnier <address@hidden>
* select.el: Use lexical-binding.
=== modified file 'lisp/progmodes/cfengine.el'
--- a/lisp/progmodes/cfengine.el 2014-10-11 14:27:47 +0000
+++ b/lisp/progmodes/cfengine.el 2014-10-23 08:07:40 +0000
@@ -817,6 +817,12 @@
(defconst cfengine3-defuns-regex (regexp-opt cfengine3-defuns t)
"Regex to match the CFEngine 3.x defuns.")
+ (defconst cfengine3-defun-full-re (concat "^\\s-*" cfengine3-defuns-regex
+ "\\s-+\\(\\(?:\\w\\|\\s_\\)+\\)"
;type
+ "\\s-+\\(\\(?:\\w\\|\\s_\\)+\\)"
;id
+ )
+ "Regexp matching full defun declaration (excluding argument list).")
+
(defconst cfengine3-class-selector-regex "\\([[:alnum:]_().&|!:]+\\)::")
(defconst cfengine3-category-regex "\\([[:alnum:]_]+\\):")
@@ -1299,19 +1305,25 @@
("::" . ?∷)))
(defun cfengine3-create-imenu-index ()
- "A function for `imenu-create-index-function'."
+ "A function for `imenu-create-index-function'.
+Note: defun name is separated by space such as `body
+package_method opencsw' and imenu will replace spaces according
+to `imenu-space-replacement' (which see)."
(goto-char (point-min))
- (let ((re (concat "^\\s-*" cfengine3-defuns-regex
- "\\s-+\\(\\(?:\\w\\|\\s_\\)+\\)" ;type
- "\\s-+\\(\\(?:\\w\\|\\s_\\)+\\)" ;id
- ))
- (defuns ()))
- (while (re-search-forward re nil t)
- (push (cons (mapconcat #'match-string '(1 2 3) ".")
+ (let ((defuns ()))
+ (while (re-search-forward cfengine3-defun-full-re nil t)
+ (push (cons (mapconcat #'match-string '(1 2 3) " ")
(copy-marker (match-beginning 3)))
defuns))
(nreverse defuns)))
+(defun cfengine3-current-defun ()
+ "A function for `add-log-current-defun-function'."
+ (end-of-line)
+ (beginning-of-defun)
+ (and (looking-at cfengine3-defun-full-re)
+ (mapconcat #'match-string '(1 2 3) " ")))
+
;;;###autoload
(define-derived-mode cfengine3-mode prog-mode "CFE3"
"Major mode for editing CFEngine3 input.
@@ -1347,7 +1359,8 @@
(setq-local beginning-of-defun-function #'cfengine3-beginning-of-defun)
(setq-local end-of-defun-function #'cfengine3-end-of-defun)
- (setq-local imenu-create-index-function #'cfengine3-create-imenu-index))
+ (setq-local imenu-create-index-function #'cfengine3-create-imenu-index)
+ (setq-local add-log-current-defun-function #'cfengine3-current-defun))
;;;###autoload
(define-derived-mode cfengine2-mode prog-mode "CFE2"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r118183: * lisp/progmodes/cfengine.el (cfengine3-defun-full-re): New var.,
Leo Liu <=