diff options
Diffstat (limited to 'lisp/cedet/semantic/wisent/javascript.el')
-rw-r--r-- | lisp/cedet/semantic/wisent/javascript.el | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/lisp/cedet/semantic/wisent/javascript.el b/lisp/cedet/semantic/wisent/javascript.el index 8ed83e87bce..610df0edc86 100644 --- a/lisp/cedet/semantic/wisent/javascript.el +++ b/lisp/cedet/semantic/wisent/javascript.el @@ -51,8 +51,8 @@ to this variable NAME." start (if elts (car (cddr elt)) (semantic-tag-start tag)) end (if xpand (cdr (cddr elt)) (semantic-tag-end tag)) xpand (cons clone xpand)) - ;; Set the definition of the cloned tag - (semantic-tag-put-attribute clone :default-value value) + ;; Set the definition of the cloned tag + (semantic-tag-put-attribute clone :default-value value) ;; Set the bounds of the cloned tag with those of the name ;; element. (semantic-tag-set-bounds clone start end)) @@ -70,10 +70,56 @@ This function overrides `get-local-variables'." ;; Does javascript have identifiable local variables? nil) +(define-mode-local-override semantic-tag-protection javascript-mode (tag &optional parent) + "Return protection information about TAG with optional PARENT. +This function returns on of the following symbols: + nil - No special protection. Language dependent. + 'public - Anyone can access this TAG. + 'private - Only methods in the local scope can access TAG. + 'protected - Like private for outside scopes, like public for child + classes. +Some languages may choose to provide additional return symbols specific +to themselves. Use of this function should allow for this. + +The default behavior (if not overridden with `tag-protection' +is to return a symbol based on type modifiers." + nil) + +(define-mode-local-override semantic-analyze-scope-calculate-access javascript-mode (type scope) + "Calculate the access class for TYPE as defined by the current SCOPE. +Access is related to the :parents in SCOPE. If type is a member of SCOPE +then access would be 'private. If TYPE is inherited by a member of SCOPE, +the access would be 'protected. Otherwise, access is 'public." + nil) +(define-mode-local-override semantic-ctxt-current-symbol javascript-mode (&optional point) + "Return the current symbol the cursor is on at POINT in a list. +This is a very simple implementation for Javascript symbols. It +will at maximum do one split, so that the first part is seen as +one type. For example: $('#sel').foo.bar will return (\"$('sel').foo\" \"bar\"). +This is currently needed for the mozrepl omniscient database." + (save-excursion + (if point (goto-char point)) + (let* ((case-fold-search semantic-case-fold) + symlist tmp end) + (with-syntax-table semantic-lex-syntax-table + (save-excursion + (when (looking-at "\\w\\|\\s_") + (forward-sexp 1)) + (setq end (point)) + (unless (re-search-backward "\\s-" (point-at-bol) t) + (beginning-of-line)) + (setq tmp (buffer-substring-no-properties (point) end)) + (if (string-match "\\(.+\\)\\." tmp) + (setq symlist (list (match-string 1 tmp) + (substring tmp (1+ (match-end 1)) (length tmp)))) + (setq symlist (list tmp)))))))) + ;;; Setup Function ;; -;; This sets up the javascript parser +;; Since javascript-mode is an alias for js-mode, let it inherit all +;; the overrides. +(define-child-mode js-mode javascript-mode) ;; Since javascript-mode is an alias for js-mode, let it inherit all ;; the overrides. |