[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

help with c-mode-common-hook

From: Hadron
Subject: help with c-mode-common-hook
Date: Wed, 02 May 2007 20:00:41 +0200
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.99 (gnu/linux)

This is one of those "used to work last time I tried but now it's
broken". Maybe I messed something up in the my-compile?

I have a function which sets the compile command per C file. If a
makefile exists, use it, else use gcc.

| (defun my-compile ()
|   (message "in my-compile")
|   (lambda ()
|     (unless (file-exists-p "Makefile")
|       (set (make-local-variable 'compile-command)
|          ;; emulate make's .c.o implicit pattern rule, but with
|          ;; different defaults for the CC, CPPFLAGS, and CFLAGS
|          ;; variables:
|          ;; $(CC) -c -o $@ $(GTKFLAGS) $(CPPFLAGS) $(CFLAGS) $<
|          (let ((file (file-name-nondirectory buffer-file-name)))
|            (format "%s -o %s %s %s %s %s"
|                    (or (getenv "CC") "gcc")
|                    (file-name-sans-extension file)
|                    (or (getenv "GTKFLAGS") "")
|                    (or (getenv "CPPFLAGS")"-DDEBUG=9")
|                    (or (getenv "CFLAGS") "-std=c99 -pedantic -Wall -Werror 
-Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion  
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
-Wredundant-decls -Wnested-externs -Winline -g")
|                    file)))))
|   )

which is called from my c-init

| (defun my-c-init()
| ;; *SNIP*
|   ;;  (defvar gud-gdb-command-name "gdb -q")
|   (setq gud-gdb-command-name "gdb -q")
|   (my-compile)
|   )

my-c-init is in turn added as c file hook:

| (add-hook 'c-mode-common-hook 'my-c-init)

I put "message" calls in so I know the functions are calling each other
but for some reason the compile command is staying at the default "make
-k" even if there is no makefile in the c files directory. What have I
broken? It used to work. Or something similar used to work....

reply via email to

[Prev in Thread] Current Thread [Next in Thread]