Mercurial > emacs
view lisp/cedet/srecode/expandproto.el @ 107439:ed20cbe62401
Remove support for Solaris on PPC and for old versions.
* s/sol2-6.h: Add the contents of s/sol-2.3.h, s/sol-2.4.h, s/sol-2.5.h.
(LD_SWITCH_SYSTEM, USE_MMAP_FOR_BUFFERS): Remove #defines/#undef
that cancel each other.
* s/sol2-3.h:
* s/sol2-4.h:
* s/sol2-5.h: Remove.
* m/ibmrs6000.h: Remove code for USG5_4, this file is only used on AIX.
(NO_REMAP): Remove, unused.
(UNEXEC): Move definition ...
* s/aix4-2.h (UNEXEC): ... here.
* configure.in: Remove support for Solaris on PPC and for old versions.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Fri, 19 Mar 2010 22:52:55 -0700 |
parents | 1d1d5d9bd884 |
children | 376148b31b5e |
line wrap: on
line source
;;; srecode/expandproto.el --- Expanding prototypes. ;; Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam <eric@siege-engine.com> ;; 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: ;; ;; Methods for expanding a prototype into an implementation. (require 'ring) (require 'semantic) (require 'semantic/analyze) (require 'semantic/senator) (require 'srecode/insert) (require 'srecode/dictionary) (declare-function semantic-brute-find-tag-by-attribute-value "semantic/find") ;;; Code: (defcustom srecode-expandproto-template-file-alist '( ( c++-mode . "srecode-expandproto-cpp.srt" ) ) ;; @todo - Make this variable auto-generated from the Makefile. "Associate template files for expanding prototypes to a major mode." :group 'srecode :type '(repeat (cons (sexp :tag "Mode") (sexp :tag "Filename")) )) ;;;###autoload (defun srecode-insert-prototype-expansion () "Insert get/set methods for the current class." (interactive) (srecode-load-tables-for-mode major-mode) (srecode-load-tables-for-mode major-mode srecode-expandproto-template-file-alist) (if (not (srecode-table)) (error "No template table found for mode %s" major-mode)) (let ((proto ;; Step 1: Find the prototype, or prototype list to expand. (srecode-find-prototype-for-expansion))) (if (not proto) (error "Could not find prototype to expand")) ;; Step 2: Insert implementations of the prototypes. )) (defun srecode-find-prototype-for-expansion () "Find a prototype to use for expanding into an implementation." ;; We may find a prototype tag in one of several places. ;; Search in order of logical priority. (let ((proto nil) ) ;; 1) A class full of prototypes under point. (let ((tag (semantic-current-tag))) (when tag (when (not (semantic-tag-of-class-p tag 'type)) (setq tag (semantic-current-tag-parent)))) (when (and tag (semantic-tag-of-class-p tag 'type)) ;; If the current class has prototype members, then ;; we will do the whole class! (require 'semantic/find) (if (semantic-brute-find-tag-by-attribute-value :prototype t (semantic-tag-type-members tag)) (setq proto tag))) ) ;; 2) A prototype under point. (when (not proto) (let ((tag (semantic-current-tag))) (when (and tag (and (semantic-tag-of-class-p tag 'function) (semantic-tag-get-attribute tag :prototype))) (setq proto tag)))) ;; 3) A tag in the kill ring that is a prototype (when (not proto) (if (ring-empty-p senator-tag-ring) nil ;; Not for us. (let ((tag (ring-ref senator-tag-ring 0)) ) (when (and tag (or (and (semantic-tag-of-class-p tag 'function) (semantic-tag-get-attribute tag :prototype)) (and (semantic-tag-of-class-p tag 'type) (require 'semantic/find) (semantic-brute-find-tag-by-attribute-value :prototype t (semantic-tag-type-members tag)))) ) (setq proto tag)) ))) proto)) (provide 'srecode/expandproto) ;; Local variables: ;; generated-autoload-file: "loaddefs.el" ;; generated-autoload-load-name: "srecode/expandproto" ;; End: ;; arch-tag: f0371b5f-9bec-46a1-9b5d-8dff0e897426 ;;; srecode/expandproto.el ends here