* /lib/cpp not found in c-mode @ 2005-05-01 16:47 Stefan Monnier 2005-05-01 20:23 ` Eli Zaretskii 2005-05-01 23:40 ` Nick Roberts 0 siblings, 2 replies; 48+ messages in thread From: Stefan Monnier @ 2005-05-01 16:47 UTC (permalink / raw) I just got the following backtrace. Any idea what's up? I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't prevent me from opening a C file, Stefan Debugger entered--Lisp error: (file-error "Searching for program" "no such file or directory" "/lib/cpp") call-process("/lib/cpp" "/Users/monnier/src/emacs/work/src/xterm.c" t nil "-dM") cc-create-define-alist() c-mode() set-auto-mode-0(c-mode nil) set-auto-mode() normal-mode(t) after-find-file(nil t) find-file-noselect-1(#<buffer xterm.c> "~/src/emacs/work/src/xterm.c" nil nil "~/src/emacs/work/src/xterm.c" (5067662 234881033)) find-file-noselect("xterm.c") gdb-info-breakpoints-custom() gdb-info-breakpoints-handler() gdb-prompt("") gud-gdba-marker-filter("\n\x1a\x1apre-prompt\n(gdb) \n\x1a\x1aprompt\n") apply(gud-gdba-marker-filter "\n\x1a\x1apre-prompt\n(gdb) \n\x1a\x1aprompt\n") gud-marker-filter("\n\x1a\x1apre-prompt\n(gdb) \n\x1a\x1aprompt\n") gud-filter(#<process gud-emacs> "\n\x1a\x1apre-prompt\n(gdb) \n\x1a\x1aprompt\n") ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-01 16:47 /lib/cpp not found in c-mode Stefan Monnier @ 2005-05-01 20:23 ` Eli Zaretskii 2005-05-02 1:29 ` Nick Roberts 2005-05-01 23:40 ` Nick Roberts 1 sibling, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-01 20:23 UTC (permalink / raw) Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sun, 01 May 2005 12:47:37 -0400 > > I just got the following backtrace. Any idea what's up? > I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't prevent me > from opening a C file, Not only that, it IMHO shouldn't call "/lib/cpp" unconditionally, but rather try several possible file commands, including "gcc -E", "cpp" (without leading directories), etc. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-01 20:23 ` Eli Zaretskii @ 2005-05-02 1:29 ` Nick Roberts 2005-05-02 15:44 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-02 1:29 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel > Not only that, it IMHO shouldn't call "/lib/cpp" unconditionally, but > rather try several possible file commands, including "gcc -E", "cpp" > (without leading directories), etc. Hopefully, it fails gracefully now. I use "gcc -E -dM -" now to generate a define list. Have you any ideas to make it more general? Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 1:29 ` Nick Roberts @ 2005-05-02 15:44 ` Stefan Monnier 2005-05-02 21:30 ` Nick Roberts 2005-05-04 9:46 ` Nick Roberts 0 siblings, 2 replies; 48+ messages in thread From: Stefan Monnier @ 2005-05-02 15:44 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel >> Not only that, it IMHO shouldn't call "/lib/cpp" unconditionally, but >> rather try several possible file commands, including "gcc -E", "cpp" >> (without leading directories), etc. > Hopefully, it fails gracefully now. I use "gcc -E -dM -" now to generate a > define list. Have you any ideas to make it more general? gcc might not be available either. And the file may not be local (it may be accessed via Tramp or jka-compr). I.e. "fails gracefully" can't be obtained without a condition-case. And AFAICT the result is completely unused unless you happen to also use gud-tooltips. You'd be better served postponing execution of such a command to the moment when it's actually needed (i.e. when gud-tooltips are actually being used). If the user gets an error when she uses gud-tooltips, he won't mind, but if she gets the error about something that she won't even ever use, she has reasons to be upset. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 15:44 ` Stefan Monnier @ 2005-05-02 21:30 ` Nick Roberts 2005-05-04 9:46 ` Nick Roberts 1 sibling, 0 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-02 21:30 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel Stefan Monnier writes: > >> Not only that, it IMHO shouldn't call "/lib/cpp" unconditionally, but > >> rather try several possible file commands, including "gcc -E", "cpp" > >> (without leading directories), etc. > > > Hopefully, it fails gracefully now. I use "gcc -E -dM -" now to generate a > > define list. Have you any ideas to make it more general? > > gcc might not be available either. > And the file may not be local (it may be accessed via Tramp or jka-compr). > I.e. "fails gracefully" can't be obtained without a condition-case. It uses call-process through a shell now and discards standard error so if gcc is not available no define list is generated. How would condition-case help? > And AFAICT the result is completely unused unless you happen to also use > gud-tooltips. Thats currently true. However, tooltips could be used to display the #define directives when just source browsing i.e. they don't need GUD. > You'd be better served postponing execution of such a command to the moment > when it's actually needed (i.e. when gud-tooltips are actually being used). I could do it at the same time that I check whether existing or new buffers require gud-minor-mode to be set. > If the user gets an error when she uses gud-tooltips, he won't mind, but if > she gets the error about something that she won't even ever use, she has > reasons to be upset. I see no reason now for an error to occur but, if we only use this feature with GUD, it clearly is more efficient to only activate for buffers that are part of the session. Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 15:44 ` Stefan Monnier 2005-05-02 21:30 ` Nick Roberts @ 2005-05-04 9:46 ` Nick Roberts 1 sibling, 0 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-04 9:46 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel > You'd be better served postponing execution of such a command to the moment > when it's actually needed (i.e. when gud-tooltips are actually being used). > If the user gets an error when she uses gud-tooltips, he won't mind, but if > she gets the error about something that she won't even ever use, she has > reasons to be upset. I've moved it closer to this: the define lists are only generated in a debug session. To do this only when gud-tooltips are being used means that the list generation etc needs to be triggered when tooltip-gud-tips-p is set to t and the local variable gdb-define-alist killed etc when it's set to nil. Perhaps tooltip-gud-tips-p should be replaced with some kind of minor mode. Any ideas? Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* /lib/cpp not found in c-mode 2005-05-01 16:47 /lib/cpp not found in c-mode Stefan Monnier 2005-05-01 20:23 ` Eli Zaretskii @ 2005-05-01 23:40 ` Nick Roberts 2005-05-02 4:14 ` Jan D. 1 sibling, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-01 23:40 UTC (permalink / raw) Cc: emacs-devel > I just got the following backtrace. Any idea what's up? > I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't prevent me > from opening a C file, In this case, how does your system find c-macro-preprocessor?. Do you have /usr/ccs/lib/cpp? If so, oes it support the -dM switch option (or equivalent)? Nick (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. ((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") (t "/lib/cpp -C")) "The preprocessor used by the cmacexp package. If you change this, be sure to preserve the `-C' (don't strip comments) option, or to set an equivalent one." :type 'string :group 'c-macro) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-01 23:40 ` Nick Roberts @ 2005-05-02 4:14 ` Jan D. 2005-05-02 6:46 ` Nick Roberts 0 siblings, 1 reply; 48+ messages in thread From: Jan D. @ 2005-05-02 4:14 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel >> I just got the following backtrace. Any idea what's up? >> I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't >> prevent me >> from opening a C file, > > In this case, how does your system find c-macro-preprocessor?. Do you > have > /usr/ccs/lib/cpp? If so, oes it support the -dM switch option (or > equivalent)? > On my OSX (10.3.8) it is in /usr/bin/cpp. But isn't using cpp directly deprecated? I don't think gcc installs cpp by default anymore. Jan D. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 4:14 ` Jan D. @ 2005-05-02 6:46 ` Nick Roberts 2005-05-02 19:58 ` Jan D. 0 siblings, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-02 6:46 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel Jan D. writes: > >> I just got the following backtrace. Any idea what's up? > >> I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't > >> prevent me > >> from opening a C file, > > > > In this case, how does your system find c-macro-preprocessor?. Do you > > have > > /usr/ccs/lib/cpp? If so, oes it support the -dM switch option (or > > equivalent)? > > > > On my OSX (10.3.8) it is in /usr/bin/cpp. In that case, c-macro-preprocessor is set to "/lib/cpp -C" and c-macro-expand doesn't work on OSX? > But isn't using cpp directly deprecated? I don't think gcc installs cpp by > default anymore. Does c-macro-preprocessor also need updating then? Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 6:46 ` Nick Roberts @ 2005-05-02 19:58 ` Jan D. 2005-05-02 21:15 ` Nick Roberts 0 siblings, 1 reply; 48+ messages in thread From: Jan D. @ 2005-05-02 19:58 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel > Jan D. writes: >>>> I just got the following backtrace. Any idea what's up? >>>> I indeed don't have /lib/cpp (this is on MacOSX) but it shouldn't >>>> prevent me >>>> from opening a C file, >>> >>> In this case, how does your system find c-macro-preprocessor?. Do you >>> have >>> /usr/ccs/lib/cpp? If so, oes it support the -dM switch option (or >>> equivalent)? >>> >> >> On my OSX (10.3.8) it is in /usr/bin/cpp. > > In that case, c-macro-preprocessor is set to "/lib/cpp -C" and > c-macro-expand > doesn't work on OSX? If c-macro-preprocessor is a recent variable I can't check because Emacs does not currently compile on Mac OSX 10.3. My (a bit old) CVS compile does not seem to have it. But c-macro-expand does not work: /* Preprocessor terminated with status 127 Messages from `/lib/cpp -C ': /bin/bash: line 1: /lib/cpp: No such file or directory */ Preprocessor produced no output Jan D. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 19:58 ` Jan D. @ 2005-05-02 21:15 ` Nick Roberts 2005-05-02 22:16 ` Stefan Monnier ` (2 more replies) 0 siblings, 3 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-02 21:15 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel > >> On my OSX (10.3.8) it is in /usr/bin/cpp. > > > > In that case, c-macro-preprocessor is set to "/lib/cpp -C" and > > c-macro-expand > > doesn't work on OSX? > > If c-macro-preprocessor is a recent variable I can't check because > Emacs does not currently compile on Mac OSX 10.3. My (a bit old) CVS > compile does not seem to have it. c-macro-expand and c-macro-preprocessor have been around for quite a while. c-macro-expand is an interactive autoloaded Lisp function in cmacexp.el that can be invoked in C mode with C-c C-e or from the menu-bar. Apparently this file is not part of cc-mode so perhaps its not being maintained. c-macro-expand seems quite useful so I'm kind of surprised that, as a C specialist, you're don't use it/not familiar with it. > But c-macro-expand does not work: If we added the line below to c-macro-preprocessor would it work then for Mac OSX? Nick (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. ((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") + ((eq system-type 'darwin) "cpp -C") (t "/lib/cpp -C")) "The preprocessor used by the cmacexp package. If you change this, be sure to preserve the `-C' (don't strip comments) option, or to set an equivalent one." :type 'string :group 'c-macro) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 21:15 ` Nick Roberts @ 2005-05-02 22:16 ` Stefan Monnier 2005-05-03 4:05 ` Nick Roberts ` (2 more replies) 2005-05-03 4:14 ` Jan D. 2005-05-03 19:49 ` Magnus Henoch 2 siblings, 3 replies; 48+ messages in thread From: Stefan Monnier @ 2005-05-02 22:16 UTC (permalink / raw) Cc: Jan D., emacs-devel > c-macro-expand and c-macro-preprocessor have been around for quite > a while. c-macro-expand is an interactive autoloaded Lisp function in > cmacexp.el that can be invoked in C mode with C-c C-e or from the > menu-bar. Apparently this file is not part of cc-mode so perhaps its not > being maintained. c-macro-expand seems quite useful so I'm kind of > surprised that, as a C specialist, you're don't use it/not familiar > with it. Don't know about others, but the reason why I don't use c-macro-expand is because it basically can't work right without parsing my Makefile(s) to know which include dirs should be used. And since it doesn't do that, I've found it of little use. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 22:16 ` Stefan Monnier @ 2005-05-03 4:05 ` Nick Roberts 2005-05-03 15:45 ` Stefan Monnier 2005-05-03 17:12 ` Richard Stallman 2005-05-03 19:13 ` Eli Zaretskii 2 siblings, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-03 4:05 UTC (permalink / raw) Cc: Jan D., emacs-devel > Don't know about others, but the reason why I don't use c-macro-expand is > because it basically can't work right without parsing my Makefile(s) to know > which include dirs should be used. And since it doesn't do that, I've found > it of little use. OK. I see now. For Emacs, the source seems to have the same flags. So, in that case, I guess you could do something like: (setq c-macro-cppflags "-Demacs -DHAVE_CONFIG_H -DUSE_LUCID -I. -I/home/nick/emacs/src -D_BSD_SOURCE -I/usr/X11R6/include") Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 4:05 ` Nick Roberts @ 2005-05-03 15:45 ` Stefan Monnier 2005-05-03 21:36 ` Nick Roberts 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-03 15:45 UTC (permalink / raw) Cc: Jan D., emacs-devel >> Don't know about others, but the reason why I don't use c-macro-expand is >> because it basically can't work right without parsing my Makefile(s) to know >> which include dirs should be used. And since it doesn't do that, I've found >> it of little use. > OK. I see now. For Emacs, the source seems to have the same flags. So, in > that case, I guess you could do something like: > (setq c-macro-cppflags "-Demacs -DHAVE_CONFIG_H -DUSE_LUCID -I. -I/home/nick/emacs/src -D_BSD_SOURCE -I/usr/X11R6/include") Except that Emacs is not the only project I work on that uses the C language. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 15:45 ` Stefan Monnier @ 2005-05-03 21:36 ` Nick Roberts 0 siblings, 0 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-03 21:36 UTC (permalink / raw) Cc: Jan D., emacs-devel > > OK. I see now. For Emacs, the source seems to have the same flags. So, in > > that case, I guess you could do something like: > > > (setq c-macro-cppflags "-Demacs -DHAVE_CONFIG_H -DUSE_LUCID -I. -I/home/nick/emacs/src -D_BSD_SOURCE -I/usr/X11R6/include") > > Except that Emacs is not the only project I work on that uses the > C language. Thats why I said "in the case of Emacs": I was just pointing out c-macro-cppflags as an option. Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 22:16 ` Stefan Monnier 2005-05-03 4:05 ` Nick Roberts @ 2005-05-03 17:12 ` Richard Stallman 2005-05-03 18:18 ` Stefan Monnier 2005-05-03 19:13 ` Eli Zaretskii 2 siblings, 1 reply; 48+ messages in thread From: Richard Stallman @ 2005-05-03 17:12 UTC (permalink / raw) Cc: nickrob, jan.h.d, emacs-devel Don't know about others, but the reason why I don't use c-macro-expand is because it basically can't work right without parsing my Makefile(s) to know which include dirs should be used. And since it doesn't do that, I've found it of little use. What information would it need in order to DTRT for you? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 17:12 ` Richard Stallman @ 2005-05-03 18:18 ` Stefan Monnier [not found] ` <20050503233249.1C2799F4ED@mirror.positive-internet.com> 2005-05-04 19:04 ` Josh Varner 0 siblings, 2 replies; 48+ messages in thread From: Stefan Monnier @ 2005-05-03 18:18 UTC (permalink / raw) Cc: nickrob, jan.h.d, emacs-devel > Don't know about others, but the reason why I don't use c-macro-expand > is because it basically can't work right without parsing my > Makefile(s) to know which include dirs should be used. And since it > doesn't do that, I've found it of little use. > What information would it need in order to DTRT for you? I'm not sure what you didn't understand, so I'll just rephrase it: in order for the output of cpp to be useful, you need to make sure that all the #include do find the corresponding header file (also it'd be better if the various predefined macros, via -D or built-in into the compiler were handled correctly). This info is in general only available by parsing the Makefile (or equivalent for people who use other tools). Of course I can also manually take the relevant info from the Makefile and put it into c-macro-cppflags, but doing that for each and every project I work on is just too much trouble for me to even try it. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
[parent not found: <20050503233249.1C2799F4ED@mirror.positive-internet.com>]
* Re: /lib/cpp not found in c-mode [not found] ` <20050503233249.1C2799F4ED@mirror.positive-internet.com> @ 2005-05-03 23:45 ` Stefan Monnier 2005-05-04 22:05 ` Richard Stallman 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-03 23:45 UTC (permalink / raw) Cc: nickrob, jan.h.d, emacs-devel > Don't you use the same set of include directories for all, or nearly > all, of the C files in a directory? Yes, of course. The problem is between different directories (different copies of the same project, or different projects). > As long as that is the case, it should not be terribly hard to specify > that info for the whole directory, and thus make c-macro-expand work. Could be, although I don't know of any mechanism to do that right now. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 23:45 ` Stefan Monnier @ 2005-05-04 22:05 ` Richard Stallman 0 siblings, 0 replies; 48+ messages in thread From: Richard Stallman @ 2005-05-04 22:05 UTC (permalink / raw) Cc: nickrob, jan.h.d, emacs-devel > As long as that is the case, it should not be terribly hard to specify > that info for the whole directory, and thus make c-macro-expand work. Could be, although I don't know of any mechanism to do that right now. I could imagine putting a special file in the directory, or a hint specifically for Emacs in Makefile in the directory. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 18:18 ` Stefan Monnier [not found] ` <20050503233249.1C2799F4ED@mirror.positive-internet.com> @ 2005-05-04 19:04 ` Josh Varner 1 sibling, 0 replies; 48+ messages in thread From: Josh Varner @ 2005-05-04 19:04 UTC (permalink / raw) Cc: nickrob, jan.h.d, rms, emacs-devel On 5/3/05, Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > Don't know about others, but the reason why I don't use c-macro-expand > > is because it basically can't work right without parsing my > > Makefile(s) to know which include dirs should be used. And since it > > doesn't do that, I've found it of little use. > > > What information would it need in order to DTRT for you? > . . . > Of course I can also manually take the relevant info from the Makefile and > put it into c-macro-cppflags, but doing that for each and every project > I work on is just too much trouble for me to even try it. > Assuming you do your compiles from emacs you should have the full command lines used to compile the sources, i.e. containing all of the relevant -I and -D's. Could a function be used to grab this information out of the compilation buffers and store it for use by c-macro-expand? If this was automated in such a way that you could have an association between files, or groups of files and the options used by c-macro-expand, a hook in the compilation buffer could grab that information during each build for later use. That would give you the flexibility without the tedium. Josh ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 22:16 ` Stefan Monnier 2005-05-03 4:05 ` Nick Roberts 2005-05-03 17:12 ` Richard Stallman @ 2005-05-03 19:13 ` Eli Zaretskii 2005-05-03 20:23 ` Stefan Monnier 2 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-03 19:13 UTC (permalink / raw) Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Mon, 02 May 2005 18:16:33 -0400 > Cc: "Jan D." <jan.h.d@swipnet.se>, emacs-devel@gnu.org > > Don't know about others, but the reason why I don't use c-macro-expand is > because it basically can't work right without parsing my Makefile(s) to know > which include dirs should be used. ??? Isn't it a simple matter of looking at the Makefile and passing the relevant switches to the preprocessor? If the Makefile is too complex to figure out the switches, I usually invoke "make foo.o" to see what switches it uses, then copy them into the c-macro-expand's prompt for arguments. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 19:13 ` Eli Zaretskii @ 2005-05-03 20:23 ` Stefan Monnier 2005-05-04 20:58 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-03 20:23 UTC (permalink / raw) Cc: emacs-devel >> Don't know about others, but the reason why I don't use c-macro-expand is >> because it basically can't work right without parsing my Makefile(s) to >> know which include dirs should be used. > ??? Isn't it a simple matter of looking at the Makefile and passing > the relevant switches to the preprocessor? If the Makefile is too > complex to figure out the switches, I usually invoke "make foo.o" to > see what switches it uses, then copy them into the c-macro-expand's > prompt for arguments. Seems like much too much trouble compared to the functionality offered, Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 20:23 ` Stefan Monnier @ 2005-05-04 20:58 ` Eli Zaretskii 2005-05-05 10:58 ` Nick Roberts 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-04 20:58 UTC (permalink / raw) Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Tue, 03 May 2005 16:23:40 -0400 > Cc: emacs-devel@gnu.org > > > ??? Isn't it a simple matter of looking at the Makefile and passing > > the relevant switches to the preprocessor? If the Makefile is too > > complex to figure out the switches, I usually invoke "make foo.o" to > > see what switches it uses, then copy them into the c-macro-expand's > > prompt for arguments. > > Seems like much too much trouble compared to the functionality offered, Not when you really need it, like when a complicated macro causes some bug or compiler message you cannot figure out. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-04 20:58 ` Eli Zaretskii @ 2005-05-05 10:58 ` Nick Roberts 2005-05-05 17:43 ` Eli Zaretskii [not found] ` <0FA9201A-8390-4924-BDE3-2857B0A33576@swipnet.se> 0 siblings, 2 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-05 10:58 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel > > > ??? Isn't it a simple matter of looking at the Makefile and passing > > > the relevant switches to the preprocessor? If the Makefile is too > > > complex to figure out the switches, I usually invoke "make foo.o" to > > > see what switches it uses, then copy them into the c-macro-expand's > > > prompt for arguments. > > > > Seems like much too much trouble compared to the functionality offered, > > Not when you really need it, like when a complicated macro causes some > bug or compiler message you cannot figure out. As I'm sure you know, GCC (3.1 onwards) provides macro information if you specify the options -gdwarf-2 and -g3. So while debugging you can expand a macro with /* -*- compile-command: "cc -g3 -o myprog myprog.c myprint.o -lm"; -*- */ #include <stdlib.h> #include <math.h> (gdb) macro expand M_PI expands to: 3.14159265358979323846 (gdb) info macro M_PI Defined at /usr/include/math.h:311 included at /home/nick/myprog.c:4 #define M_PI 3.14159265358979323846 If gdb can expand macros using macro information from the executable (which requires knowledge of include paths and predefined macros), why can't cpp (or gcc -E) ? Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 10:58 ` Nick Roberts @ 2005-05-05 17:43 ` Eli Zaretskii [not found] ` <0FA9201A-8390-4924-BDE3-2857B0A33576@swipnet.se> 1 sibling, 0 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-05 17:43 UTC (permalink / raw) Cc: emacs-devel > From: Nick Roberts <nickrob@snap.net.nz> > Date: Thu, 5 May 2005 22:58:45 +1200 > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org > > As I'm sure you know, GCC (3.1 onwards) provides macro information if you > specify the options -gdwarf-2 and -g3. On GNU/Linux, perhaps, but not on all platforms supported by GCC. > If gdb can expand macros using macro information from the executable > (which requires knowledge of include paths and predefined macros), why > can't cpp (or gcc -E) ? Actually, GDB doesn't know anything about paths and predefined macros, it simply uses the information about macros recorded by the compiler in the DWARF-2 debug info. That's why you need to use -g3: this tells the compiler to record macro information. ^ permalink raw reply [flat|nested] 48+ messages in thread
[parent not found: <0FA9201A-8390-4924-BDE3-2857B0A33576@swipnet.se>]
* Re: /lib/cpp not found in c-mode [not found] ` <0FA9201A-8390-4924-BDE3-2857B0A33576@swipnet.se> @ 2005-05-05 21:54 ` Nick Roberts 2005-05-06 4:51 ` Jan D. 0 siblings, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-05 21:54 UTC (permalink / raw) Cc: emacs-devel > > If gdb can expand macros using macro information from the executable > > (which requires knowledge of include paths and predefined macros), why > > can't cpp (or gcc -E) ? > > > > The information you see in gdb is all from the debug info in the > executable, so it does not require knowledge of include paths and > predefined macros. The compilation of the executable does, but after > that it is all in the debug info, so gdb does not care what the > include paths where at the time of compilation. > > Jan D. Sorry, yes you're right it doesn't care what the include paths where. But my point is that it can expand all the macros while "gcc -E" can't. "gcc -E" is typically given the source file as input but if it was also given the executable, it presumably could be adapted so that it could expand all the macros just like GDB can. Would that not be a worthwhile thing to do? Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 21:54 ` Nick Roberts @ 2005-05-06 4:51 ` Jan D. 2005-05-06 7:43 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Jan D. @ 2005-05-06 4:51 UTC (permalink / raw) Cc: emacs-devel >> The information you see in gdb is all from the debug info in the >> executable, so it does not require knowledge of include paths and >> predefined macros. The compilation of the executable does, but after >> that it is all in the debug info, so gdb does not care what the >> include paths where at the time of compilation. >> >> Jan D. >> > > Sorry, yes you're right it doesn't care what the include paths > where. But my > point is that it can expand all the macros while "gcc -E" can't. > "gcc -E" is > typically given the source file as input but if it was also given the > executable, it presumably could be adapted so that it could expand > all the > macros just like GDB can. > > Would that not be a worthwhile thing to do? If the executable exists already, why am I typing in the source code in Emacs? :-) gcc -E can expand the macros just fine, it just needs the same input (-I -D and -U) as gcc got when creating the executable. As others pointed out, it is impractical to set this up if you are working on several different projects at once. Personally I don't see the need for expanding macros. One of the reasons I use them in the first place is to hide details I don't need to see. Expanding them while editing seems a strange thing to do. Jan D. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-06 4:51 ` Jan D. @ 2005-05-06 7:43 ` Eli Zaretskii 0 siblings, 0 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-06 7:43 UTC (permalink / raw) Cc: nickrob, emacs-devel > From: "Jan D." <jan.h.d@swipnet.se> > Date: Fri, 6 May 2005 06:51:38 +0200 > Cc: emacs-devel@gnu.org > > gcc -E can expand the macros just fine, it just needs the same input > (-I -D and -U) as gcc got when creating the executable. As others > pointed out, it is impractical to set this up if you are working on > several different projects at once. It is not impractical, since I actually do this in practice. One way to overcome the difficulties is to use the command history features offered by Emacs. Also, I really doubt that many people work ``on several different projects at once'', literally. I think it's an exaggeration, and that even if someone works on several projects, they don't switch from one project to another every minute, at least not in most cases, and neither do they need to use c-macro-expand all the time (see below). > Personally I don't see the need for expanding macros. One of the > reasons I use them in the first place is to hide details I don't need > to see. Expanding them while editing seems a strange thing to do. When you write your code, you don't need that. But when you need to understand some compiler message or obscure bug in code someone else wrote, it is sometimes hard to get along without this feature. A case in point is this message that GCC would once output while compiling regex.c: regex.c:5179: warning: comparison is always true due to limited range of data type The offending line was: if (RE_TRANSLATE (translate, *d) != *p++) Let me know how much time it takes you to figure out what is the problem without expanding the macros in this line with something like the feature we are discussing ;-) (It took me about 5 seconds after I expanded them.) Granted, this is not the most important feature for C programming, but I wouldn't say that ``I don't see the need for expanding macros''. So let's keep things in perspective here, okay? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 21:15 ` Nick Roberts 2005-05-02 22:16 ` Stefan Monnier @ 2005-05-03 4:14 ` Jan D. 2005-05-03 19:49 ` Magnus Henoch 2 siblings, 0 replies; 48+ messages in thread From: Jan D. @ 2005-05-03 4:14 UTC (permalink / raw) Cc: Stefan Monnier, emacs-devel >>> In that case, c-macro-preprocessor is set to "/lib/cpp -C" and >>> c-macro-expand >>> doesn't work on OSX? >> >> If c-macro-preprocessor is a recent variable I can't check because >> Emacs does not currently compile on Mac OSX 10.3. My (a bit old) CVS >> compile does not seem to have it. > > c-macro-expand and c-macro-preprocessor have been around for quite a > while. c-macro-expand is an interactive autoloaded Lisp function in > cmacexp.el > that can be invoked in C mode with C-c C-e or from the menu-bar. > Apparently > this file is not part of cc-mode so perhaps its not being maintained. > c-macro-expand seems quite useful so I'm kind of surprised that, as a C > specialist, you're don't use it/not familiar with it. I must have misspelled the name when looking for it. I've seen the macro expand region menu item in the C menu, but actually never had any use for it. > >> But c-macro-expand does not work: > > If we added the line below to c-macro-preprocessor would it work then > for Mac > OSX? Yes it would. Jan D. > Nick > > > (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. > ((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") > + ((eq system-type 'darwin) "cpp -C") > (t "/lib/cpp -C")) > "The preprocessor used by the cmacexp package. > > If you change this, be sure to preserve the `-C' (don't strip comments) > option, or to set an equivalent one." > :type 'string > :group 'c-macro) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-02 21:15 ` Nick Roberts 2005-05-02 22:16 ` Stefan Monnier 2005-05-03 4:14 ` Jan D. @ 2005-05-03 19:49 ` Magnus Henoch 2005-05-04 20:49 ` Nick Roberts 2 siblings, 1 reply; 48+ messages in thread From: Magnus Henoch @ 2005-05-03 19:49 UTC (permalink / raw) Nick Roberts <nickrob@snap.net.nz> writes: > If we added the line below to c-macro-preprocessor would it work then for Mac > OSX? This change is needed for NetBSD as well (and possibly other BSDs). Magnus ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-03 19:49 ` Magnus Henoch @ 2005-05-04 20:49 ` Nick Roberts 2005-05-05 14:17 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Nick Roberts @ 2005-05-04 20:49 UTC (permalink / raw) Cc: emacs-devel > > If we added the line below to c-macro-preprocessor would it work then for > > Mac OSX? > > This change is needed for NetBSD as well (and possibly other BSDs). I've now changed the condition to: ((memq system-type '(darwin berkeley-unix)) "gcc -E -C -") If system-type is not berkeley-unix for you, please tell me what it is. Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-04 20:49 ` Nick Roberts @ 2005-05-05 14:17 ` Stefan Monnier 2005-05-05 17:50 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-05 14:17 UTC (permalink / raw) Cc: Magnus Henoch, emacs-devel > I've now changed the condition to: > ((memq system-type '(darwin berkeley-unix)) "gcc -E -C -") Testing system-type strikes me as wrong (as usual). Since it's the penultimate entry and the last one says "/lib/cpp" we should probably just do something more like: ((not (file-executable-p "/lib/cpp")) "gcc -E -C -") -- Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 14:17 ` Stefan Monnier @ 2005-05-05 17:50 ` Eli Zaretskii 2005-05-05 18:19 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-05 17:50 UTC (permalink / raw) Cc: nickrob, mange, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Thu, 05 May 2005 10:17:14 -0400 > Cc: Magnus Henoch <mange@freemail.hu>, emacs-devel@gnu.org > > > ((memq system-type '(darwin berkeley-unix)) "gcc -E -C -") > > Testing system-type strikes me as wrong (as usual). Agreed. > Since it's the penultimate entry and the last one says "/lib/cpp" we > should probably just do something more like: > > ((not (file-executable-p "/lib/cpp")) "gcc -E -C -") Right, but please amend this to look for cpp.exe etc. on systems that need that (or perhaps file-executable-p should try that automatically?). ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 17:50 ` Eli Zaretskii @ 2005-05-05 18:19 ` Stefan Monnier 2005-05-05 21:02 ` Nick Roberts 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-05 18:19 UTC (permalink / raw) Cc: nickrob, mange, emacs-devel >> ((not (file-executable-p "/lib/cpp")) "gcc -E -C -") > Right, but please amend this to look for cpp.exe etc. on systems that > need that (or perhaps file-executable-p should try that > automatically?). Or maybe (executable-find "/lib/cpp"), Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 18:19 ` Stefan Monnier @ 2005-05-05 21:02 ` Nick Roberts 2005-05-06 12:34 ` Eli Zaretskii 2005-05-06 12:49 ` Eli Zaretskii 0 siblings, 2 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-05 21:02 UTC (permalink / raw) Cc: Eli Zaretskii, mange, emacs-devel Stefan Monnier writes: > >> ((not (file-executable-p "/lib/cpp")) "gcc -E -C -") > > > Right, but please amend this to look for cpp.exe etc. on systems that > > need that (or perhaps file-executable-p should try that > > automatically?). > > Or maybe (executable-find "/lib/cpp"), Since its a trivial change for someone who knows what the right change is, could you or Eli make it please. I think my changes are more general, but theres not much point in them being continually reviewed for correctness. Also could you please DTRT for gdb-cpp-define-alist-program. Thanks, Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 21:02 ` Nick Roberts @ 2005-05-06 12:34 ` Eli Zaretskii 2005-05-08 2:54 ` Nick Roberts 2005-05-08 17:31 ` Stefan Monnier 2005-05-06 12:49 ` Eli Zaretskii 1 sibling, 2 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-06 12:34 UTC (permalink / raw) Cc: mange, emacs-devel > From: Nick Roberts <nickrob@snap.net.nz> > Date: Fri, 6 May 2005 09:02:51 +1200 > Cc: Eli Zaretskii <eliz@gnu.org>, mange@freemail.hu, > emacs-devel@gnu.org > > Stefan Monnier writes: > > >> ((not (file-executable-p "/lib/cpp")) "gcc -E -C -") > > > > > Right, but please amend this to look for cpp.exe etc. on systems that > > > need that (or perhaps file-executable-p should try that > > > automatically?). > > > > Or maybe (executable-find "/lib/cpp"), > > Since its a trivial change for someone who knows what the right change is, > could you or Eli make it please. I think my changes are more general, but > theres not much point in them being continually reviewed for correctness. Done. I preferred to use locate-file instead of executable-find, since the latter would load another package. The new version is below, in case someone wants to comment. (defcustom c-macro-preprocessor (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") ((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) option, or to set an equivalent one." :type 'string :group 'c-macro) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-06 12:34 ` Eli Zaretskii @ 2005-05-08 2:54 ` Nick Roberts 2005-05-08 4:28 ` Eli Zaretskii 2005-05-08 16:12 ` Richard Stallman 2005-05-08 17:31 ` Stefan Monnier 1 sibling, 2 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-08 2:54 UTC (permalink / raw) Cc: emacs-devel > Done. I preferred to use locate-file instead of executable-find, > since the latter would load another package. Yes. locate-file seems useful enough to justify a description in the Lisp Reference Manual. However, I don't see why it should get an entry in NEWS as it isn't a user-visible change. Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 2:54 ` Nick Roberts @ 2005-05-08 4:28 ` Eli Zaretskii 2005-05-08 4:59 ` Nick Roberts 2005-05-08 16:12 ` Richard Stallman 1 sibling, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-08 4:28 UTC (permalink / raw) Cc: emacs-devel > From: Nick Roberts <nickrob@snap.net.nz> > Date: Sun, 8 May 2005 14:54:14 +1200 > Cc: emacs-devel@gnu.org > > Yes. locate-file seems useful enough to justify a description in the Lisp > Reference Manual. Agreed. And it will be, now that it's in NEWS and not marked as already documented. > However, I don't see why it should get an entry in NEWS as it isn't > a user-visible change. ??? Entries in NEWS are subdivided into several categories; one of them is "Lisp changes in Emacs X.YZ". locate-file is a function that didn't exist in previous versions, so it's a Lisp-level change. Moreover, we want Lisp programmers to know about it because it performs its job in a way that hides system dependencies while doing TRT. It also was important enough to require a new primitive, locate-file-internal. All of these IMHO point to the fact that locate-file should be in NEWS. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 4:28 ` Eli Zaretskii @ 2005-05-08 4:59 ` Nick Roberts 2005-05-08 16:12 ` Richard Stallman 2005-05-08 18:43 ` Eli Zaretskii 0 siblings, 2 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-08 4:59 UTC (permalink / raw) Cc: emacs-devel > > However, I don't see why it should get an entry in NEWS as it isn't > > a user-visible change. > > ??? Entries in NEWS are subdivided into several categories; one of > them is "Lisp changes in Emacs X.YZ". locate-file is a function that > didn't exist in previous versions, so it's a Lisp-level change. > Moreover, we want Lisp programmers to know about it because it > performs its job in a way that hides system dependencies while doing > TRT. It also was important enough to require a new primitive, > locate-file-internal. All of these IMHO point to the fact that > locate-file should be in NEWS. I am just trying to understand the relationship between things. Lisp changes could refer to variables and interactive functions. Who is NEWS directed at? Users or developers? What you say sounds reasonable but in that case, I think the first line of NEWS should be changed: GNU Emacs NEWS -- history of user-visible changes. 2003-05-21 ^^^^^^^^^^^^ to something like say: GNU Emacs NEWS -- history of user-visible and lisp level changes. 2003-05-21 Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 4:59 ` Nick Roberts @ 2005-05-08 16:12 ` Richard Stallman 2005-05-08 18:43 ` Eli Zaretskii 1 sibling, 0 replies; 48+ messages in thread From: Richard Stallman @ 2005-05-08 16:12 UTC (permalink / raw) Cc: eliz, emacs-devel locate-file is a function that > didn't exist in previous versions, so it's a Lisp-level change. > Moreover, we want Lisp programmers to know about it because it > performs its job in a way that hides system dependencies while doing > TRT. That is right. Who is NEWS directed at? Users or developers? NEWS is meant for users, not developers. Users of Emacs often write Lisp programs, so changes in the Emacs Lisp language features are part of the information they need. GNU Emacs NEWS -- history of user-visible changes. 2003-05-21 ^^^^^^^^^^^^ to something like say: GNU Emacs NEWS -- history of user-visible and lisp level changes. 2003-05-21 That text is correct and doesn't need change. (However, the date should be updated.) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 4:59 ` Nick Roberts 2005-05-08 16:12 ` Richard Stallman @ 2005-05-08 18:43 ` Eli Zaretskii 1 sibling, 0 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-08 18:43 UTC (permalink / raw) Cc: emacs-devel > From: Nick Roberts <nickrob@snap.net.nz> > Date: Sun, 8 May 2005 16:59:33 +1200 > Cc: emacs-devel@gnu.org > > Who is NEWS directed at? Users or developers? If by `developers'' you mean people who write Lisp code (as opposed to Emacs developers), then NEWS is both for users and developers. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 2:54 ` Nick Roberts 2005-05-08 4:28 ` Eli Zaretskii @ 2005-05-08 16:12 ` Richard Stallman 1 sibling, 0 replies; 48+ messages in thread From: Richard Stallman @ 2005-05-08 16:12 UTC (permalink / raw) Cc: eliz, emacs-devel Yes. locate-file seems useful enough to justify a description in the Lisp Reference Manual. I agree. Would someone like to write this? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-06 12:34 ` Eli Zaretskii 2005-05-08 2:54 ` Nick Roberts @ 2005-05-08 17:31 ` Stefan Monnier 2005-05-08 19:02 ` Eli Zaretskii 1 sibling, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2005-05-08 17:31 UTC (permalink / raw) Cc: Nick Roberts, mange, emacs-devel > Done. I preferred to use locate-file instead of executable-find, > since the latter would load another package. Actually, looking at the definition of executable-find, I'm surprised it doesn't use locate-file. The patch below should fix it so that executable-find uses the same code used by `call-process'. The new code is nothing else than a call to locate-file and I'd argue that Eli's change from executable-find to locate-file is a bad idea and instead we should simply move executable-find from executable.el to subr.el. Stefan --- orig/lisp/progmodes/executable.el +++ mod/lisp/progmodes/executable.el @@ -165,25 +165,7 @@ (defun executable-find (command) "Search for COMMAND in `exec-path' and return the absolute file name. Return nil if COMMAND is not found anywhere in `exec-path'." - (let ((list exec-path) - file) - (while list - (setq list - (if (and (setq file (expand-file-name command (car list))) - (let ((suffixes exec-suffixes) - candidate) - (while suffixes - (setq candidate (concat file (car suffixes))) - (if (and (file-executable-p candidate) - (not (file-directory-p candidate))) - (setq suffixes nil) - (setq suffixes (cdr suffixes)) - (setq candidate nil))) - (setq file candidate))) - nil - (setq file nil) - (cdr list)))) - file)) + (locate-file command exec-path exec-suffixes 1)) (defun executable-chmod () "This gets called after saving a file to assure that it be executable. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 17:31 ` Stefan Monnier @ 2005-05-08 19:02 ` Eli Zaretskii 2005-05-08 19:41 ` Eli Zaretskii 2005-05-08 21:18 ` Stefan Monnier 0 siblings, 2 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-08 19:02 UTC (permalink / raw) Cc: mange, emacs-devel > Cc: Nick Roberts <nickrob@snap.net.nz>, mange@freemail.hu, > emacs-devel@gnu.org > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sun, 08 May 2005 13:31:20 -0400 > > Actually, looking at the definition of executable-find, I'm surprised it > doesn't use locate-file. IIRC, executable-find was in existence longe before you added locate-file. > The new code is nothing else than a call to locate-file and I'd argue > that Eli's change from executable-find to locate-file is a bad idea and > instead we should simply move executable-find from executable.el to > subr.el. Well, if you are going to use integer values as the last arg to locate-file (which is deprecated usage, as the doc string says), why not call locate-file-internal directly and save a few cycles? Also, I think this should go into files.el, not subr.el, since locate-file is in files.el. Other than that, I don't mind; I think that executable-find indeed doesn't belong in executable.el. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 19:02 ` Eli Zaretskii @ 2005-05-08 19:41 ` Eli Zaretskii 2005-05-08 21:18 ` Stefan Monnier 1 sibling, 0 replies; 48+ messages in thread From: Eli Zaretskii @ 2005-05-08 19:41 UTC (permalink / raw) Cc: mange, emacs-devel > Date: Sun, 08 May 2005 22:02:25 +0300 > From: "Eli Zaretskii" <eliz@gnu.org> > Cc: mange@freemail.hu, emacs-devel@gnu.org > > Well, if you are going to use integer values as the last arg to > locate-file (which is deprecated usage, as the doc string says), why > not call locate-file-internal directly and save a few cycles? Actually, I take that back: calling locate-file with last arg 1 is subtly different from calling it with last arg file-executable-p. So I think we should either fix openp to use the same code as file-executable-p, or not use 1 here. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-08 19:02 ` Eli Zaretskii 2005-05-08 19:41 ` Eli Zaretskii @ 2005-05-08 21:18 ` Stefan Monnier 1 sibling, 0 replies; 48+ messages in thread From: Stefan Monnier @ 2005-05-08 21:18 UTC (permalink / raw) Cc: mange, emacs-devel >> Actually, looking at the definition of executable-find, I'm surprised it >> doesn't use locate-file. > IIRC, executable-find was in existence longe before you added > locate-file. Yes, what I meant was that I was surprised I didn't change executable-find back when I added locate-file (especially since I had added exec-suffixes not that long before IIRC). >> The new code is nothing else than a call to locate-file and I'd argue >> that Eli's change from executable-find to locate-file is a bad idea and >> instead we should simply move executable-find from executable.el to >> subr.el. > Well, if you are going to use integer values as the last arg to > locate-file (which is deprecated usage, as the doc string says), why > not call locate-file-internal directly and save a few cycles? I could but the intention of using an integer arg wasn't to speed things up but to more closely match the behavior of call-process and start-process. > Also, I think this should go into files.el, not subr.el, since > locate-file is in files.el. Good point. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-05 21:02 ` Nick Roberts 2005-05-06 12:34 ` Eli Zaretskii @ 2005-05-06 12:49 ` Eli Zaretskii 2005-05-06 22:41 ` Nick Roberts 1 sibling, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2005-05-06 12:49 UTC (permalink / raw) Cc: mange, emacs-devel > From: Nick Roberts <nickrob@snap.net.nz> > Date: Fri, 6 May 2005 09:02:51 +1200 > Cc: Eli Zaretskii <eliz@gnu.org>, mange@freemail.hu, > emacs-devel@gnu.org > > Also could you please DTRT for gdb-cpp-define-alist-program. Done. (The test for ms-dos was redundant.) Btw, byte-compiling gdb-ui.el emits these two warnings which I think should be taken care of: In gdb-info-locals-handler: gdb-ui.el:1944:8:Warning: function `gdb-info-locals-handler' defined multiple times in this file In gdb-invalidate-assembler: gdb-ui.el:2468:8:Warning: function `gdb-invalidate-assembler' defined multiple times in this file ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: /lib/cpp not found in c-mode 2005-05-06 12:49 ` Eli Zaretskii @ 2005-05-06 22:41 ` Nick Roberts 0 siblings, 0 replies; 48+ messages in thread From: Nick Roberts @ 2005-05-06 22:41 UTC (permalink / raw) Cc: mange, emacs-devel > > Also could you please DTRT for gdb-cpp-define-alist-program. > > Done. (The test for ms-dos was redundant.) Thanks. > Btw, byte-compiling gdb-ui.el emits these two warnings which I think > should be taken care of: > > In gdb-info-locals-handler: > gdb-ui.el:1944:8:Warning: function `gdb-info-locals-handler' defined > multiple times in this file > > In gdb-invalidate-assembler: > gdb-ui.el:2468:8:Warning: function `gdb-invalidate-assembler' defined > multiple times in this file The macro def-gdb-auto-updated-buffer defines a group of functions in a standard for the different GDB-UI buffers (stack, locals etc). The two functions above need to work slightly differently so they are defined explicitly *after* their definition in the macro. Its a bit messy, but I don't know how to get round it. Nick ^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2005-05-08 21:18 UTC | newest] Thread overview: 48+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-05-01 16:47 /lib/cpp not found in c-mode Stefan Monnier 2005-05-01 20:23 ` Eli Zaretskii 2005-05-02 1:29 ` Nick Roberts 2005-05-02 15:44 ` Stefan Monnier 2005-05-02 21:30 ` Nick Roberts 2005-05-04 9:46 ` Nick Roberts 2005-05-01 23:40 ` Nick Roberts 2005-05-02 4:14 ` Jan D. 2005-05-02 6:46 ` Nick Roberts 2005-05-02 19:58 ` Jan D. 2005-05-02 21:15 ` Nick Roberts 2005-05-02 22:16 ` Stefan Monnier 2005-05-03 4:05 ` Nick Roberts 2005-05-03 15:45 ` Stefan Monnier 2005-05-03 21:36 ` Nick Roberts 2005-05-03 17:12 ` Richard Stallman 2005-05-03 18:18 ` Stefan Monnier [not found] ` <20050503233249.1C2799F4ED@mirror.positive-internet.com> 2005-05-03 23:45 ` Stefan Monnier 2005-05-04 22:05 ` Richard Stallman 2005-05-04 19:04 ` Josh Varner 2005-05-03 19:13 ` Eli Zaretskii 2005-05-03 20:23 ` Stefan Monnier 2005-05-04 20:58 ` Eli Zaretskii 2005-05-05 10:58 ` Nick Roberts 2005-05-05 17:43 ` Eli Zaretskii [not found] ` <0FA9201A-8390-4924-BDE3-2857B0A33576@swipnet.se> 2005-05-05 21:54 ` Nick Roberts 2005-05-06 4:51 ` Jan D. 2005-05-06 7:43 ` Eli Zaretskii 2005-05-03 4:14 ` Jan D. 2005-05-03 19:49 ` Magnus Henoch 2005-05-04 20:49 ` Nick Roberts 2005-05-05 14:17 ` Stefan Monnier 2005-05-05 17:50 ` Eli Zaretskii 2005-05-05 18:19 ` Stefan Monnier 2005-05-05 21:02 ` Nick Roberts 2005-05-06 12:34 ` Eli Zaretskii 2005-05-08 2:54 ` Nick Roberts 2005-05-08 4:28 ` Eli Zaretskii 2005-05-08 4:59 ` Nick Roberts 2005-05-08 16:12 ` Richard Stallman 2005-05-08 18:43 ` Eli Zaretskii 2005-05-08 16:12 ` Richard Stallman 2005-05-08 17:31 ` Stefan Monnier 2005-05-08 19:02 ` Eli Zaretskii 2005-05-08 19:41 ` Eli Zaretskii 2005-05-08 21:18 ` Stefan Monnier 2005-05-06 12:49 ` Eli Zaretskii 2005-05-06 22:41 ` Nick Roberts
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).