summaryrefslogtreecommitdiff
path: root/lisp/cedet
diff options
context:
space:
mode:
authorDavid Engster <dengste@eml.cc>2013-06-02 18:39:32 +0200
committerDavid Engster <dengste@eml.cc>2013-06-02 18:39:32 +0200
commit6b7a9e0eb195db4f7a0b48467eb9860d04d92486 (patch)
tree8e9a407a17f616a33b8c310e2b60d76be1801fe8 /lisp/cedet
parentd105b0e26f965b41452153ad405efe98ff142de6 (diff)
parentcaaeb0e88cb0f62a1726ee7e1b4db62f7e4287a6 (diff)
downloademacs-6b7a9e0eb195db4f7a0b48467eb9860d04d92486.tar.gz
Merge with CEDET upstream (rev. 8564).
Diffstat (limited to 'lisp/cedet')
-rw-r--r--lisp/cedet/ChangeLog82
-rw-r--r--lisp/cedet/ede.el21
-rw-r--r--lisp/cedet/ede/base.el66
-rw-r--r--lisp/cedet/ede/cpp-root.el5
-rw-r--r--lisp/cedet/ede/proj.el2
-rw-r--r--lisp/cedet/semantic.el3
-rw-r--r--lisp/cedet/semantic/bovine/c.el2
-rw-r--r--lisp/cedet/semantic/bovine/el.el9
-rw-r--r--lisp/cedet/semantic/complete.el2
-rw-r--r--lisp/cedet/semantic/ctxt.el83
-rw-r--r--lisp/cedet/semantic/db.el2
-rw-r--r--lisp/cedet/semantic/decorate/mode.el44
-rw-r--r--lisp/cedet/semantic/ede-grammar.el2
-rw-r--r--lisp/cedet/semantic/edit.el5
-rw-r--r--lisp/cedet/semantic/idle.el54
-rw-r--r--lisp/cedet/semantic/wisent/python.el14
-rw-r--r--lisp/cedet/srecode/compile.el28
-rw-r--r--lisp/cedet/srecode/srt-wy.el6
18 files changed, 350 insertions, 80 deletions
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 2c4adf4c0a6..98548a919d5 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,85 @@
+2013-06-02 Eric Ludlam <zappo@gnu.org>
+
+ * semantic/edit.el (semantic-change-function): Use
+ `save-match-data' around running hooks.
+
+ * semantic/decorate/mode.el
+ (semantic-decorate-style-predicate-default)
+ (semantic-decorate-style-highlighter-default): New.
+ (semantic-decoration-mode): Do not require
+ `semantic/decorate/include' anymore.
+ (semantic-toggle-decoration-style): Error if an unknown decoration
+ style is toggled.
+ (define-semantic-decoration-style): Add new :load option. When
+ :load is specified, add autoload tokens for the definition
+ functions so that code is loaded when the mode is used.
+ (semantic-decoration-on-includes): New autoload definition for
+ highlighting includes.
+
+ * semantic/bovine/c.el (semantic-lex-c-ifdef): Allow some misc
+ characters to appear after the tested variable.
+
+ * semantic/ede-grammar.el (project-compile-target): Calculate full
+ src name via ede-expand-filename instead of the crutch of the
+ current buffer. Enables this target to compile in batch mode.
+
+ * semantic/idle.el
+ (semantic-idle-symbol-maybe-highlight): Wrap highlighting of
+ remote symbol with `save-excursion'.
+ (semantic-idle-scheduler-work-parse-neighboring-files): Instead of
+ using directory-files on each found mode pattern, collect all the
+ patterns for the current mode, and then for each file, see if it
+ matches any of them. If it does, parse the file. (Patch
+ inspiration from Tomasz Gajewski.)
+
+ * semantic/ctxt.el (semantic-ctxt-end-of-symbol): New.
+ (semantic-ctxt-current-symbol-default): New.
+
+ * semantic/bovine/el.el (semantic-default-elisp-setup): Add
+ autoload cookie. Explain existence.
+ (footer): Add local variable for loaddefs.
+
+ * semantic/db.el (semanticdb-file-table-object): Add new filter,
+ only checking for regular files too.
+
+ * semantic/wisent/python.el
+ (semantic-format-tag-abbreviate): New override. Cuts back on size
+ of code tags.
+
+ * srecode/compile.el (srecode-compile-templates): Fix warning
+ punctuation. Remove status messages to clean up testing output
+
+ * ede/base.el (ede-project-placeholder-cache-file): Update doc to
+ mention 'nil' value.
+ (ede-save-cache): Disable cache save if file is nil.
+
+ * ede.el (ede-initialize-state-current-buffer): Flush deleted
+ projects.
+ (global-ede-mode): Always append our find-file-hook to the end.
+ (ede-flush-deleted-projects): New command.
+
+ * ede/cpp-root.el (ede-preprocessor-map): Protect against init
+ problems.
+
+ * ede/proj.el (ede-proj-target): Added a new "custom" option for
+ custom symbols representing a compiler or linker instead of
+ restricting things to only the predefined compilers and linkers.
+
+2013-06-02 David Engster <dengste@eml.cc>
+
+ * semantic.el (semantic-mode-map): To avoid showing showing
+ Development menu twice, only disable menu item if menu-bar is
+ actually enabled, otherwise the popup 'global menu' might display
+ a disabled Development menu.
+
+ * srecode/srt-wy.el: Regenerate.
+
+2013-06-02 Pete Beardmore <elbeardmorez@msn.com>
+
+ * semantic/complete.el
+ (semantic-displayor-show-request): Fix which slot in obj is set to
+ the max tags.
+
2013-06-01 Glenn Morris <rgm@gnu.org>
* semantic/grammar.el (semantic-grammar-complete):
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 5fecd8b994f..3483d541122 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -494,6 +494,11 @@ provided `global-ede-mode' is enabled."
(defun ede-initialize-state-current-buffer ()
"Initialize the current buffer's state for EDE.
Sets buffer local variables for EDE."
+ ;; due to inode recycling, make sure we don't
+ ;; we flush projects deleted off the system.
+ (ede-flush-deleted-projects)
+
+ ;; Init the buffer.
(let* ((ROOT nil)
(proj (ede-directory-get-open-project default-directory
'ROOT))
@@ -569,7 +574,9 @@ an EDE controlled project."
(add-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p)
(add-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil)
(add-hook 'ecb-source-path-functions 'ede-ecb-project-paths)
- (add-hook 'find-file-hook 'ede-turn-on-hook)
+ ;; Append our hook to the end. This allows mode-local to finish
+ ;; it's stuff before we start doing misc file loads, etc.
+ (add-hook 'find-file-hook 'ede-turn-on-hook t)
(add-hook 'dired-mode-hook 'ede-turn-on-hook)
(add-hook 'kill-emacs-hook 'ede-save-cache)
(ede-load-cache)
@@ -1057,6 +1064,18 @@ On success, return the added project."
(add-to-list 'ede-projects proj)
proj)
+(defun ede-flush-deleted-projects ()
+ "Scan the projects list for projects which no longer exist.
+Flush the dead projects from the project cache."
+ (interactive)
+ (let ((dead nil))
+ (dolist (P ede-projects)
+ (when (not (file-exists-p (oref P :file)))
+ (add-to-list 'dead P)))
+ (dolist (D dead)
+ (setq ede-projects (remove D ede-projects)))
+ ))
+
(defun ede-load-project-file (dir &optional rootreturn)
"Project file independent way to read a project in from DIR.
Optional ROOTRETURN will return the root project for DIR."
diff --git a/lisp/cedet/ede/base.el b/lisp/cedet/ede/base.el
index 5302ac3207a..a94ce8f1868 100644
--- a/lisp/cedet/ede/base.el
+++ b/lisp/cedet/ede/base.el
@@ -306,7 +306,8 @@ All specific project types must derive from this project."
;;
(defcustom ede-project-placeholder-cache-file
(locate-user-emacs-file "ede-projects.el" ".projects.ede")
- "File containing the list of projects EDE has viewed."
+ "File containing the list of projects EDE has viewed.
+If set to nil, then the cache is not saved."
:group 'ede
:type 'file)
@@ -316,38 +317,39 @@ All specific project types must derive from this project."
(defun ede-save-cache ()
"Save a cache of EDE objects that Emacs has seen before."
(interactive)
- (let ((p ede-projects)
- (c ede-project-cache-files)
- (recentf-exclude '( (lambda (f) t) ))
- )
- (condition-case nil
- (progn
- (set-buffer (find-file-noselect ede-project-placeholder-cache-file t))
- (erase-buffer)
- (insert ";; EDE project cache file.
-;; This contains a list of projects you have visited.\n(")
- (while p
- (when (and (car p) (ede-project-p p))
- (let ((f (oref (car p) file)))
- (when (file-exists-p f)
- (insert "\n \"" f "\""))))
- (setq p (cdr p)))
- (while c
- (insert "\n \"" (car c) "\"")
- (setq c (cdr c)))
- (insert "\n)\n")
- (condition-case nil
- (save-buffer 0)
- (error
- (message "File %s could not be saved."
- ede-project-placeholder-cache-file)))
- (kill-buffer (current-buffer))
+ (when ede-project-placeholder-cache-file
+ (let ((p ede-projects)
+ (c ede-project-cache-files)
+ (recentf-exclude '( (lambda (f) t) ))
)
- (error
- (message "File %s could not be read."
- ede-project-placeholder-cache-file))
-
- )))
+ (condition-case nil
+ (progn
+ (set-buffer (find-file-noselect ede-project-placeholder-cache-file t))
+ (erase-buffer)
+ (insert ";; EDE project cache file.
+;; This contains a list of projects you have visited.\n(")
+ (while p
+ (when (and (car p) (ede-project-p p))
+ (let ((f (oref (car p) file)))
+ (when (file-exists-p f)
+ (insert "\n \"" f "\""))))
+ (setq p (cdr p)))
+ (while c
+ (insert "\n \"" (car c) "\"")
+ (setq c (cdr c)))
+ (insert "\n)\n")
+ (condition-case nil
+ (save-buffer 0)
+ (error
+ (message "File %s could not be saved."
+ ede-project-placeholder-cache-file)))
+ (kill-buffer (current-buffer))
+ )
+ (error
+ (message "File %s could not be read."
+ ede-project-placeholder-cache-file))
+
+ ))))
(defun ede-load-cache ()
"Load the cache of EDE projects."
diff --git a/lisp/cedet/ede/cpp-root.el b/lisp/cedet/ede/cpp-root.el
index 47ba16ade7f..719289765a3 100644
--- a/lisp/cedet/ede/cpp-root.el
+++ b/lisp/cedet/ede/cpp-root.el
@@ -507,7 +507,10 @@ This is for project include paths and spp source files."
(lambda (F)
(let* ((expfile (ede-expand-filename root F))
(table (when expfile
- (semanticdb-file-table-object expfile)))
+ ;; Disable EDE init on preprocessor file load
+ ;; otherwise we recurse, cause errs, etc.
+ (let ((ede-constructing t))
+ (semanticdb-file-table-object expfile))))
)
(cond
((not (file-exists-p expfile))
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el
index 702e35f0b1f..99a5978b005 100644
--- a/lisp/cedet/ede/proj.el
+++ b/lisp/cedet/ede/proj.el
@@ -104,6 +104,7 @@ distributed, and each should have a corresponding rule to build it.")
:initform nil
:type (or null symbol)
:custom (choice (const :tag "None" nil)
+ (symbol :tag "Custom Compiler Symbol")
:slotofchoices availablecompilers)
:label "Compiler for building sources"
:group make
@@ -116,6 +117,7 @@ of these compiler resources, and global customization thereof.")
:initform nil
:type (or null symbol)
:custom (choice (const :tag "None" nil)
+ (symbol :tag "Custom Linker Symbol")
:slotofchoices availablelinkers)
:label "Linker for combining intermediate object files."
:group make
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 3c93a8794b1..909902a71fe 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -899,7 +899,8 @@ Throw away all the old tags, and recreate the tag database."
;; and Semantic are both enabled. Is there a better way?
(define-key map [menu-bar cedet-menu]
(list 'menu-item "Development" cedet-menu-map
- :enable (quote (not (bound-and-true-p global-ede-mode)))))
+ :enable (quote (not (and menu-bar-mode
+ (bound-and-true-p global-ede-mode))))))
;; (define-key km "-" 'senator-fold-tag)
;; (define-key km "+" 'senator-unfold-tag)
map))
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index 2f8cf08af3e..3c991ea8555 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -529,7 +529,7 @@ code to parse."
(define-lex-regex-analyzer semantic-lex-c-ifdef
"Code blocks wrapped up in #ifdef.
Uses known macro tables in SPP to determine what block to skip."
- "^\\s-*#\\s-*\\(ifndef\\|ifdef\\)\\s-+\\(\\(\\sw\\|\\s_\\)+\\)$"
+ "^\\s-*#\\s-*\\(ifndef\\|ifdef\\)\\s-+\\(\\(\\sw\\|\\s_\\)+\\)\\([ \t\C-m].*\\)?$"
(semantic-c-do-lex-ifdef))
(defun semantic-c-do-lex-ifdef ()
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index a8ddbe106f7..07e0e08bbaf 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -940,8 +940,11 @@ ELisp variables can be pretty long, so track this one too.")
(define-child-mode lisp-mode emacs-lisp-mode
"Make `lisp-mode' inherit mode local behavior from `emacs-lisp-mode'.")
+;;;###autoload
(defun semantic-default-elisp-setup ()
"Setup hook function for Emacs Lisp files and Semantic."
+ ;; This is here mostly to get this file loaded when a .el file is
+ ;; loaded into Emacs.
)
(add-hook 'emacs-lisp-mode-hook 'semantic-default-elisp-setup)
@@ -960,6 +963,12 @@ ELisp variables can be pretty long, so track this one too.")
'(require 'semantic/db-el)
)
+
(provide 'semantic/bovine/el)
+;; Local variables:
+;; generated-autoload-file: "../loaddefs.el"
+;; generated-autoload-load-name: "semantic/bovine/el"
+;; End:
+
;;; semantic/bovine/el.el ends here
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 6c2b97a677a..b42e24fb9c0 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1667,7 +1667,7 @@ Display mechanism using tooltip for a list of possible completions.")
(setq msg "...")))
((eq mode 'verbose)
;; Always show extended match set.
- (oset obj max-tags semantic-displayor-tooltip-max-tags)
+ (oset obj max-tags-initial semantic-displayor-tooltip-max-tags)
(setq max-tags semantic-displayor-tooltip-max-tags)))
(unless msg
(oset obj shown t)
diff --git a/lisp/cedet/semantic/ctxt.el b/lisp/cedet/semantic/ctxt.el
index 2c0b428c195..efaec4f63b4 100644
--- a/lisp/cedet/semantic/ctxt.el
+++ b/lisp/cedet/semantic/ctxt.el
@@ -357,6 +357,87 @@ beginning and end of a command."
(def-edebug-spec semantic-with-buffer-narrowed-to-command
(def-body))))
+(define-overloadable-function semantic-ctxt-end-of-symbol (&optional point)
+ "Move point to the end of the current symbol under POINT.
+This skips forward over symbols in a complex reference.
+For example, in the C statement:
+ this.that().entry;
+
+If the cursor is on 'this', will move point to the ; after entry.")
+
+(defun semantic-ctxt-end-of-symbol-default (&optional point)
+ "Move poin to the end of the current symbol under POINT.
+This will move past type/field names when applicable.
+Depends on `semantic-type-relation-separator-character', and will
+work on C like languages."
+ (if point (goto-char point))
+ (let* ((fieldsep1 (mapconcat (lambda (a) (regexp-quote a))
+ semantic-type-relation-separator-character
+ "\\|"))
+ ;; NOTE: The [ \n] expression below should used \\s-, but that
+ ;; doesn't work in C since \n means end-of-comment, and isn't
+ ;; really whitespace.
+ (fieldsep (concat "[ \t\n\r]*\\(" fieldsep1 "\\)[ \t\n\r]*\\(\\w\\|\\s_\\)"))
+ (case-fold-search semantic-case-fold)
+ (continuesearch t)
+ (end nil)
+ )
+ (with-syntax-table semantic-lex-syntax-table
+ (cond ((looking-at "\\w\\|\\s_")
+ ;; In the middle of a symbol, move to the end.
+ (forward-sexp 1))
+ ((looking-at fieldsep1)
+ ;; We are in a fine spot.. do nothing.
+ nil
+ )
+ ((save-excursion
+ (and (condition-case nil
+ (progn (forward-sexp -1)
+ (forward-sexp 1)
+ t)
+ (error nil))
+ (looking-at fieldsep1)))
+ (setq symlist (list ""))
+ (forward-sexp -1)
+ ;; Skip array expressions.
+ (while (looking-at "\\s(") (forward-sexp -1))
+ (forward-sexp 1))
+ )
+ ;; Set the current end marker.
+ (setq end (point))
+
+ ;; Cursor is at the safe end of some symbol. Look until we
+ ;; find the logical end of this current complex symbol.
+ (condition-case nil
+ (while continuesearch
+ ;; If there are functional arguments, arrays, etc, skip them.
+ (when (looking-at "\\s(")
+ (forward-sexp 1))
+
+ ;; If there is a field separator, then skip that, plus
+ ;; the next expected symbol.
+ (if (not (looking-at fieldsep1))
+ ;; We hit the end.
+ (error nil)
+
+ ;; Skip the separator and the symbol.
+ (goto-char (match-end 0))
+
+ (if (looking-at "\\w\\|\\s_")
+ ;; Skip symbols
+ (forward-sexp 1)
+ ;; No symbol, exit the search...
+ (setq continuesearch nil))
+
+ (setq end (point)))
+
+ ;; Cont...
+ )
+
+ ;; Restore position if we go to far....
+ (error (goto-char end)) )
+
+ )))
(define-overloadable-function semantic-ctxt-current-symbol (&optional point)
"Return the current symbol the cursor is on at POINT in a list.
@@ -391,7 +472,7 @@ Depends on `semantic-type-relation-separator-character'."
;; In the middle of a symbol, move to the end.
(forward-sexp 1))
((looking-at fieldsep1)
- ;; We are in a find spot.. do nothing.
+ ;; We are in a fine spot.. do nothing.
nil
)
((save-excursion
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index e8784c4f85c..8d9cfcccd7d 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -899,7 +899,7 @@ If file does not have tags available, and DONTLOAD is nil,
then load the tags for FILE, and create a new table object for it.
DONTLOAD does not affect the creation of new database objects."
;; (message "Object Translate: %s" file)
- (when (and file (file-exists-p file))
+ (when (and file (file-exists-p file) (file-regular-p file))
(let* ((default-directory (file-name-directory file))
(tab (semanticdb-file-table-object-from-hash file))
(fullfile nil))
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el
index fc791f52da1..3487e615168 100644
--- a/lisp/cedet/semantic/decorate/mode.el
+++ b/lisp/cedet/semantic/decorate/mode.el
@@ -64,6 +64,14 @@ add items to this list."
"Return the STYLE's highlighter function."
(intern (format "%s-highlight" style)))
+(defsubst semantic-decorate-style-predicate-default (style)
+ "Return the STYLE's predicate function."
+ (intern (format "%s-p-default" style)))
+
+(defsubst semantic-decorate-style-highlighter-default (style)
+ "Return the STYLE's highlighter function."
+ (intern (format "%s-highlight-default" style)))
+
;;; Base decoration API
;;
(defsubst semantic-decoration-p (object)
@@ -265,8 +273,6 @@ minor mode is enabled."
(semantic-make-local-hook 'semantic-after-toplevel-cache-change-hook)
(add-hook 'semantic-after-toplevel-cache-change-hook
'semantic-decorate-tags-after-full-reparse nil t)
- ;; Decorate includes by default
- (require 'semantic/decorate/include)
;; Add decorations to available tags. The above hooks ensure
;; that new tags will be decorated when they become available.
(semantic-decorate-add-decorations (semantic-fetch-available-tags)))
@@ -325,6 +331,8 @@ Return non-nil if the decoration style is enabled."
(flag (if arg
(> (prefix-numeric-value arg) 0)
(not (cdr style)))))
+ (when (null style)
+ (error "Unknown decoration style %s" name))
(unless (eq (cdr style) flag)
;; Store the new flag.
(setcdr style flag)
@@ -368,7 +376,8 @@ DOC is a documentation string describing the decoration style NAME.
It is appended to auto-generated doc strings.
An Optional list of FLAGS can also be specified. Flags are:
:enabled <value> - specify the default enabled value for NAME.
-
+ :load <value> - specify a feature (as a string) with the rest of
+ the definition for decoration mode NAME.
This defines two new overload functions respectively called `NAME-p'
and `NAME-highlight', for which you must provide a default
@@ -386,9 +395,14 @@ To add other kind of decorations on a tag, `NAME-highlight' must use
decoration API found in this library."
(let ((predicate (semantic-decorate-style-predicate name))
(highlighter (semantic-decorate-style-highlighter name))
+ (predicatedef (semantic-decorate-style-predicate-default name))
+ (highlighterdef (semantic-decorate-style-highlighter-default name))
(defaultenable (if (plist-member flags :enabled)
(plist-get flags :enabled)
t))
+ (loadfile (if (plist-member flags :load)
+ (plist-get flags :load)
+ nil))
)
`(progn
;; Clear the menu cache so that new items are added when
@@ -408,7 +422,19 @@ decoration API found in this library."
(add-to-list 'semantic-decoration-styles
(cons ',(symbol-name name)
,defaultenable))
- )))
+ ;; If there is a load file, then create the autload tokens for
+ ;; those functions to load the token, but only if the fsym
+ ;; doesn't exist yet.
+ (when (stringp ,loadfile)
+ (unless (fboundp ',predicatedef)
+ (autoload ',predicatedef ',loadfile "Return non-nil to decorate TAG."
+ nil 'function))
+
+ (unless (fboundp ',highlighterdef)
+ (autoload ',highlighterdef ',loadfile "Decorate TAG."
+ nil 'function))
+ ))
+ ))
;;; Predefined decoration styles
;;
@@ -514,6 +540,16 @@ Use a primary decoration."
(semantic-set-tag-face
tag 'semantic-decoration-on-protected-members-face))
+;;; Decoration Modes in other files
+;;
+(define-semantic-decoration-style semantic-decoration-on-includes
+ "Highlight class members that are includes.
+This mode provides a nice context menu on the include statements."
+ :enabled t
+ :load "semantic/decorate/include")
+
+
+
(provide 'semantic/decorate/mode)
;; Local variables:
diff --git a/lisp/cedet/semantic/ede-grammar.el b/lisp/cedet/semantic/ede-grammar.el
index cb2a1faaac0..17859e232a3 100644
--- a/lisp/cedet/semantic/ede-grammar.el
+++ b/lisp/cedet/semantic/ede-grammar.el
@@ -146,7 +146,7 @@ Lays claim to all -by.el, and -wy.el files."
(let* ((package (semantic-grammar-create-package))
(fname (progn (string-match ".*/\\(.+\\.el\\)" package)
(match-string 1 package)))
- (src (with-current-buffer fname (buffer-file-name)))
+ (src (ede-expand-filename obj fname))
(csrc (concat (file-name-sans-extension src) ".elc")))
(if (< emacs-major-version 24)
;; Does not have `byte-recompile-file'
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el
index b0540af373d..a27eab5404c 100644
--- a/lisp/cedet/semantic/edit.el
+++ b/lisp/cedet/semantic/edit.el
@@ -141,8 +141,9 @@ Argument START, END, and LENGTH specify the bounds of the change."
(setq semantic-unmatched-syntax-cache-check t)
(let ((inhibit-point-motion-hooks t)
)
- (run-hook-with-args 'semantic-change-functions start end length)
- ))
+ (save-match-data
+ (run-hook-with-args 'semantic-change-functions start end length)
+ )))
(defun semantic-changes-in-region (start end &optional buffer)
"Find change overlays which exist in whole or in part between START and END.
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index 9899ab974f7..6c223c2b9f2 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -434,16 +434,27 @@ datasets."
(defun semantic-idle-scheduler-work-parse-neighboring-files ()
"Parse all the files in similar directories to buffers being edited."
- ;; Let's check to see if EDE matters.
- (let ((ede-auto-add-method 'never))
- (dolist (a auto-mode-alist)
- (when (eq (cdr a) major-mode)
- (dolist (file (directory-files default-directory t (car a) t))
- (semantic-throw-on-input 'parsing-mode-buffers)
- (save-excursion
- (semanticdb-file-table-object file)
- ))))
- ))
+ ;; Let's tell EDE to ignore all the files we're about to load
+ (let ((ede-auto-add-method 'never)
+ (matching-auto-mode-patterns nil))
+ ;; Collect all patterns matching files of the same mode we edit.
+ (mapc (lambda (pat) (and (eq (cdr pat) major-mode)
+ (push (car pat) matching-auto-mode-patterns)))
+ auto-mode-alist)
+ ;; Loop over all files, and if one matches our mode, we force its
+ ;; table to load.
+ (dolist (file (directory-files default-directory t ".*" t))
+ (catch 'found
+ (mapc (lambda (pat)
+ (semantic-throw-on-input 'parsing-mode-buffers)
+ ;; We use string-match instead of passing the pattern
+ ;; into directory files, because some patterns don't
+ ;; work with directory files.
+ (and (string-match pat file)
+ (save-excursion
+ (semanticdb-file-table-object file))
+ (throw 'found t)))
+ matching-auto-mode-patterns)))))
;;; REPARSING
@@ -840,17 +851,18 @@ visible, then highlight it."
)
(cond ((semantic-overlay-p region)
(with-current-buffer (semantic-overlay-buffer region)
- (goto-char (semantic-overlay-start region))
- (when (pos-visible-in-window-p
- (point) (get-buffer-window (current-buffer) 'visible))
- (if (< (semantic-overlay-end region) (point-at-eol))
- (pulse-momentary-highlight-overlay
- region semantic-idle-symbol-highlight-face)
- ;; Not the same
- (pulse-momentary-highlight-region
- (semantic-overlay-start region)
- (point-at-eol)
- semantic-idle-symbol-highlight-face)))
+ (save-excursion
+ (goto-char (semantic-overlay-start region))
+ (when (pos-visible-in-window-p
+ (point) (get-buffer-window (current-buffer) 'visible))
+ (if (< (semantic-overlay-end region) (point-at-eol))
+ (pulse-momentary-highlight-overlay
+ region semantic-idle-symbol-highlight-face)
+ ;; Not the same
+ (pulse-momentary-highlight-region
+ (semantic-overlay-start region)
+ (point-at-eol)
+ semantic-idle-symbol-highlight-face))))
))
((vectorp region)
(let ((start (aref region 0))
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el
index 8ca398ef271..719868f7635 100644
--- a/lisp/cedet/semantic/wisent/python.el
+++ b/lisp/cedet/semantic/wisent/python.el
@@ -485,6 +485,20 @@ Return a list as per `semantic-ctxt-current-symbol'.
Return nil if there is nothing relevant."
nil)
+;;; Tag Formatting
+;;
+(define-mode-local-override semantic-format-tag-abbreviate python-mode (tag &optional parent color)
+ "Format an abbreviated tag for python.
+Shortens 'code' tags, but passes through for others."
+ (cond ((semantic-tag-of-class-p tag 'code)
+ ;; Just take the first line.
+ (let ((name (semantic-tag-name tag)))
+ (when (string-match "\n" name)
+ (setq name (substring name 0 (match-beginning 0))))
+ name))
+ (t
+ (semantic-format-tag-abbreviate-default tag parent color))))
+
;;; Enable Semantic in `python-mode'.
;;
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index 0d68036c433..542fd49f8e5 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -200,10 +200,11 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
"Compile a semantic recode template file into a mode-local variable."
(interactive)
(unless (semantic-active-p)
- (error "You have to activate semantic-mode to compile SRecode templates."))
+ (error "You have to activate semantic-mode to compile SRecode templates"))
(require 'srecode/insert)
- (message "Compiling template %s..."
- (file-name-nondirectory (buffer-file-name)))
+ (when (called-interactively-p 'interactive)
+ (message "Compiling template %s..."
+ (file-name-nondirectory (buffer-file-name))))
(let ((tags (semantic-fetch-tags))
(tag nil)
(class nil)
@@ -288,10 +289,11 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
)
;; Continue
(setq tags (cdr tags)))
-
+
;; MSG - Before install since nreverse whacks our list.
- (message "%d templates compiled for %s"
- (length table) mode)
+ (when (called-interactively-p 'interactive)
+ (message "%d templates compiled for %s"
+ (length table) mode))
;;
;; APPLY TO MODE
@@ -316,12 +318,14 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(if (stringp project)
(setq priority (+ 50 defaultdelta))
(setq priority (+ 80 defaultdelta))))
- (message "Templates %s has estimated priority of %d"
- (file-name-nondirectory (buffer-file-name))
- priority))
- (message "Compiling templates %s priority %d... done!"
- (file-name-nondirectory (buffer-file-name))
- priority))
+ (when (called-interactively-p 'interactive)
+ (message "Templates %s has estimated priority of %d"
+ (file-name-nondirectory (buffer-file-name))
+ priority)))
+ (when (called-interactively-p 'interactive)
+ (message "Compiling templates %s priority %d... done!"
+ (file-name-nondirectory (buffer-file-name))
+ priority)))
;; Save it up!
(srecode-compile-template-table table mode priority application framework project vars)
diff --git a/lisp/cedet/srecode/srt-wy.el b/lisp/cedet/srecode/srt-wy.el
index 5560d35a70c..450f57d943c 100644
--- a/lisp/cedet/srecode/srt-wy.el
+++ b/lisp/cedet/srecode/srt-wy.el
@@ -131,6 +131,10 @@
((SET symbol insertable-string-list newline)
(wisent-raw-tag
(semantic-tag-new-variable $2 nil $3)))
+ ((SET symbol number newline)
+ (wisent-raw-tag
+ (semantic-tag-new-variable $2 nil
+ (list $3))))
((SHOW symbol newline)
(wisent-raw-tag
(semantic-tag-new-variable $2 nil t))))
@@ -290,8 +294,8 @@ It ignores whitespace, newlines and comments."
srecode-template-separator-block
srecode-template-wy--<keyword>-keyword-analyzer
srecode-template-property-analyzer
- srecode-template-wy--<symbol>-regexp-analyzer
srecode-template-wy--<number>-regexp-analyzer
+ srecode-template-wy--<symbol>-regexp-analyzer
srecode-template-wy--<string>-sexp-analyzer
srecode-template-wy--<punctuation>-string-analyzer
semantic-lex-default-action