2009-08-31 02:16:34 +00:00
|
|
|
;;; semantic/doc.el --- Routines for documentation strings
|
2009-08-29 19:45:47 +00:00
|
|
|
|
2020-01-01 00:19:43 +00:00
|
|
|
;; Copyright (C) 1999-2003, 2005, 2008-2020 Free Software Foundation,
|
2013-01-01 09:11:05 +00:00
|
|
|
;; Inc.
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
|
|
|
;; Keywords: syntax
|
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2017-09-13 15:52:52 -07:00
|
|
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
;;
|
2009-10-01 04:54:05 +00:00
|
|
|
;; It is good practice to write documentation for your functions and
|
2009-08-29 19:45:47 +00:00
|
|
|
;; variables. These core routines deal with these documentation
|
|
|
|
;; comments or strings. They can exist either as a tag property
|
|
|
|
;; (:documentation) or as a comment just before the symbol, or after
|
|
|
|
;; the symbol on the same line.
|
|
|
|
|
|
|
|
(require 'semantic/tag)
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
2009-09-02 04:37:10 +00:00
|
|
|
;;;###autoload
|
2009-08-29 19:45:47 +00:00
|
|
|
(define-overloadable-function semantic-documentation-for-tag (&optional tag nosnarf)
|
|
|
|
"Find documentation from TAG and return it as a clean string.
|
|
|
|
TAG might have DOCUMENTATION set in it already. If not, there may be
|
|
|
|
some documentation in a comment preceding TAG's definition which we
|
|
|
|
can look for. When appropriate, this can be overridden by a language specific
|
|
|
|
enhancement.
|
|
|
|
Optional argument NOSNARF means to only return the lexical analyzer token for it.
|
2015-11-17 15:28:50 -08:00
|
|
|
If NOSNARF is `lex', then only return the lex token."
|
2009-08-29 19:45:47 +00:00
|
|
|
(if (not tag) (setq tag (semantic-current-tag)))
|
|
|
|
(save-excursion
|
|
|
|
(when (semantic-tag-with-position-p tag)
|
|
|
|
(set-buffer (semantic-tag-buffer tag)))
|
|
|
|
(:override
|
|
|
|
;; No override. Try something simple to find documentation nearby
|
|
|
|
(save-excursion
|
|
|
|
(semantic-go-to-tag tag)
|
|
|
|
(let ((doctmp (semantic-tag-docstring tag (current-buffer))))
|
|
|
|
(or
|
|
|
|
;; Is there doc in the tag???
|
|
|
|
doctmp
|
|
|
|
;; Check just before the definition.
|
|
|
|
(when (semantic-tag-with-position-p tag)
|
2015-02-21 20:00:16 -08:00
|
|
|
(semantic-documentation-comment-preceding-tag tag nosnarf))
|
2011-11-15 18:37:37 +01:00
|
|
|
;; Let's look for comments either after the definition, but before code:
|
2009-08-29 19:45:47 +00:00
|
|
|
;; Not sure yet. Fill in something clever later....
|
|
|
|
nil))))))
|
|
|
|
|
2015-02-21 20:00:16 -08:00
|
|
|
(defun semantic-documentation-comment-preceding-tag (&optional tag nosnarf)
|
2009-10-01 04:54:05 +00:00
|
|
|
"Find a comment preceding TAG.
|
2009-08-29 19:45:47 +00:00
|
|
|
If TAG is nil. use the tag under point.
|
2009-10-01 04:54:05 +00:00
|
|
|
Searches the space between TAG and the preceding tag for a comment,
|
2009-08-29 19:45:47 +00:00
|
|
|
and converts the comment into clean documentation.
|
2015-11-17 15:28:50 -08:00
|
|
|
Optional argument NOSNARF with a value of `lex' means to return
|
2009-08-29 19:45:47 +00:00
|
|
|
just the lexical token and not the string."
|
|
|
|
(if (not tag) (setq tag (semantic-current-tag)))
|
|
|
|
(save-excursion
|
|
|
|
;; Find this tag.
|
|
|
|
(semantic-go-to-tag tag)
|
|
|
|
(let* ((starttag (semantic-find-tag-by-overlay-prev
|
|
|
|
(semantic-tag-start tag)))
|
|
|
|
(start (if starttag
|
|
|
|
(semantic-tag-end starttag)
|
|
|
|
(point-min))))
|
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog.
* semantic.el (semantic-version): Update to 2.0.
(semantic-mode-map): Add "," and "m" bindings.
(navigate-menu): Update.
* semantic/symref.el (semantic-symref-calculate-rootdir):
New function.
(semantic-symref-detect-symref-tool): Use it.
* semantic/symref/grep.el (semantic-symref-grep-shell): New var.
(semantic-symref-perform-search): Use it. Calculate root dir with
semantic-symref-calculate-rootdir.
(semantic-symref-derive-find-filepatterns): Improve error message.
* semantic/symref/list.el
(semantic-symref-results-mode-map): New bindings.
(semantic-symref-auto-expand-results): New option.
(semantic-symref-results-dump): Obey auto-expand.
(semantic-symref-list-expand-all, semantic-symref-regexp)
(semantic-symref-list-contract-all)
(semantic-symref-list-map-open-hits)
(semantic-symref-list-update-open-hits)
(semantic-symref-list-create-macro-on-open-hit)
(semantic-symref-list-call-macro-on-open-hits): New functions.
(semantic-symref-list-menu-entries)
(semantic-symref-list-menu): New vars.
(semantic-symref-list-map-open-hits): Move cursor to beginning of
match before calling the mapped function.
* semantic/doc.el
(semantic-documentation-comment-preceeding-tag): Do nothing if the
mode doesn't provide comment-start-skip.
* semantic/scope.el
(semantic-analyze-scope-nested-tags-default): Strip duplicates.
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
* semantic/html.el (semantic-default-html-setup): Add
senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
(semantic-decoration-on-includes-highlight-default): Check that
the include tag has a postion.
* semantic/complete.el (semantic-collector-local-members):
(semantic-complete-read-tag-local-members)
(semantic-complete-jump-local-members): New class and functions.
(semantic-complete-self-insert): Save excursion before completing.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): If no completions
are found, return the raw by-name-only completion list. Add FLAGS
arguments. Add support for 'no-tc (type constraint) and
'no-unique, or no stripping duplicates.
(semantic-analyze-possible-completions-default): Add FLAGS arg.
* semantic/util-modes.el
(semantic-stickyfunc-show-only-functions-p): New option.
(semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
the very first line in a buffer.
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
(semantic-describe-buffer): Fix expand-nonterminal. Add
lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
* semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
:filename property and the tag position.
* semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
Add recursion limit.
* semantic/imenu.el (semantic-imenu-bucketize-type-members):
Make this buffer local, not the obsoleted variable.
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
(semantic-idle-completion-list-default): Use
semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
(semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
Callers changed.
(semantic-idle-work-parse-neighboring-files-flag): Default to nil.
(semantic-idle-work-update-headers-flag): New var.
(semantic-idle-work-for-one-buffer): Use it.
(semantic-idle-local-symbol-highlight): Rename from
semantic-idle-tag-highlight.
(semantic-idle-truncate-long-summaries): New option.
* semantic/ia.el (semantic-ia-cache)
(semantic-ia-get-completions): Deleted. Callers changed.
(semantic-ia-show-variants): New command.
(semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
(semantic-ia-show-summary): If there isn't anything to show, say so.
* semantic/grammar.el (semantic-grammar-create-package):
Save the buffer even in batch mode.
* semantic/fw.el
(semanticdb-without-unloaded-file-searches): New macro.
* semantic/dep.el (semantic-dependency-find-file-on-path):
Fix case dereferencing ede-object when it is a list.
* semantic/db-typecache.el (semanticdb-expand-nested-tag)
(semanticdb-typecache-faux-namespace): New functions.
(semanticdb-typecache-file-tags)
(semanticdb-typecache-merge-streams): Use them.
(semanticdb-typecache-file-tags): When deriving tags from a file,
give the mode a chance to monkey with the tag copy.
(semanticdb-typecache-find-default): Wrap find in save-excursion.
(semanticdb-typecache-find-by-name-helper): Merge found names down.
* semantic/db-global.el
(semanticdb-enable-gnu-global-in-buffer): Don't show messages if
GNU Global is not available and we don't want to throw an error.
* semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
When trying to normalize the tag to a buffer, don't error if
set-buffer method doesn't exist.
* semantic/db-file.el (semanticdb-save-db): Simplify msg.
* semantic/db.el (semanticdb-refresh-table): If forcing a
refresh on a file not in a buffer, use semantic-find-file-noselect
and delete the buffer after use.
(semanticdb-current-database-list): When calculating root via
hooks, force it through true-filename and skip the list of
possible roots.
* semantic/ctxt.el (semantic-ctxt-imported-packages): New.
* semantic/analyze/debug.el
(semantic-analyzer-debug-insert-tag): Reset standard output to
current buffer.
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype): Change "prefix" to
"symbol" in messages.
* semantic/analyze/refs.el: (semantic-analyze-refs-impl)
(semantic-analyze-refs-proto): When calculating value, make sure
the found tag is 'similar' to the originating tag.
(semantic--analyze-refs-find-tags-with-parent): Attempt to
identify matches via imported symbols of parents.
(semantic--analyze-refs-full-lookup-with-parents): Do a deep
search during the brute search.
* semantic/analyze.el
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
* semantic/bovine/c.el (semantic-c-describe-environment): Add
project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
(semantic-expand-c-tag-namelist): Split a full type from a typedef
out to its own tag.
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
a clue that some function is probably a constructor. When
defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
* semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
|
|
|
(when (and comment-start-skip
|
|
|
|
(re-search-backward comment-start-skip start t))
|
2009-08-29 19:45:47 +00:00
|
|
|
;; We found a comment that doesn't belong to the body
|
|
|
|
;; of a function.
|
|
|
|
(semantic-doc-snarf-comment-for-tag nosnarf)))
|
|
|
|
))
|
2015-02-21 20:00:16 -08:00
|
|
|
(define-obsolete-function-alias
|
|
|
|
'semantic-documentation-comment-preceeding-tag
|
|
|
|
'semantic-documentation-comment-preceding-tag
|
|
|
|
"25.1")
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
(defun semantic-doc-snarf-comment-for-tag (nosnarf)
|
|
|
|
"Snarf up the comment at POINT for `semantic-documentation-for-tag'.
|
|
|
|
Attempt to strip out comment syntactic sugar.
|
|
|
|
Argument NOSNARF means don't modify the found text.
|
2015-11-17 15:28:50 -08:00
|
|
|
If NOSNARF is `lex', then return the lex token."
|
Remove cedet items obsolete since 23.2
* lisp/cedet/semantic.el (semantic-toplevel-bovine-table)
(semantic-toplevel-bovine-cache)
(semantic-before-toplevel-bovination-hook)
(semantic-after-toplevel-bovinate-hook, semantic-init-hooks)
(semantic-init-mode-hooks, semantic-init-db-hooks)
(semantic-bovination-working-type, semantic-bovinate-toplevel)
(semantic-bovinate-region-until-error)
(semantic-bovinate-from-nonterminal-full):
* lisp/cedet/semantic/db-mode.el (semanticdb-mode-hooks):
* lisp/cedet/semantic/decorate/mode.el
(semantic-decorate-pending-decoration-hooks):
* lisp/cedet/semantic/edit.el
(semantic-edits-incremental-reparse-failed-hooks):
* lisp/cedet/semantic/fw.el (define-mode-overload-implementation):
* lisp/cedet/semantic/idle.el
(semantic-before-idle-scheduler-reparse-hooks)
(semantic-after-idle-scheduler-reparse-hooks):
(semantic-eldoc-current-symbol-info)
* lisp/cedet/semantic/imenu.el (semantic-imenu-expand-type-parts)
(semantic-imenu-bucketize-type-parts)
(semantic-imenu-expandable-token):
* lisp/cedet/semantic/java.el
(semantic-java-prototype-nonterminal):
* lisp/cedet/semantic/lex.el (semantic-flex-token-start)
(semantic-flex-token-end, semantic-flex-token-text)
(semantic-flex-make-keyword-table, semantic-flex-keyword-p)
(semantic-flex-keyword-put, semantic-flex-keyword-get)
(semantic-flex-map-keywords, semantic-flex-keywords)
(semantic-flex-buffer, semantic-flex-list, semantic-flex):
* lisp/cedet/semantic/tag-file.el (semantic-find-nonterminal)
(semantic-find-dependency):
* lisp/cedet/semantic/tag-ls.el (semantic-nonterminal-full-name)
(semantic-nonterminal-protection, semantic-nonterminal-abstract)
(semantic-nonterminal-leaf):
* lisp/cedet/semantic/tag.el (semantic-token-type-parent)
(semantic-tag-make-assoc-list, semantic-expand-nonterminal):
* lisp/cedet/semantic/util.el (semantic-file-token-stream)
(semantic-something-to-stream):
* lisp/cedet/semantic/wisent.el (wisent-lex-make-token-table):
Delete many items obsolete since Emacs 23.2.
* lisp/cedet/semantic.el (semantic--set-buffer-cache)
(semantic-fetch-tags): Don't run removed hooks
'semantic-after-toplevel-bovinate-hook' and
'semantic-before-toplevel-bovination-hook'.
* lisp/cedet/semantic/bovine/el.el: Remove reference to obsolete
variable 'define-mode-overload-implementation'.
* lisp/cedet/semantic/doc.el (semantic-doc-snarf-comment-for-tag):
Don't bind removed variable 'semantic-ignore-comments'.
* lisp/cedet/semantic/fw.el (semantic-overload-symbol-from-function)
(semantic-alias-obsolete, semantic-varalias-obsolete): Declare
obsolete in favor of standard Emacs 'define-obsolete-*-alias'.
* lisp/cedet/semantic/grammar.el (semantic-grammar-ASSOC): Don't
use obsolete names.
* lisp/cedet/semantic/tag-ls.el (semantic-tag-full-package)
(semantic-tag-full-name): Doc fixes.
* lisp/cedet/semantic/util.el (semantic-describe-buffer): Don't bind
removed variable 'semantic-after-toplevel-bovinate-hook'.
* lisp/cedet/semantic/lex.el (semantic-flex-tokens)
(semantic-flex-unterminated-syntax-end-function)
(semantic-flex-extensions, semantic-flex-syntax-modifications)
(semantic-ignore-comments, semantic-flex-enable-newlines)
(semantic-flex-enable-whitespace, semantic-flex-enable-bol)
(semantic-number-expression, semantic-flex-depth): Make unused
variables obsolete.
; * etc/NEWS: List removed items.
2020-08-14 13:40:29 +02:00
|
|
|
(let* ((semantic-lex-analyzer #'semantic-comment-lexer))
|
2009-08-29 19:45:47 +00:00
|
|
|
(if (memq nosnarf '(lex flex)) ;; keep `flex' for compatibility
|
|
|
|
(car (semantic-lex (point) (1+ (point))))
|
|
|
|
(let ((ct (semantic-lex-token-text
|
|
|
|
(car (semantic-lex (point) (1+ (point)))))))
|
|
|
|
(if nosnarf
|
|
|
|
nil
|
|
|
|
;; ok, try to clean the text up.
|
|
|
|
;; Comment start thingy
|
2019-04-05 08:00:09 -04:00
|
|
|
(while (string-match (concat "^\\s-*\\(?:" comment-start-skip "\\)")
|
|
|
|
ct)
|
2009-08-29 19:45:47 +00:00
|
|
|
(setq ct (concat (substring ct 0 (match-beginning 0))
|
|
|
|
(substring ct (match-end 0)))))
|
|
|
|
;; Arbitrary punctuation at the beginning of each line.
|
|
|
|
(while (string-match "^\\s-*\\s.+\\s-*" ct)
|
|
|
|
(setq ct (concat (substring ct 0 (match-beginning 0))
|
|
|
|
(substring ct (match-end 0)))))
|
|
|
|
;; End of a block comment.
|
|
|
|
(if (and (boundp 'block-comment-end)
|
|
|
|
block-comment-end
|
|
|
|
(string-match block-comment-end ct))
|
|
|
|
(setq ct (concat (substring ct 0 (match-beginning 0))
|
|
|
|
(substring ct (match-end 0)))))
|
|
|
|
;; In case it's a real string, STRIPIT.
|
|
|
|
(while (string-match "\\s-*\\s\"+\\s-*" ct)
|
|
|
|
(setq ct (concat (substring ct 0 (match-beginning 0))
|
2012-10-02 02:10:29 +08:00
|
|
|
(substring ct (match-end 0)))))
|
|
|
|
;; Remove comment delimiter at the end of the string.
|
Update from CEDET trunk.
* grammars/c.by (template-type): Add :template-specifier and
:typevar to capture extra details about the template.
(opt-post-fcn-modifiers): Splice in the found symbol into the
return value correctly.
(QUESTION): New punctuation.
(expression): Add ternary conditional support.
* grammars/scheme.by (MODULE): New token.
(scheme): Handle expanding the MODULE tag.
(scheme-list): Remove closeparen required match.
(scheme-in-list): Remove extraneous matches for DEFINE. Add
support for MODULE Simplify matching for code & make work.
(name-args, name-arg-list, name-arg-expand): Make it work.
* semantic.el (semantic-mode): Add/remove 3
completion-at-point-functions.
(semantic-completion-at-point-function): Removed.
(semantic-analyze-completion-at-point-function)
(semantic-analyze-notc-completion-at-point-function)
(semantic-analyze-nolongprefix-completion-at-point-function): New
completion at point functions.
* semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case
when comment-end is empty string.
* semantic/debug.el
(semantic-debug-parser-debugger-source): New buffer local
variable.
(semantic-debug-interface): Add 'nil' initform to overlays.
(semantic-debug-mode): Remove read-only tags from buffers on exit.
(semantic-debug): Add autoload cookie. Force the language
specific debugger to load.
* semantic/db.el (generic::semanticdb-full-filename): New generic
method to allow this method to be used on buffer names via an
associated database.
* semantic/symref.el
(semantic-symref-cleanup-recent-buffers-fcn): When cleaning up
buffers, don't clean up buffers that are being used (i.e., in a
window) when the hook fires.
(semantic-symref-recently-opened-buffers): New tracking variable.
(semantic-symref-cleanup-recent-buffers-fcn): New hook fcn.
(semantic-symref-result-get-tags): Move logic into
`semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via
the symref cleanup function in post-command-hook.
(semantic-symref-hit-to-tag-via-buffer): Logic that used to be
from above.
(semantic-symref-hit-to-tag-via-db): New.
* semantic/analyze.el:
(semantic-analyze-find-tag-sequence-default): If first entry in
sequence is the only one, apply tagclass filter.
(semantic-analyze-princ-sequence): Show slot even if empty.
(semantic-analyze-find-tag-sequence)
(semantic-analyze-find-tag-sequence-default): Add flags argument.
Add support for forcing the final entry of the sequence to be of
class variable.
(semantic-analyze-find-tag): Fix bug where input class filter was
ignored if there was a typecache match.
(semantic-analyze-current-context-default): For assignments, the
assignee now must be of class variable.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): Add
'no-longprefix' flag. When used, the prefix and prefixtypes are
shortened to just the last symbol.
* semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from
'hideif', and push to the parser warning stack.
(semantic-lex-cpp-define): When a comment is at the end of a
macro, do not subtract an extra 1 from the found position. Fixes
bug with: #define foo (a)/**/ adding an extra ')' to the stream.
* semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow
symbols to be one char long.
* semantic/bovine/grammar.el
(bovine-grammar-calculate-source-on-path): New.
(bovine-grammar-setupcode-builder): Use it.
* ede.el (ede/detect): New require.
(ede-version): Bump version
(ede-initialize-state-current-buffer): Use new
`ede-detect-directory-for-project' to detect projects first
instead of depending on currente dir only.
(ede-delete-project-from-global-list): New.
(ede-flush-deleted-projects): Use above.
(ede-check-project-query-fcn): New variable
(ede-check-project-directory): Use above when querying the user.
Added to support unit testing of this security measure.
(ede-initialize-state-current-buffer): Use
`ede-directory-project-cons' instead of the -detect- fcn to take
advantage of the cache. Pass found project into
`ede-load-project-file'.
(ede-load-project-file): Add new input DETECTIN.
(ede-rescan-toplevel): Get the proj root a better way.
(ede-load-project-file): Return the loaded object. When asking
for existing project, ask for an exact match.
(ede-initialize-state-current-buffer): Simplify some conditional
logic.
(ede-load-project-file): Simplify conditional logic.
(ede-global-list-sanity-check): New Testing fcn.
(ede-parent-project): Replace old code with call to faster
`ede-find-subproject-for-directory'.
(ede-load-project-file): Use
`ede-directory-get-toplevel-open-project' instead of above
deleted. Rename "pfc" to "autoloader". Use
`ede-directory-project-cons' to detect a project. Delete no
project found case where we search up the tree.
* ede/auto.el (ede-project-autoload): Fix doc typo. Add
`:root-only' slot.
(ede-auto-load-project): Doc update: warn to not use.
(ede-dir-to-projectfile): Deleted.
(ede-project-autoload-dirmatch): Add subdir-only slot. Make
configdatastash unbound by default.
(ede-do-dirmatch): If subdir-only is true, then don't allow exact
matches. Account for configdatastash as unbound. Assume value of
nil means no tool installed. Make sure loaded path matches from
beginning. Stash the regexp, not the raw string.
(ede-project-class-files): Note that makefile and automake are not
root only.
(ede-auto-detect-in-dir): New (for use with `ede/detect.el').
(ede-project-dirmatch-p): Deleted.
(ede-project-root-directory): Remove body, return nil.
(ede-project-autoload): :proj-root-dirmatch can be null & doc fix.
(ede-auto-detect-in-dir): If there is no :proj-file, check for a
dirmatch.
* ede/generic.el (ede/config): Replace require of ede.
(ede-generic-new-autoloader): Generic projects are now safe by
default. Note this is NOT a root only project.
(project-rescan, ede-project-root, ede-generic-target-java)
(ede-java-classpath, ede-find-subproject-for-directory): New.
(ede-enable-generic-projects): Add new autoloaders for git, bzr,
hg, sv, CVS.
(ede-generic-vc-project)
(ede-generic-vc-project::ede-generic-setup-configuration): New.
(ede-generic-config): Remove slots: c-include-path,
c-preprocessor-table, c-preprocessor-files, classpath,
build-command, debug-command, run command. Inherit from
ede-extra-config-build, ede-extra-config-program. Make
run-command :value match :custom so only strings are accepted.
Add some more :group slot specifiers.
(ede-generic-project): Add mixins `ede-project-with-config-c' and
`ede-project-with-config-java'. Inherit from
`ede-project-with-config-build',
`ede-project-with-config-program'. Subclass
`ede-project-with-config'. Remove duplication from new baseclass.
(ede-generic-target): Inherit from `ede-target-with-config-build',
`ede-target-with-config-program'. Subclass `ede-target-with-config'.
(ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'.
(ede-generic-target-java): Add mixin `ede-target-with-config-java'.
(ede-preprocessor-map, ede-system-include-path)
(edejava-classpath): Deleted, moved to config.el.
(project-compile-project, project-compile-target)
(project-debug-target, project-run-target): Deleted.
(ede-generic-get-configuration, ede-generic-setup-configuration)
(ede-commit-project, project-rescan)
(ede-generic-project::ede-customize)
(ede-generic-target::ede-customize)
(ede-generic-config::eieio-done-customizing)
(ede-generic-config::ede-commit): Deleted. Subsumed by new
baseclass.
(ede-preprocessor-map, ede-system-include-path)
(project-debug-target, project-run-target): Call new
`ede-config-get-configuration' instead of old version.
(ede-generic-load): Do not add to global list here.
* ede/files.el (ede-find-project-root)
(ede-files-find-existing)
(ede-directory-get-toplevel-open-project-new): Deleted.
(ede-project-root-directory): Use `ede-project-root' first.
(ede-project-directory-remove-hash)
(ede--directory-project-from-hash)
(ede--directory-project-add-description-to-hash): Rename to make
internal symbols (via --). Expand input dir first.
(ede-directory-project-p): Doc fix (note obsoleted.)
(ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'.
(ede-toplevel-project): Doc Fix. Delete commented out old code.
Simplify returning result from ede-detect-directory-for-project.
(ede-directory-get-open-project): Support when
inodes are disabled. If disabled to str compare on root project.
(ede-directory-get-toplevel-open-project): Enabled nested
projects. When doing directory name matching, save the 'short'
version of an answer (non-exact match) and eventually select the
shortest answer at the end. Expand the filename of tested
projects. Better support for when inodes are disabled. Add
'exact' option so that it will return a project that is an exact
match.
(ede-find-subproject-for-directory): Small optimization to run
`file-truename' less often.
(ede-directory-project-p): Move content, then use
`ede-directory-project-cons'. Use
`ede-detect-directory-for-project', replacing old detection loop.
(ede-directory-project-cons): New, from above.
(ede-toplevel-project): Toss old scanning code. Use
`ede-detect-directory-for-project' instead.
(ede-directory-get-toplevel-open-project-new): New.
* ede/linux.el (ede-linux-project-root): Deleted.
(ede-project-autoload): Remove dirmatch entry - it is no longer
needed.
* lisp/cedet/ede/proj.el (project-rescan): Replace direct
manipulation of `ede-projects' with equivalent and better
functions.
(ede-proj-load): Replace call to test if dir has project to
explicity ask filesystem if Project.ede is there.
* ede/config.el:
* ede/detect.el: New files.
* ede/project-am.el (project-run-target): Add "./" to program to
run for systems where '.' isn't in PATH.
(project-am-load): Remove old code regarding `ede-constructing'.
Just read in the makefiles.
* ede/linux.el (ede-linux-load): Do not add to global list here.
Don't check for existing anymore.
(project-rescan): New.
(ede-linux-project-list, ede-linux-file-existing): Deleted.
(ede-linux-project-root): Delete body. Need symbol for autoloads
for now.
(ede-linux-project): No longer instance tracker.
(ede-project-autoload): Don't provide :proj-root
* ede/emacs.el (ede-emacs-load): Do not add project to global list
here. Don't look for existing first.
(ede-project-autoload): Remove dirmatch entry - it is no longer
needed. Don't provide proj-root anymore.
(ede-emacs-project-list, ede-emacs-file-existing): Delete.
(ede-emacs-project-root): Remove body (need symbol for loaddefs
still).
(ede-emacs-project): Do not instance track anymore.
* ede/cpp-root.el (initialize-instance): Remove commented code.
Add note about why we are adding the project to the master list.
Make sure if we are replacing a prev version, remove from global
list.
(ede-cpp-root-file-existing)
(ede-cpp-root-project-file-for-dir)
(ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load)
(ede-project-autoload cpp-root): Deleted.
(ede-project-root-directory): Return :directory instead of
calculating from :file.
(project-rescan): New.
* ede/base.el (ede-toplevel): Only use buffer cached value if
subproj not passed in.
* srecode/java.el (srecode-semantic-handle-:java): Fix case when
an EDE project didn't support java paths.
* lisp/cedet/ede/proj-elisp.el
(ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer
after saving modified elisp-comp script, as to avoid "file has
changed on disk; really edit the buffer" questions when script
gets rewritten.
* emacs-lisp/eieio-custom.el (eieio-customize-object): Set
eieio-cog (current group) to g, which is an improved form of input
group.
* srecode/doc-cpp.srt (mode): Set to c mode so this works with
both C and C++.
2014-11-10 01:04:30 +01:00
|
|
|
(when (and comment-end (not (string= comment-end ""))
|
|
|
|
(string-match (concat (regexp-quote comment-end) "$") ct))
|
2012-10-02 02:10:29 +08:00
|
|
|
(setq ct (substring ct 0 (match-beginning 0)))))
|
2009-08-29 19:45:47 +00:00
|
|
|
;; Now return the text.
|
|
|
|
ct))))
|
|
|
|
|
|
|
|
(provide 'semantic/doc)
|
|
|
|
|
2009-09-02 04:37:10 +00:00
|
|
|
;; Local variables:
|
|
|
|
;; generated-autoload-file: "loaddefs.el"
|
2009-09-05 01:00:36 +00:00
|
|
|
;; generated-autoload-load-name: "semantic/doc"
|
2009-09-02 04:37:10 +00:00
|
|
|
;; End:
|
|
|
|
|
2009-08-31 02:16:34 +00:00
|
|
|
;;; semantic/doc.el ends here
|