diff options
author | Eric M. Ludlam <zappo@gnu.org> | 2010-09-20 22:42:53 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2010-09-20 22:42:53 -0400 |
commit | cb85c0d8be968992eef85e633133f65a3996830d (patch) | |
tree | 48fcc9800f8ba92bd03ca769466fbb202a09a5f5 /lisp/cedet/ede/autoconf-edit.el | |
parent | 9e0d4f9ef1cd4d7149c84475df5cef4d408743b6 (diff) | |
download | emacs-cb85c0d8be968992eef85e633133f65a3996830d.tar.gz |
Synch EDE to CEDET 1.0.
* cedet-idutils.el (cedet-idutils-make-command): New option.
(cedet-idutils-mkid-call):
(cedet-idutils-create/update-database): New functions.
* cedet-cscope.el (cedet-cscope-create):
(cedet-cscope-create/update-database): New functions.
(cedet-cscope-support-for-directory): Make interactive.
* cedet-global.el (cedet-global-gtags-command): New option.
(cedet-gnu-global-gtags-call)
(cedet-gnu-global-create/update-database): New functions.
* ede.el (ede-save-cache): Fix recentf-exclude expression.
(ede-make-dist): Always use toplevel project.
(ede-buffer-object): If we fail to find an object in the current
project, loop upward looking for a match. If no target is found,
use most local project.
(ede-buffer-belongs-to-target-p)
(ede-buffer-belongs-to-project-p): New functions.
(ede-initialize-state-current-buffer): New function.
(ede-target-forms-menu, ede-project-buffers): Use them.
(ede-minor-mode, ede-reset-all-buffers): Use it.
(project-interactive-select-target, project-add-file): Don't use
ede-project-force-load.
(ede-buffer-object): New arg PROJSYM.
(ede-minor-mode): Remove ede-directory-project-p test.
(ede-initialize-state-current-buffer): Don't test for
ede-directory-project-p if there is a matching open project.
(ede-customize-forms-menu): Prevent error if there is no project.
(ede-load-project-file): Set ede-constructing to the thing being
constructed, instead of t.
(ede-project-force-load): Deleted.
* ede/base.el:
* ede/auto.el:
* ede/custom.el: New files.
* ede/autoconf-edit.el (autoconf-find-last-macro)
(autoconf-parameters-for-macro): Parse multiline parameters of
macros. Optionally ignore case and at bol for macro.
(autoconf-parameter-strip): Use greedy match for newlines.
(autoconf-new-automake-string): Deleted.
(autoconf-new-program): Use SRecode to fill an empty file.
* ede/cpp-root.el (ede-create-lots-of-projects-under-dir): New
function.
* ede/files.el (ede-flush-project-hash): New command.
(ede-convert-path): Add optional PROJECT arg.
(ede-directory-project-p): Obey ".ede-ignore".
(ede-expand-filename-local)
(ede-expand-filename-impl-via-subproj): New methods.
(ede-expand-filename-impl): Use them.
(ede-project-root, ede-project-root-directory): Move to
ede/auto.el.
* ede/locate.el (ede-locate-flush-hash):
(ede-locate-create/update-root-database): New methods.
(initialize-instance): Use ede-locate-flush-hash.
* ede/pmake.el (ede-proj-makefile-insert-variables): If this is
the top project and not a metasubproject, set TOP to CURDIR.
(ede-proj-makefile-insert-variables): Output a target's object
list whether or not the vars are already in the Makefile.
(ede-pmake-insert-variable-once): New macro.
* ede/project-am.el (project-am-with-makefile-current): Add
recentf-exclude.
(project-am-load-makefile): Obey an optional suggested name.
(project-am-expand-subdirlist): New function.
(project-am-makefile::project-rescan): Use it. Combine SUBDIRS
and DIST_SUBDIRS.
(project-am-meta-type-alist): A list to scan better Makefile.am
(project-am-scan-for-targets): Scan also over
project-am-meta-type-alist.
(ede-system-include-path): Simple implementation.
(ede-find-target): Deleted. EDE core takes care of this.
(ede-buffer-mine): Create the searched filename as relative.
(project-am-load): Simplify, using autoconf-edit.
(project-am-extract-package-info): Fix separators.
* ede/proj.el (project-run-target): New method.
(project-make-dist, project-compile-project): Use
ede-proj-automake-p to determine which kind of compile to use.
(project-rescan): Call ede-load-project-file.
(ede-buffer-mine): Add more file names that belong to the project.
(ede-proj-compilers): Improve error message.
* ede/proj-obj.el (ede-ld-linker): Use the LDDEPS variable.
(ede-source-c++): Add more C++ extensions.
(ede-proj-target-makefile-objectcode): Quote initforms. Support
lex and yacc.
* ede/proj-prog.el (ede-proj-makefile-insert-rules): Removed.
(ede-proj-makefile-insert-variables): New, add LDDEPS.
(ede-proj-makefile-insert-automake-post-variables): Add LDADD
variable. Use ldlibs-local slot. Add a -l to ldlibs strings.
(ede-proj-target-makefile-program): Swap order of two slots so
they show up in the same order as in the command line.
(ede-proj-target-makefile-program): Add ldlibs-local slot.
* ede/proj-shared.el (ede-g++-libtool-shared-compiler): Fix
inference rule to use cpp files.
(ede-proj-target-makefile-shared-object): Quote initforms.
* ede/proj-misc.el (ede-proj-target-makefile-miscelaneous):
* ede/proj-info.el (ede-proj-target-makefile-info):
* ede/proj-aux.el (ede-proj-target-aux):
* ede/proj-archive.el (ede-proj-target-makefile-archive):
* ede/proj-elisp.el (ede-proj-target-elisp)
(ede-proj-target-elisp-autoloads): Quote initforms.
* ede/srecode.el (ede-srecode-setup): Load autoconf templates.
* ede/shell.el (ede-shell-buffer): Fix buffer name.
* ede/pconf.el (ede-proj-configure-synchronize): If user events
occur while waiting for the compile process to finish, pull them
in and discard those events.
Diffstat (limited to 'lisp/cedet/ede/autoconf-edit.el')
-rw-r--r-- | lisp/cedet/ede/autoconf-edit.el | 64 |
1 files changed, 30 insertions, 34 deletions
diff --git a/lisp/cedet/ede/autoconf-edit.el b/lisp/cedet/ede/autoconf-edit.el index 3973fc7f6af..df976bf17af 100644 --- a/lisp/cedet/ede/autoconf-edit.el +++ b/lisp/cedet/ede/autoconf-edit.el @@ -27,20 +27,8 @@ ;;; Code: (require 'autoconf) - -(defvar autoconf-new-automake-string - "dnl Process this file with autoconf to produce a configure script - -AC_INIT(%s) -AM_INIT_AUTOMAKE([%s], 0) -AM_CONFIG_HEADER(config.h) - -dnl End the configure script. -AC_OUTPUT(Makefile, [date > stamp-h] )\n" - "This string is used to initialize a new configure.in. -The default is designed to be used with automake. -The first %s will be filled with the test file. -The second %s will be filled with the program name.") +(declare-function ede-srecode-setup "ede/srecode") +(declare-function ede-srecode-insert "ede/srecode") (defun autoconf-new-program (rootdir program testfile) "Initialize a new configure.in in ROOTDIR for PROGRAM using TESTFILE. @@ -49,6 +37,7 @@ PROGRAM is the program to be configured. TESTFILE is the file used with AC_INIT. configure the initial configure script using `autoconf-new-automake-string'" (interactive "DRoot Dir: \nsProgram: \nsTest File: ") + (require 'ede/srecode) (if (bufferp rootdir) (set-buffer rootdir) (let ((cf1 (expand-file-name "configure.in" rootdir)) @@ -62,7 +51,12 @@ configure the initial configure script using `autoconf-new-automake-string'" (find-file cf2))) ;; Note, we only ask about overwrite if a string/path is specified. (erase-buffer) - (insert (format autoconf-new-automake-string testfile program))) + (ede-srecode-setup) + (ede-srecode-insert + "file:ede-empty" + "TEST_FILE" testfile + "PROGRAM" program) + ) (defvar autoconf-preferred-macro-order '("AC_INIT" @@ -151,42 +145,44 @@ From the autoconf manual: (beginning-of-line) (looking-at (concat "\\(A[CM]_" macro "\\|" macro "\\)")))) -(defun autoconf-find-last-macro (macro) +(defun autoconf-find-last-macro (macro &optional ignore-bol) "Move to the last occurrence of MACRO in FILE, and return that point. The last macro is usually the one in which we would like to insert more items such as CHECK_HEADERS." - (let ((op (point))) + (let ((op (point)) (atbol (if ignore-bol "" "^"))) (goto-char (point-max)) - (if (re-search-backward (concat "^" (regexp-quote macro) "\\s-*\\((\\|$\\)") nil t) + (if (re-search-backward (concat atbol (regexp-quote macro) "\\s-*\\((\\|$\\)") nil t) (progn - (beginning-of-line) + (unless ignore-bol (beginning-of-line)) (point)) (goto-char op) nil))) (defun autoconf-parameter-strip (param) "Strip the parameter PARAM of whitespace and miscellaneous characters." - (when (string-match "^\\s-*\\[?\\s-*" param) + ;; force greedy match for \n. + (when (string-match "\\`\n*\\s-*\\[?\\s-*" param) (setq param (substring param (match-end 0)))) - (when (string-match "\\s-*\\]?\\s-*$" param) + (when (string-match "\\s-*\\]?\\s-*\\'" param) (setq param (substring param 0 (match-beginning 0)))) param) -(defun autoconf-parameters-for-macro (macro) +(defun autoconf-parameters-for-macro (macro &optional ignore-bol ignore-case) "Retrieve the parameters to MACRO. Returns a list of the arguments passed into MACRO as strings." - (save-excursion - (when (autoconf-find-last-macro macro) - (forward-sexp 1) - (mapcar - #'autoconf-parameter-strip - (when (looking-at "(") - (let* ((start (+ (point) 1)) - (end (save-excursion - (forward-sexp 1) - (- (point) 1))) - (ans (buffer-substring-no-properties start end))) - (split-string ans "," t))))))) + (let ((case-fold-search ignore-case)) + (save-excursion + (when (autoconf-find-last-macro macro ignore-bol) + (forward-sexp 1) + (mapcar + #'autoconf-parameter-strip + (when (looking-at "(") + (let* ((start (+ (point) 1)) + (end (save-excursion + (forward-sexp 1) + (- (point) 1))) + (ans (buffer-substring-no-properties start end))) + (split-string ans "," t)))))))) (defun autoconf-position-for-macro (macro) "Position the cursor where a new MACRO could be inserted. |