mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-31 09:20:54 -08:00
* lisp/emacs-lisp: * emacs-lisp/eieio.el (eieio--defalias, eieio-hook) (eieio-error-unsupported-class-tags, eieio-skip-typecheck) (eieio-optimize-primary-methods-flag, eieio-initializing-object) (eieio-unbound, eieio-default-superclass) (eieio--define-field-accessors, method-static, method-before) (method-primary, method-after, method-num-lists) (method-generic-before, method-generic-primary) (method-generic-after, method-num-slots) (eieio-specialized-key-to-generic-key) (eieio--check-type, class-v, class-p) (eieio-class-name, define-obsolete-function-alias) (eieio-class-parents-fast, eieio-class-children-fast) (same-class-fast-p, class-constructor, generic-p) (generic-primary-only-p, generic-primary-only-one-p) (class-option-assoc, class-option, eieio-object-p) (class-abstract-p, class-method-invocation-order) (eieio-defclass-autoload-map, eieio-defclass-autoload) (eieio-class-un-autoload, eieio-defclass) (eieio-eval-default-p, eieio-perform-slot-validation-for-default) (eieio-add-new-slot, eieio-copy-parents-into-subclass) (eieio--defgeneric-init-form, eieio-defgeneric-form) (eieio-defgeneric-reset-generic-form) (eieio-defgeneric-form-primary-only) (eieio-defgeneric-reset-generic-form-primary-only) (eieio-defgeneric-form-primary-only-one) (eieio-defgeneric-reset-generic-form-primary-only-one) (eieio-unbind-method-implementations) (eieio--defmethod, eieio--typep) (eieio-perform-slot-validation, eieio-validate-slot-value) (eieio-validate-class-slot-value, eieio-barf-if-slot-unbound) (eieio-oref, eieio-oref-default, eieio-default-eval-maybe) (eieio-oset, eieio-oset-default, eieio-slot-originating-class-p) (eieio-slot-name-index, eieio-class-slot-name-index) (eieio-set-defaults, eieio-initarg-to-attribute) (eieio-attribute-to-initarg, eieio-c3-candidate) (eieio-c3-merge-lists, eieio-class-precedence-c3) (eieio-class-precedence-dfs, eieio-class-precedence-bfs) (eieio-class-precedence-list, eieio-generic-call-methodname) (eieio-generic-call-arglst, eieio-generic-call-key) (eieio-generic-call-next-method-list) (eieio-pre-method-execution-functions, eieio-generic-call) (eieio-generic-call-primary-only, eieiomt-method-list) (eieiomt-optimizing-obarray, eieiomt-install) (eieiomt-add, eieiomt-next, eieiomt-sym-optimize) (eieio-generic-form, eieio-defmethod, make-obsolete) (eieio-defgeneric, make-obsolete): Moved to eieio-core.el (defclass): Remove `eval-and-compile' from macro. (call-next-method, shared-initialize): Instead of using `scoped-class' variable, use new eieio--scoped-class, and eieio--with-scoped-class. (initialize-instance): Rename local variable 'scoped-class' to 'this-class' to remove ambiguitity from old global. * emacs-lisp/eieio-core.el: New file. Derived from key parts of eieio.el. (eieio--scoped-class-stack): New variable (eieio--scoped-class): New fcn (eieio--with-scoped-class): New scoping macro. (eieio-defclass): Use pushnew instead of add-to-list. (eieio-defgeneric-form-primary-only-one, eieio-oset-default) (eieio-slot-name-index, eieio-set-defaults, eieio-generic-call) (eieio-generic-call-primary-only, eieiomt-add): Instead of using `scoped-class' variable, use new eieio--scoped-class, and eieio--with-scoped-class. * emacs-lisp/eieio-base.el (cl-lib): Require during compile. * admin/grammars: * grammars/srecode-template.wy (variable): Accept a single number as a variable value. Allows the 'priority' to be set to a number. (wisent-srecode-template-lexer): Move number up so it can be created. * etc/srecode: * srecode/c.srt (header_guard): Add :c parameter so it works standalone * lisp/cedet: * 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. * 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. * semantic/complete.el (semantic-displayor-show-request): Fix which slot in obj is set to the max tags.
274 lines
6.2 KiB
Text
274 lines
6.2 KiB
Text
;;; srecode-template.wy --- Semantic Recoder Template parser
|
|
|
|
;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
|
|
|
;; Author: Eric Ludlam <zappo@gnu.org>
|
|
;; Keywords: syntax
|
|
;; X-RCS: $Id: srecode-template.wy,v 1.10 2009-01-09 23:01:54 zappo Exp $
|
|
|
|
;; 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
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
;;; Commentary:
|
|
;;
|
|
;; Parser for the Semantic Recoder template language
|
|
;;
|
|
;; Semantic Recoder templates are based on Google Templates
|
|
;; and are at the bottom of the Semantic Recoder API.
|
|
|
|
%package srecode-template-wy
|
|
%provide srecode/srt-wy
|
|
|
|
%languagemode srecode-mode
|
|
|
|
%start template_file
|
|
|
|
;;; KEYWORDS
|
|
%type <keyword>
|
|
%keyword SET "set"
|
|
%put SET summary "set <name> <value>"
|
|
%keyword SHOW "show"
|
|
%put SHOW summary "show <name> ; to show a section"
|
|
%keyword MACRO "macro"
|
|
%put MACRO summary "... macro \"string\" ..."
|
|
%keyword CONTEXT "context"
|
|
%put CONTEXT summary "context <name>"
|
|
%keyword TEMPLATE "template"
|
|
%put TEMPLATE summary "template <name>\\n <template definition>"
|
|
%keyword SECTIONDICTIONARY "sectiondictionary"
|
|
%put SECTIONDICTIONARY summary "sectiondictionary <name>\\n <dictionary entries>"
|
|
|
|
%keyword SECTION "section"
|
|
%put SECTION summary
|
|
"section <name>\\n <dictionary entries>\\n end"
|
|
|
|
%keyword END "end"
|
|
%put END summary
|
|
"section ... end"
|
|
|
|
%keyword PROMPT "prompt"
|
|
%keyword DEFAULT "default"
|
|
%keyword DEFAULTMACRO "defaultmacro"
|
|
%keyword READ "read"
|
|
%put { PROMPT DEFAULT DEFAULTMACRO READ } summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]"
|
|
%keyword BIND "bind"
|
|
%put BIND summary "bind \"<letter>\""
|
|
|
|
;;; Punctuation Types
|
|
%type <punctuation> syntax "\\s.+"
|
|
%type <newline>
|
|
%token <newline> newline
|
|
|
|
%token <separator> TEMPLATE_BLOCK "^----"
|
|
|
|
;;; Bland default types
|
|
%type <property> syntax ":\\(\\w\\|\\s_\\)*"
|
|
%token <property> property
|
|
|
|
%type <symbol>
|
|
%token <symbol> symbol
|
|
|
|
%type <string>
|
|
%token <string> string
|
|
|
|
%type <number>
|
|
%token <number> number
|
|
|
|
%%
|
|
|
|
template_file
|
|
: newline ( )
|
|
| context
|
|
| prompt
|
|
| variable
|
|
| template
|
|
;
|
|
|
|
context
|
|
: CONTEXT symbol newline
|
|
(TAG $2 'context)
|
|
;
|
|
|
|
prompt
|
|
: PROMPT symbol string opt-default-fcn opt-read-fcn newline
|
|
(TAG $2 'prompt :text (read $3) :default $4 :read $5)
|
|
;
|
|
|
|
opt-default-fcn
|
|
: DEFAULT symbol
|
|
(progn (read $2))
|
|
| DEFAULT string
|
|
(progn (read $2))
|
|
| DEFAULTMACRO string
|
|
(progn (cons 'macro (read $2)))
|
|
| ()
|
|
;
|
|
|
|
opt-read-fcn
|
|
: READ symbol
|
|
(progn (read $2))
|
|
| ()
|
|
;
|
|
|
|
variable
|
|
: SET symbol insertable-string-list newline
|
|
(VARIABLE-TAG $2 nil $3)
|
|
| SET symbol number newline
|
|
;; This so a common error w/ priority works.
|
|
;; Note that "number" still has a string value in the lexer.
|
|
(VARIABLE-TAG $2 nil (list $3))
|
|
| SHOW symbol newline
|
|
(VARIABLE-TAG $2 nil t)
|
|
;
|
|
|
|
insertable-string-list
|
|
: insertable-string
|
|
(list $1)
|
|
| insertable-string-list insertable-string
|
|
(append $1 (list $2))
|
|
;
|
|
|
|
insertable-string
|
|
: string
|
|
(read $1)
|
|
| MACRO string
|
|
(cons 'macro (read $2))
|
|
;
|
|
|
|
template
|
|
: TEMPLATE templatename opt-dynamic-arguments newline
|
|
opt-string
|
|
section-dictionary-list
|
|
TEMPLATE_BLOCK newline
|
|
opt-bind
|
|
(FUNCTION-TAG $2 nil $3 :documentation $5 :code $7
|
|
:dictionaries $6 :binding $9 )
|
|
;
|
|
|
|
templatename
|
|
: symbol
|
|
| PROMPT
|
|
| CONTEXT
|
|
| TEMPLATE
|
|
| DEFAULT
|
|
| MACRO
|
|
| DEFAULTMACRO
|
|
| READ
|
|
| SET
|
|
;
|
|
|
|
opt-dynamic-arguments
|
|
: property opt-dynamic-arguments
|
|
(cons $1 $2)
|
|
| ()
|
|
;
|
|
|
|
opt-string
|
|
: string newline
|
|
( read $1 )
|
|
| ()
|
|
;
|
|
|
|
section-dictionary-list
|
|
: ;; empty
|
|
()
|
|
| section-dictionary-list flat-section-dictionary
|
|
(append $1 (list $2))
|
|
| section-dictionary-list section-dictionary
|
|
(append $1 (list $2))
|
|
;
|
|
|
|
flat-section-dictionary
|
|
: SECTIONDICTIONARY string newline
|
|
flat-dictionary-entry-list
|
|
(cons (read $2) $4)
|
|
;
|
|
|
|
flat-dictionary-entry-list
|
|
: ;; empty
|
|
()
|
|
| flat-dictionary-entry-list flat-dictionary-entry
|
|
(append $1 $2)
|
|
;
|
|
|
|
flat-dictionary-entry
|
|
: variable
|
|
(EXPANDTAG $1)
|
|
;
|
|
|
|
section-dictionary
|
|
: SECTION string newline
|
|
dictionary-entry-list
|
|
END newline
|
|
(cons (read $2) $4)
|
|
;
|
|
|
|
dictionary-entry-list
|
|
: ;; empty
|
|
()
|
|
| dictionary-entry-list dictionary-entry
|
|
(append $1 $2)
|
|
;
|
|
|
|
dictionary-entry
|
|
: variable
|
|
(EXPANDTAG $1)
|
|
| section-dictionary
|
|
(list $1)
|
|
;
|
|
|
|
opt-bind
|
|
: BIND string newline
|
|
( read $2 )
|
|
| ()
|
|
;
|
|
|
|
%%
|
|
(define-lex-simple-regex-analyzer srecode-template-property-analyzer
|
|
"Detect and create a dynamic argument properties."
|
|
":\\(\\w\\|\\s_\\)*" 'property 0)
|
|
|
|
(define-lex-regex-analyzer srecode-template-separator-block
|
|
"Detect and create a template quote block."
|
|
"^----\n"
|
|
(semantic-lex-push-token
|
|
(semantic-lex-token
|
|
'TEMPLATE_BLOCK
|
|
(match-end 0)
|
|
(semantic-lex-unterminated-syntax-protection 'TEMPLATE_BLOCK
|
|
(goto-char (match-end 0))
|
|
(re-search-forward "^----$")
|
|
(match-beginning 0))))
|
|
(setq semantic-lex-end-point (point)))
|
|
|
|
|
|
(define-lex wisent-srecode-template-lexer
|
|
"Lexical analyzer that handles SRecode Template buffers.
|
|
It ignores whitespace, newlines and comments."
|
|
semantic-lex-newline
|
|
semantic-lex-ignore-whitespace
|
|
semantic-lex-ignore-newline
|
|
semantic-lex-ignore-comments
|
|
srecode-template-separator-block
|
|
srecode-template-wy--<keyword>-keyword-analyzer
|
|
srecode-template-property-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
|
|
)
|
|
|
|
;;; srecode-template.wy ends here
|