X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/cb3619679085d0c69cecfed60c0763da3a3af9a6..8d9cc0b7ea1893059df8788129998e9a71ec07f3:/lisp/progmodes/cmacexp.el diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el index 28d988961a..4722f0ca4a 100644 --- a/lisp/progmodes/cmacexp.el +++ b/lisp/progmodes/cmacexp.el @@ -1,6 +1,7 @@ ;;; cmacexp.el --- expand C macros in a region -;; Copyright (C) 1992, 1994, 1996, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1994, 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +;; Free Software Foundation, Inc. ;; Author: Francesco Potorti` ;; Adapted-By: ESR @@ -10,7 +11,7 @@ ;; 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 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -20,8 +21,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -92,6 +93,9 @@ (provide 'cmacexp) +(defvar msdos-shells) + + (defgroup c-macro nil "Expand C macros in a region." :group 'c) @@ -108,18 +112,23 @@ :group 'c-macro) (defcustom c-macro-preprocessor - ;; Cannot rely on standard directory on MS-DOS to find CPP. In - ;; fact, cannot rely on having cpp.exe, either, in latest GCC - ;; versions. - (cond ((eq system-type 'ms-dos) "gcc -E -C -o - -") - ;; Solaris has it in an unusual place. + (cond ;; Solaris has it in an unusual place. ((and (string-match "^[^-]*-[^-]*-\\(solaris\\|sunos5\\)" system-configuration) (file-exists-p "/opt/SUNWspro/SC3.0.1/bin/acomp")) "/opt/SUNWspro/SC3.0.1/bin/acomp -C -E") - ((file-exists-p "/usr/ccs/lib/cpp") "/usr/ccs/lib/cpp -C") - ((memq system-type '(darwin berkeley-unix)) "gcc -E -C -") - (t "/lib/cpp -C")) + ((locate-file "/usr/ccs/lib/cpp" + '("/") exec-suffixes 'file-executable-p) + "/usr/ccs/lib/cpp -C") + ((locate-file "/lib/cpp" + '("/") exec-suffixes 'file-executable-p) + "/lib/cpp -C") + ;; On some systems, we cannot rely on standard directories to + ;; find CPP. In fact, we cannot rely on having cpp, either, + ;; in some GCC versions. + ((locate-file "cpp" exec-path exec-suffixes 'file-executable-p) + "cpp -C") + (t "gcc -E -C -o - -")) "The preprocessor used by the cmacexp package. If you change this, be sure to preserve the `-C' (don't strip comments) @@ -141,8 +150,9 @@ Normally display output in temp buffer, but prefix arg means replace the region with it. `c-macro-preprocessor' specifies the preprocessor to use. -Prompt for arguments to the preprocessor \(e.g. `-DDEBUG -I ./include') -if the user option `c-macro-prompt-flag' is non-nil. +Tf the user option `c-macro-prompt-flag' is non-nil +prompt for arguments to the preprocessor \(e.g. `-DDEBUG -I ./include'), +otherwise use `c-macro-cppflags'. Noninteractive args are START, END, SUBST. For use inside Lisp programs, see also `c-macro-expansion'." @@ -336,13 +346,13 @@ Optional arg DISPLAY non-nil means show messages in the echo area." (format "\n#line %d \"%s\"\n" startlinenum filename))) ;; Call the preprocessor. - (if display (message mymsg)) + (if display (message "%s" mymsg)) (setq exit-status (call-process-region 1 (point-max) shell-file-name t (list t tempname) nil "-c" cppcommand)) - (if display (message (concat mymsg "done"))) + (if display (message "%s" (concat mymsg "done"))) (if (= (buffer-size) 0) ;; Empty output is normal after a fatal error. (insert "\nPreprocessor produced no output\n")