Thread: [CEDET-devel] C preprocessor defines not taken into account by Cedet/Semantic
Brought to you by:
zappo
From: Abdellatif El K. <elk...@gm...> - 2011-09-05 21:55:52
|
Hello, I am trying to use Emacs as an IDE in my Linux kernel development projects. So I installed CEDET and GNU Global (gtags) with no problems. When I open a C source code belonging to my Linux kernel source folder, the linux project is detected automatically. Functions, variables, headers and other keywords are highlighted correctly. Through the ~/.emacs file I configured semantic's code completion and intellisense. So when I press C-<SPC> the code completion menu appears and I can choose what's needed. The issue is when I use preprocessor defines, the intellisense system shows the menu on the current location but doesn't detect the right things when invoked (C-<SPC>). Even I close and restart emacs the same behavior is reproduced. The test code is: //---------------------------------------------------------------------------------------- typedef struct { int p1; #ifdef __KERNEL__ int p2; #endif #ifdef USE1 char p3; #endif #ifdef __LINUX_ARM_ARCH__ int p4; #endif }OBJ; OBJ g_obj; //---------------------------------------------------------------------------------------- __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as follows: __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . "")) in .emacs USE1 : defined in a header file included by the current C source file. __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs In the .emacs file I also added all the needed includes and defines required by GCC cross compiler (GCC for ARM) to build the kernel project. I also tried to force semantic to use GCC cross compiler command line in place of the system GCC to preprocess correctly but haven't found how to do that. The .emacs file, the output of the "M-x semantic-c-describe- environment" command and the software versions are shown below. Any help or indication is welcomed :) Best regards ############# Software versions ############# - Emacs (23.2.1) - Ubuntu machine (natty, 11.04) - Cedet 1.0 (from http://cedet.sourceforge.net/) ############# .emacs ############# ;load CEDET (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") (require 'ede) (global-ede-mode t) ; turn on which-func support (plus all other code helpers) (semantic-load-enable-gaudy-code-helpers) (semantic-load-enable-excessive-code-helpers) ; turn on all "useful" features (setq semantic-load-turn-useful-things-on t) (setq-mode-local c-mode semanticdb-find-default-throttle '(project unloaded system recursive)) ;init names completion, and displaying of information for tags & classes (require 'semantic-ia) ;preprocessing of source code (require 'semantic-c) (semantic-reset-system-include 'c-mode) (semantic-reset-system-include 'c++-mode) (semantic-add-system-include "/home/abdellatif/toolchain/arm- eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ include" 'c-mode) (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- mode) (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- omap2/include" 'c-mode) (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- omap/include" 'c-mode) (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ abdellatif/kernel/include/generated/autoconf.h") (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__LINUX_ARM_ARCH__" . "7")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("KBUILD_STR(s)" . "#s")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("KBUILD_BASENAME" . "KBUILD_STR(main)")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("KBUILD_MODNAME" . "KBUILD_STR(main)")) ;semantic integration with imenu (display of a menu with a list of functions, variables, and other tags) (defun my-semantic-hook () (imenu-add-to-menubar "TAGS")) (add-hook 'semantic-init-hooks 'my-semantic-hook) ;names completion (semantic commands) (defun my-cedet-hook () (local-set-key [(control return)] 'semantic-ia-complete-symbol) (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) (add-hook 'c-mode-common-hook 'my-cedet-hook) ;navigating in source code (semantic-mru-bookmark-mode 1) ;tell semantic to store its tags database between sessions here (require 'semanticdb) (setq-default semanticdb-default-save-directory "~/.semantic.cache") (setq-default semanticdb-default-system-save-directory "~/.semantic.cache") ;allow Semanticdb use databases generated by global(gtags) (require 'semanticdb-global) (semanticdb-enable-gnu-global-databases 'c-mode) ############# semantic-c-describe-environment ############# Calculated GCC Parameters: version = 4.5.2 --target = i686-linux-gnu --host = i686-linux-gnu --build = i686-linux-gnu --enable-checking = release --with-tune = generic --with-arch-32 = i686 --disable-werror = nil --enable-targets = all --enable-objc-gc = nil --with-plugin-ld = ld.gold --enable-ld = default --enable-gold = nil --enable-plugin = nil --enable-libstdcxx-time = yes --enable-libstdcxx-debug = nil --enable-clocale = gnu --with-sysroot = / --enable-nls = nil --libdir = /usr/lib/i386-linux-gnu --with-gxx-include-dir = /usr/include/c++/4.5 --enable-threads = posix --without-included-gettext = nil --libexecdir = /usr/lib/i386-linux-gnu --with-system-zlib = nil --enable-linker-build-id = nil --with-multiarch-defaults = i386-linux-gnu --enable-multiarch = nil --enable-shared = nil --program-suffix = -4.5 --prefix = /usr --enable-languages = c,c++,fortran,objc,obj-c++ --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs 4.5.2-8ubuntu4' = nil --with-pkgversion = 'Ubuntu/Linaro -v = nil target = i686-linux-gnu Include Path Summary: This file's system include path is: /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ include/ /home/abdellatif/kernel/arch/arm/include/ /home/abdellatif/kernel/include/ /home/abdellatif/kernel/arch/arm/mach-omap2/include/ /home/abdellatif/kernel/arch/arm/plat-omap/include/ Macro Summary: Your CPP table is primed from these files: /home/abdellatif/kernel/include/generated/autoconf.h in table: #<semanticdb-table autoconf.h (652 tags)> /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h in table: #<semanticdb-table c++config.h (193 tags)> Built-in symbol map: __THROW = __const = const __restrict = __declspec = ((spp-arg-list (foo) 1 . 2)) __attribute__ = ((spp-arg-list (foo) 1 . 2)) User symbol map: KBUILD_MODNAME = KBUILD_STR(main) KBUILD_BASENAME = KBUILD_STR(main) KBUILD_STR(s) = #s __LINUX_ARM_ARCH__ = 7 __KERNEL__ = __DBL_MIN_EXP__ = (-1021) __pentiumpro__ = 1 __UINT_LEAST16_MAX__ = 65535 __FLT_MIN__ = 1.17549435082228750797e-38F __CHAR_BIT__ = 8 __UINT8_MAX__ = 255 __WINT_MAX__ = 4294967295U __SIZE_MAX__ = 4294967295U __WCHAR_MAX__ = 2147483647 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 __FLT_EVAL_METHOD__ = 2 __unix__ = 1 __UINT_FAST64_MAX__ = 18446744073709551615ULL __SIG_ATOMIC_TYPE__ = int __DBL_MIN_10_EXP__ = (-307) __FINITE_MATH_ONLY__ = 0 __GNUC_PATCHLEVEL__ = 2 __UINT_FAST8_MAX__ = 255 __DEC64_MAX_EXP__ = 385 __INT8_C(c) = c __UINT_LEAST64_MAX__ = 18446744073709551615ULL __SHRT_MAX__ = 32767 __LDBL_MAX__ = 1.18973149535723176502e+4932L __UINT_LEAST8_MAX__ = 255 __linux = 1 __DEC32_EPSILON__ = 1E-6DF __unix = 1 __UINT32_MAX__ = 4294967295U __LDBL_MAX_EXP__ = 16384 __WINT_MIN__ = 0U __linux__ = 1 __SCHAR_MAX__ = 127 __DBL_DIG__ = 15 _FORTIFY_SOURCE = 2 __SIZEOF_INT__ = 4 __SIZEOF_POINTER__ = 4 __STDC_HOSTED__ = 1 __LDBL_HAS_INFINITY__ = 1 __FLT_EPSILON__ = 1.19209289550781250000e-7F __GXX_WEAK__ = 1 __LDBL_MIN__ = 3.36210314311209350626e-4932L __DEC32_MAX__ = 9.999999E96DF __INT32_MAX__ = 2147483647 __SIZEOF_LONG__ = 4 __UINT16_C(c) = c __DECIMAL_DIG__ = 21 __gnu_linux__ = 1 __LDBL_HAS_QUIET_NAN__ = 1 __GNUC__ = 4 __GXX_RTTI = 1 __FLT_HAS_DENORM__ = 1 __SIZEOF_LONG_DOUBLE__ = 12 __BIGGEST_ALIGNMENT__ = 16 __i686 = 1 __DBL_MAX__ = ((double)1.79769313486231570815e+308L) __INT_FAST32_MAX__ = 2147483647 __DBL_HAS_INFINITY__ = 1 __INT64_MAX__ = 9223372036854775807LL __DEC32_MIN_EXP__ = (-94) __INT_FAST16_TYPE__ = int __LDBL_HAS_DENORM__ = 1 __cplusplus = 1 __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL __INT_LEAST32_MAX__ = 2147483647 __DEC32_MIN__ = 1E-95DF __DEPRECATED = 1 __DBL_MAX_EXP__ = 1024 __DEC128_EPSILON__ = 1E-33DL __PTRDIFF_MAX__ = 2147483647 __GNUG__ = 4 __LONG_LONG_MAX__ = 9223372036854775807LL __SIZEOF_SIZE_T__ = 4 __SIZEOF_WINT_T__ = 4 __GCC_HAVE_DWARF2_CFI_ASM = 1 __GXX_ABI_VERSION = 1002 __FLT_MIN_EXP__ = (-125) __i686__ = 1 __DBL_MIN__ = ((double)2.22507385850720138309e-308L) __FLT_MIN_10_EXP__ = (-37) __DECIMAL_BID_FORMAT__ = 1 __DEC128_MIN__ = 1E-6143DL __UINT16_MAX__ = 65535 __DBL_HAS_DENORM__ = 1 __NO_INLINE__ = 1 __i386 = 1 __FLT_MANT_DIG__ = 24 __VERSION__ = "4.5.2" __INT32_C(c) = c __DEC64_EPSILON__ = 1E-15DD __DEC128_MIN_EXP__ = (-6142) __INT_FAST32_TYPE__ = int unix = 1 __INT16_MAX__ = 32767 __i386__ = 1 __UINT64_MAX__ = 18446744073709551615ULL __ELF__ = 1 __FLT_RADIX__ = 2 __LDBL_EPSILON__ = 1.08420217248550443401e-19L __SIG_ATOMIC_MAX__ = 2147483647 __SIZEOF_PTRDIFF_T__ = 4 __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF __pentiumpro = 1 __INT_FAST16_MAX__ = 2147483647 __UINT_FAST32_MAX__ = 4294967295U __FLT_HAS_QUIET_NAN__ = 1 __FLT_MAX_10_EXP__ = 38 __LONG_MAX__ = 2147483647L __DEC128_SUBNORMAL_MIN__ = 0.000000000000000000000000000000001E-6143DL __FLT_HAS_INFINITY__ = 1 __DEC64_MAX__ = 9.999999999999999E384DD __PRAGMA_REDEFINE_EXTNAME = 1 __INT_LEAST16_MAX__ = 32767 __DEC64_MANT_DIG__ = 16 __UINT_LEAST32_MAX__ = 4294967295U __DEC32_MAX_EXP__ = 97 __INT_FAST8_MAX__ = 127 __INTPTR_MAX__ = 2147483647 linux = 1 __EXCEPTIONS = 1 __LDBL_MANT_DIG__ = 64 __DBL_HAS_QUIET_NAN__ = 1 __INTPTR_TYPE__ = int __WCHAR_TYPE__ = int __SIZEOF_FLOAT__ = 4 __UINTPTR_MAX__ = 4294967295U __DEC64_MIN_EXP__ = (-382) __INT_FAST64_MAX__ = 9223372036854775807LL __FLT_DIG__ = 6 __INT_MAX__ = 2147483647 __FLT_MAX_EXP__ = 128 __DBL_MANT_DIG__ = 53 __INT_LEAST64_MAX__ = 9223372036854775807LL __DEC64_MIN__ = 1E-383DD __SIZEOF_SHORT__ = 2 __LDBL_MIN_EXP__ = (-16381) __INT_LEAST8_MAX__ = 127 __SSP__ = 1 __LDBL_MAX_10_EXP__ = 4932 __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) __UINT8_C(c) = c __INT_LEAST32_TYPE__ = int __SIZEOF_WCHAR_T__ = 4 __DEC_EVAL_METHOD__ = 2 __INTMAX_MAX__ = 9223372036854775807LL __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F __INT8_MAX__ = 127 __FLT_MAX__ = 3.40282346638528859812e+38F __INT32_TYPE__ = int __SIZEOF_DOUBLE__ = 8 i386 = 1 __DEC128_MAX_EXP__ = 6145 __GNUC_MINOR__ = 5 __UINTMAX_MAX__ = 18446744073709551615ULL __DEC32_MANT_DIG__ = 7 __DBL_MAX_10_EXP__ = 308 __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L __INT16_C(c) = c __STDC__ = 1 __PTRDIFF_TYPE__ = int __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD __DEC128_MANT_DIG__ = 34 __LDBL_MIN_10_EXP__ = (-4931) __SIZEOF_LONG_LONG__ = 8 __LDBL_DIG__ = 18 __UINT_FAST16_MAX__ = 4294967295U __GNUC_GNU_INLINE__ = 1 _GNU_SOURCE = 1 -- Abdellatif El Khlifi abd...@ie... http://abdellatif.emurse.com/ |
From: Eric M. L. <eri...@gm...> - 2011-09-10 12:27:08
|
Hi, Sorry about the late reply. I thought I'd replied to this earlier. In my experiments, the parsing here worked fine. It seems likely that for this file, it was parsed and the tags stowed away when you noticed the problem. If you then added the configurations but the file was never edited, then it would appear as you described below. In your file, you can use the senator menu to select a forced tag refresh. If you have big piles of files that have this issue, now that you've reconfigured things, you can delete items from ~/.semanticdb matching the directories you care about, and start over and things should be fine. The one problem that will persist is related to: > USE1 : defined in a header file included by the current C source file. where semantic doesn't actually include the files for you, so you would need to add it to semantic-lex-c-preprocessor-symbol-map, or add it's header file to semantic-lex-c-preprocessor-symbol-file. Eric On 09/05/2011 05:55 PM, Abdellatif El Khlifi wrote: > Hello, > > I am trying to use Emacs as an IDE in my Linux kernel development > projects. So I installed CEDET and GNU Global (gtags) with no > problems. > > When I open a C source code belonging to my Linux kernel source > folder, the linux project is detected automatically. Functions, > variables, headers and other keywords are highlighted correctly. > > Through the ~/.emacs file I configured semantic's code completion and > intellisense. So when I press C-<SPC> the code completion menu appears > and I can choose what's needed. > > The issue is when I use preprocessor defines, the intellisense system > shows the menu on the current location but doesn't detect the right > things when invoked (C-<SPC>). Even I close and restart emacs the same > behavior is reproduced. > > The test code is: > > //---------------------------------------------------------------------------------------- > > typedef struct > { > int p1; > > #ifdef __KERNEL__ > > int p2; > > #endif > > #ifdef USE1 > > char p3; > > #endif > > #ifdef __LINUX_ARM_ARCH__ > > int p4; > > #endif > > }OBJ; > > OBJ g_obj; > > //---------------------------------------------------------------------------------------- > > __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as > follows: > > __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map > '("__KERNEL__" . "")) in .emacs > USE1 : defined in a header file included by the current C source file. > __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- > file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs > > In the .emacs file I also added all the needed includes and defines > required by GCC cross compiler (GCC for ARM) to build the kernel > project. > > I also tried to force semantic to use GCC cross compiler command line > in place of the system GCC to preprocess correctly but haven't found > how to do that. > > > The .emacs file, the output of the "M-x semantic-c-describe- > environment" command and the software versions are shown below. > > Any help or indication is welcomed :) > Best regards > > ############# Software versions ############# > > - Emacs (23.2.1) > - Ubuntu machine (natty, 11.04) > - Cedet 1.0 (from http://cedet.sourceforge.net/) > > ############# .emacs ############# > > ;load CEDET > > (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") > > (require 'ede) > > (global-ede-mode t) > > ; turn on which-func support (plus all other code helpers) > (semantic-load-enable-gaudy-code-helpers) > (semantic-load-enable-excessive-code-helpers) > > ; turn on all "useful" features > (setq semantic-load-turn-useful-things-on t) > > (setq-mode-local c-mode > semanticdb-find-default-throttle > '(project unloaded system recursive)) > > > ;init names completion, and displaying of information for tags & > classes > (require 'semantic-ia) > > > > ;preprocessing of source code > > (require 'semantic-c) > > (semantic-reset-system-include 'c-mode) > (semantic-reset-system-include 'c++-mode) > (semantic-add-system-include "/home/abdellatif/toolchain/arm- > eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) > (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ > include" 'c-mode) > (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- > mode) > (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- > omap2/include" 'c-mode) > (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- > omap/include" 'c-mode) > (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ > abdellatif/kernel/include/generated/autoconf.h") > (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . > "")) > (add-to-list 'semantic-lex-c-preprocessor-symbol-map > '("__LINUX_ARM_ARCH__" . "7")) > (add-to-list 'semantic-lex-c-preprocessor-symbol-map > '("KBUILD_STR(s)" . "#s")) > (add-to-list 'semantic-lex-c-preprocessor-symbol-map > '("KBUILD_BASENAME" . "KBUILD_STR(main)")) > (add-to-list 'semantic-lex-c-preprocessor-symbol-map > '("KBUILD_MODNAME" . "KBUILD_STR(main)")) > > > ;semantic integration with imenu (display of a menu with a list of > functions, variables, and other tags) > (defun my-semantic-hook () > (imenu-add-to-menubar "TAGS")) > (add-hook 'semantic-init-hooks 'my-semantic-hook) > > ;names completion (semantic commands) > (defun my-cedet-hook () > (local-set-key [(control return)] 'semantic-ia-complete-symbol) > (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) > (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) > (add-hook 'c-mode-common-hook 'my-cedet-hook) > > ;navigating in source code > (semantic-mru-bookmark-mode 1) > > > ;tell semantic to store its tags database between sessions here > (require 'semanticdb) > (setq-default semanticdb-default-save-directory "~/.semantic.cache") > (setq-default semanticdb-default-system-save-directory > "~/.semantic.cache") > > ;allow Semanticdb use databases generated by global(gtags) > (require 'semanticdb-global) > (semanticdb-enable-gnu-global-databases 'c-mode) > > ############# semantic-c-describe-environment ############# > > Calculated GCC Parameters: > version = 4.5.2 > --target = i686-linux-gnu > --host = i686-linux-gnu > --build = i686-linux-gnu > --enable-checking = release > --with-tune = generic > --with-arch-32 = i686 > --disable-werror = nil > --enable-targets = all > --enable-objc-gc = nil > --with-plugin-ld = ld.gold > --enable-ld = default > --enable-gold = nil > --enable-plugin = nil > --enable-libstdcxx-time = yes > --enable-libstdcxx-debug = nil > --enable-clocale = gnu > --with-sysroot = / > --enable-nls = nil > --libdir = /usr/lib/i386-linux-gnu > --with-gxx-include-dir = /usr/include/c++/4.5 > --enable-threads = posix > --without-included-gettext = nil > --libexecdir = /usr/lib/i386-linux-gnu > --with-system-zlib = nil > --enable-linker-build-id = nil > --with-multiarch-defaults = i386-linux-gnu > --enable-multiarch = nil > --enable-shared = nil > --program-suffix = -4.5 > --prefix = /usr > --enable-languages = c,c++,fortran,objc,obj-c++ > --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs > 4.5.2-8ubuntu4' = nil > --with-pkgversion = 'Ubuntu/Linaro > -v = nil > target = i686-linux-gnu > > Include Path Summary: > > This file's system include path is: > /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ > include/ > /home/abdellatif/kernel/arch/arm/include/ > /home/abdellatif/kernel/include/ > /home/abdellatif/kernel/arch/arm/mach-omap2/include/ > /home/abdellatif/kernel/arch/arm/plat-omap/include/ > > > Macro Summary: > > Your CPP table is primed from these files: > /home/abdellatif/kernel/include/generated/autoconf.h > in table: #<semanticdb-table autoconf.h (652 tags)> > /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h > in table: #<semanticdb-table c++config.h (193 tags)> > > Built-in symbol map: > __THROW = > __const = const > __restrict = > __declspec = ((spp-arg-list (foo) 1 . 2)) > __attribute__ = ((spp-arg-list (foo) 1 . 2)) > > User symbol map: > KBUILD_MODNAME = KBUILD_STR(main) > KBUILD_BASENAME = KBUILD_STR(main) > KBUILD_STR(s) = #s > __LINUX_ARM_ARCH__ = 7 > __KERNEL__ = > __DBL_MIN_EXP__ = (-1021) > __pentiumpro__ = 1 > __UINT_LEAST16_MAX__ = 65535 > __FLT_MIN__ = 1.17549435082228750797e-38F > __CHAR_BIT__ = 8 > __UINT8_MAX__ = 255 > __WINT_MAX__ = 4294967295U > __SIZE_MAX__ = 4294967295U > __WCHAR_MAX__ = 2147483647 <tel:2147483647> > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 > __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 > __FLT_EVAL_METHOD__ = 2 > __unix__ = 1 > __UINT_FAST64_MAX__ = 18446744073709551615ULL > __SIG_ATOMIC_TYPE__ = int > __DBL_MIN_10_EXP__ = (-307) > __FINITE_MATH_ONLY__ = 0 > __GNUC_PATCHLEVEL__ = 2 > __UINT_FAST8_MAX__ = 255 > __DEC64_MAX_EXP__ = 385 > __INT8_C(c) = c > __UINT_LEAST64_MAX__ = 18446744073709551615ULL > __SHRT_MAX__ = 32767 > __LDBL_MAX__ = 1.18973149535723176502e+4932L > __UINT_LEAST8_MAX__ = 255 > __linux = 1 > __DEC32_EPSILON__ = 1E-6DF > __unix = 1 > __UINT32_MAX__ = 4294967295U > __LDBL_MAX_EXP__ = 16384 > __WINT_MIN__ = 0U > __linux__ = 1 > __SCHAR_MAX__ = 127 > __DBL_DIG__ = 15 > _FORTIFY_SOURCE = 2 > __SIZEOF_INT__ = 4 > __SIZEOF_POINTER__ = 4 > __STDC_HOSTED__ = 1 > __LDBL_HAS_INFINITY__ = 1 > __FLT_EPSILON__ = 1.19209289550781250000e-7F > __GXX_WEAK__ = 1 > __LDBL_MIN__ = 3.36210314311209350626e-4932L > __DEC32_MAX__ = 9.999999E96DF > __INT32_MAX__ = 2147483647 > __SIZEOF_LONG__ = 4 > __UINT16_C(c) = c > __DECIMAL_DIG__ = 21 > __gnu_linux__ = 1 > __LDBL_HAS_QUIET_NAN__ = 1 > __GNUC__ = 4 > __GXX_RTTI = 1 > __FLT_HAS_DENORM__ = 1 > __SIZEOF_LONG_DOUBLE__ = 12 > __BIGGEST_ALIGNMENT__ = 16 > __i686 = 1 > __DBL_MAX__ = ((double)1.79769313486231570815e+308L) > __INT_FAST32_MAX__ = 2147483647 > __DBL_HAS_INFINITY__ = 1 > __INT64_MAX__ = 9223372036854775807LL > __DEC32_MIN_EXP__ = (-94) > __INT_FAST16_TYPE__ = int > __LDBL_HAS_DENORM__ = 1 > __cplusplus = 1 > __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL > __INT_LEAST32_MAX__ = 2147483647 > __DEC32_MIN__ = 1E-95DF > __DEPRECATED = 1 > __DBL_MAX_EXP__ = 1024 > __DEC128_EPSILON__ = 1E-33DL > __PTRDIFF_MAX__ = 2147483647 > __GNUG__ = 4 > __LONG_LONG_MAX__ = 9223372036854775807LL > __SIZEOF_SIZE_T__ = 4 > __SIZEOF_WINT_T__ = 4 > __GCC_HAVE_DWARF2_CFI_ASM = 1 > __GXX_ABI_VERSION = 1002 > __FLT_MIN_EXP__ = (-125) > __i686__ = 1 > __DBL_MIN__ = ((double)2.22507385850720138309e-308L) > __FLT_MIN_10_EXP__ = (-37) > __DECIMAL_BID_FORMAT__ = 1 > __DEC128_MIN__ = 1E-6143DL > __UINT16_MAX__ = 65535 > __DBL_HAS_DENORM__ = 1 > __NO_INLINE__ = 1 > __i386 = 1 > __FLT_MANT_DIG__ = 24 > __VERSION__ = "4.5.2" > __INT32_C(c) = c > __DEC64_EPSILON__ = 1E-15DD > __DEC128_MIN_EXP__ = (-6142) > __INT_FAST32_TYPE__ = int > unix = 1 > __INT16_MAX__ = 32767 > __i386__ = 1 > __UINT64_MAX__ = 18446744073709551615ULL > __ELF__ = 1 > __FLT_RADIX__ = 2 > __LDBL_EPSILON__ = 1.08420217248550443401e-19L > __SIG_ATOMIC_MAX__ = 2147483647 > __SIZEOF_PTRDIFF_T__ = 4 > __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF > __pentiumpro = 1 > __INT_FAST16_MAX__ = 2147483647 > __UINT_FAST32_MAX__ = 4294967295U > __FLT_HAS_QUIET_NAN__ = 1 > __FLT_MAX_10_EXP__ = 38 > __LONG_MAX__ = 2147483647L > __DEC128_SUBNORMAL_MIN__ = > 0.000000000000000000000000000000001E-6143DL > __FLT_HAS_INFINITY__ = 1 > __DEC64_MAX__ = 9.999999999999999E384DD > __PRAGMA_REDEFINE_EXTNAME = 1 > __INT_LEAST16_MAX__ = 32767 > __DEC64_MANT_DIG__ = 16 > __UINT_LEAST32_MAX__ = 4294967295U > __DEC32_MAX_EXP__ = 97 > __INT_FAST8_MAX__ = 127 > __INTPTR_MAX__ = 2147483647 > linux = 1 > __EXCEPTIONS = 1 > __LDBL_MANT_DIG__ = 64 > __DBL_HAS_QUIET_NAN__ = 1 > __INTPTR_TYPE__ = int > __WCHAR_TYPE__ = int > __SIZEOF_FLOAT__ = 4 > __UINTPTR_MAX__ = 4294967295U > __DEC64_MIN_EXP__ = (-382) > __INT_FAST64_MAX__ = 9223372036854775807LL > __FLT_DIG__ = 6 > __INT_MAX__ = 2147483647 > __FLT_MAX_EXP__ = 128 > __DBL_MANT_DIG__ = 53 > __INT_LEAST64_MAX__ = 9223372036854775807LL > __DEC64_MIN__ = 1E-383DD > __SIZEOF_SHORT__ = 2 > __LDBL_MIN_EXP__ = (-16381) > __INT_LEAST8_MAX__ = 127 > __SSP__ = 1 > __LDBL_MAX_10_EXP__ = 4932 > __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) > __UINT8_C(c) = c > __INT_LEAST32_TYPE__ = int > __SIZEOF_WCHAR_T__ = 4 > __DEC_EVAL_METHOD__ = 2 > __INTMAX_MAX__ = 9223372036854775807LL > __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F > __INT8_MAX__ = 127 > __FLT_MAX__ = 3.40282346638528859812e+38F > __INT32_TYPE__ = int > __SIZEOF_DOUBLE__ = 8 > i386 = 1 > __DEC128_MAX_EXP__ = 6145 > __GNUC_MINOR__ = 5 > __UINTMAX_MAX__ = 18446744073709551615ULL > __DEC32_MANT_DIG__ = 7 > __DBL_MAX_10_EXP__ = 308 > __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L > __INT16_C(c) = c > __STDC__ = 1 > __PTRDIFF_TYPE__ = int > __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD > __DEC128_MANT_DIG__ = 34 > __LDBL_MIN_10_EXP__ = (-4931) > __SIZEOF_LONG_LONG__ = 8 > __LDBL_DIG__ = 18 > __UINT_FAST16_MAX__ = 4294967295U > __GNUC_GNU_INLINE__ = 1 > _GNU_SOURCE = 1 > > > > -- > Abdellatif El Khlifi > abd...@ie... <mailto:abd...@ie...> > http://abdellatif.emurse.com/ > > > > ------------------------------------------------------------------------------ > Special Offer -- Download ArcSight Logger for FREE! > Finally, a world-class log management solution at an even better > price-free! And you'll get a free "Love Thy Logs" t-shirt when you > download Logger. Secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsisghtdev2dev > > > > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-devel |
From: Abdellatif El K. <elk...@gm...> - 2011-09-11 04:30:20
|
Hello, Thank you for the answer. I did these steps: - added (add-to-list 'semantic-lex-c-preprocessor-symbol-file "full path to the header file") to the ~/.emacs - removed ~/.semanticdb - restarted emacs , said no to the message box - M-x semanticdb-find-test-translate-paths - forced tag refresh in senator menu - restarted emacs , said yes to the message box - M-x semanticdb-find-test-translate-paths - forced tag refresh in senator menu When I use intellisense I find that only __KERNEL__ is recognized. __LINUX_ARM_ARCH__ and USE1 are not. __KERNEL__ : defined with semantic-lex-c-preprocessor-symbol-map USE1 : defined in a header file included by the current C source file. __LINUX_ARM_ARCH__ : defined with semantic-lex-c-preprocessor-symbol-file Thank you for the help. On Sat, Sep 10, 2011 at 1:26 PM, Eric M. Ludlam <eri...@gm...> wrote: > Hi, > > Sorry about the late reply. I thought I'd replied to this earlier. > > In my experiments, the parsing here worked fine. It seems likely that for > this file, it was parsed and the tags stowed away when you noticed the > problem. If you then added the configurations but the file was never > edited, then it would appear as you described below. In your file, you can > use the senator menu to select a forced tag refresh. If you have big piles > of files that have this issue, now that you've reconfigured things, you can > delete items from ~/.semanticdb matching the directories you care about, and > start over and things should be fine. > > The one problem that will persist is related to: > >> USE1 : defined in a header file included by the current C source file. > > where semantic doesn't actually include the files for you, so you would need > to add it to semantic-lex-c-preprocessor-symbol-map, or add it's header file > to semantic-lex-c-preprocessor-symbol-file. > > Eric > > On 09/05/2011 05:55 PM, Abdellatif El Khlifi wrote: >> >> Hello, >> >> I am trying to use Emacs as an IDE in my Linux kernel development >> projects. So I installed CEDET and GNU Global (gtags) with no >> problems. >> >> When I open a C source code belonging to my Linux kernel source >> folder, the linux project is detected automatically. Functions, >> variables, headers and other keywords are highlighted correctly. >> >> Through the ~/.emacs file I configured semantic's code completion and >> intellisense. So when I press C-<SPC> the code completion menu appears >> and I can choose what's needed. >> >> The issue is when I use preprocessor defines, the intellisense system >> shows the menu on the current location but doesn't detect the right >> things when invoked (C-<SPC>). Even I close and restart emacs the same >> behavior is reproduced. >> >> The test code is: >> >> >> //---------------------------------------------------------------------------------------- >> >> typedef struct >> { >> int p1; >> >> #ifdef __KERNEL__ >> >> int p2; >> >> #endif >> >> #ifdef USE1 >> >> char p3; >> >> #endif >> >> #ifdef __LINUX_ARM_ARCH__ >> >> int p4; >> >> #endif >> >> }OBJ; >> >> OBJ g_obj; >> >> >> //---------------------------------------------------------------------------------------- >> >> __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as >> follows: >> >> __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map >> '("__KERNEL__" . "")) in .emacs >> USE1 : defined in a header file included by the current C source file. >> __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- >> file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs >> >> In the .emacs file I also added all the needed includes and defines >> required by GCC cross compiler (GCC for ARM) to build the kernel >> project. >> >> I also tried to force semantic to use GCC cross compiler command line >> in place of the system GCC to preprocess correctly but haven't found >> how to do that. >> >> >> The .emacs file, the output of the "M-x semantic-c-describe- >> environment" command and the software versions are shown below. >> >> Any help or indication is welcomed :) >> Best regards >> >> ############# Software versions ############# >> >> - Emacs (23.2.1) >> - Ubuntu machine (natty, 11.04) >> - Cedet 1.0 (from http://cedet.sourceforge.net/) >> >> ############# .emacs ############# >> >> ;load CEDET >> >> (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") >> >> (require 'ede) >> >> (global-ede-mode t) >> >> ; turn on which-func support (plus all other code helpers) >> (semantic-load-enable-gaudy-code-helpers) >> (semantic-load-enable-excessive-code-helpers) >> >> ; turn on all "useful" features >> (setq semantic-load-turn-useful-things-on t) >> >> (setq-mode-local c-mode >> semanticdb-find-default-throttle >> '(project unloaded system recursive)) >> >> >> ;init names completion, and displaying of information for tags & >> classes >> (require 'semantic-ia) >> >> >> >> ;preprocessing of source code >> >> (require 'semantic-c) >> >> (semantic-reset-system-include 'c-mode) >> (semantic-reset-system-include 'c++-mode) >> (semantic-add-system-include "/home/abdellatif/toolchain/arm- >> eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) >> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ >> include" 'c-mode) >> (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- >> mode) >> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- >> omap2/include" 'c-mode) >> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- >> omap/include" 'c-mode) >> (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ >> abdellatif/kernel/include/generated/autoconf.h") >> (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . >> "")) >> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >> '("__LINUX_ARM_ARCH__" . "7")) >> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >> '("KBUILD_STR(s)" . "#s")) >> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >> '("KBUILD_BASENAME" . "KBUILD_STR(main)")) >> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >> '("KBUILD_MODNAME" . "KBUILD_STR(main)")) >> >> >> ;semantic integration with imenu (display of a menu with a list of >> functions, variables, and other tags) >> (defun my-semantic-hook () >> (imenu-add-to-menubar "TAGS")) >> (add-hook 'semantic-init-hooks 'my-semantic-hook) >> >> ;names completion (semantic commands) >> (defun my-cedet-hook () >> (local-set-key [(control return)] 'semantic-ia-complete-symbol) >> (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) >> (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) >> (add-hook 'c-mode-common-hook 'my-cedet-hook) >> >> ;navigating in source code >> (semantic-mru-bookmark-mode 1) >> >> >> ;tell semantic to store its tags database between sessions here >> (require 'semanticdb) >> (setq-default semanticdb-default-save-directory "~/.semantic.cache") >> (setq-default semanticdb-default-system-save-directory >> "~/.semantic.cache") >> >> ;allow Semanticdb use databases generated by global(gtags) >> (require 'semanticdb-global) >> (semanticdb-enable-gnu-global-databases 'c-mode) >> >> ############# semantic-c-describe-environment ############# >> >> Calculated GCC Parameters: >> version = 4.5.2 >> --target = i686-linux-gnu >> --host = i686-linux-gnu >> --build = i686-linux-gnu >> --enable-checking = release >> --with-tune = generic >> --with-arch-32 = i686 >> --disable-werror = nil >> --enable-targets = all >> --enable-objc-gc = nil >> --with-plugin-ld = ld.gold >> --enable-ld = default >> --enable-gold = nil >> --enable-plugin = nil >> --enable-libstdcxx-time = yes >> --enable-libstdcxx-debug = nil >> --enable-clocale = gnu >> --with-sysroot = / >> --enable-nls = nil >> --libdir = /usr/lib/i386-linux-gnu >> --with-gxx-include-dir = /usr/include/c++/4.5 >> --enable-threads = posix >> --without-included-gettext = nil >> --libexecdir = /usr/lib/i386-linux-gnu >> --with-system-zlib = nil >> --enable-linker-build-id = nil >> --with-multiarch-defaults = i386-linux-gnu >> --enable-multiarch = nil >> --enable-shared = nil >> --program-suffix = -4.5 >> --prefix = /usr >> --enable-languages = c,c++,fortran,objc,obj-c++ >> --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs >> 4.5.2-8ubuntu4' = nil >> --with-pkgversion = 'Ubuntu/Linaro >> -v = nil >> target = i686-linux-gnu >> >> Include Path Summary: >> >> This file's system include path is: >> /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ >> include/ >> /home/abdellatif/kernel/arch/arm/include/ >> /home/abdellatif/kernel/include/ >> /home/abdellatif/kernel/arch/arm/mach-omap2/include/ >> /home/abdellatif/kernel/arch/arm/plat-omap/include/ >> >> >> Macro Summary: >> >> Your CPP table is primed from these files: >> /home/abdellatif/kernel/include/generated/autoconf.h >> in table: #<semanticdb-table autoconf.h (652 tags)> >> /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h >> in table: #<semanticdb-table c++config.h (193 tags)> >> >> Built-in symbol map: >> __THROW = >> __const = const >> __restrict = >> __declspec = ((spp-arg-list (foo) 1 . 2)) >> __attribute__ = ((spp-arg-list (foo) 1 . 2)) >> >> User symbol map: >> KBUILD_MODNAME = KBUILD_STR(main) >> KBUILD_BASENAME = KBUILD_STR(main) >> KBUILD_STR(s) = #s >> __LINUX_ARM_ARCH__ = 7 >> __KERNEL__ = >> __DBL_MIN_EXP__ = (-1021) >> __pentiumpro__ = 1 >> __UINT_LEAST16_MAX__ = 65535 >> __FLT_MIN__ = 1.17549435082228750797e-38F >> __CHAR_BIT__ = 8 >> __UINT8_MAX__ = 255 >> __WINT_MAX__ = 4294967295U >> __SIZE_MAX__ = 4294967295U >> __WCHAR_MAX__ = 2147483647 <tel:2147483647> >> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 >> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 >> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 >> __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) >> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 >> __FLT_EVAL_METHOD__ = 2 >> __unix__ = 1 >> __UINT_FAST64_MAX__ = 18446744073709551615ULL >> __SIG_ATOMIC_TYPE__ = int >> __DBL_MIN_10_EXP__ = (-307) >> __FINITE_MATH_ONLY__ = 0 >> __GNUC_PATCHLEVEL__ = 2 >> __UINT_FAST8_MAX__ = 255 >> __DEC64_MAX_EXP__ = 385 >> __INT8_C(c) = c >> __UINT_LEAST64_MAX__ = 18446744073709551615ULL >> __SHRT_MAX__ = 32767 >> __LDBL_MAX__ = 1.18973149535723176502e+4932L >> __UINT_LEAST8_MAX__ = 255 >> __linux = 1 >> __DEC32_EPSILON__ = 1E-6DF >> __unix = 1 >> __UINT32_MAX__ = 4294967295U >> __LDBL_MAX_EXP__ = 16384 >> __WINT_MIN__ = 0U >> __linux__ = 1 >> __SCHAR_MAX__ = 127 >> __DBL_DIG__ = 15 >> _FORTIFY_SOURCE = 2 >> __SIZEOF_INT__ = 4 >> __SIZEOF_POINTER__ = 4 >> __STDC_HOSTED__ = 1 >> __LDBL_HAS_INFINITY__ = 1 >> __FLT_EPSILON__ = 1.19209289550781250000e-7F >> __GXX_WEAK__ = 1 >> __LDBL_MIN__ = 3.36210314311209350626e-4932L >> __DEC32_MAX__ = 9.999999E96DF >> __INT32_MAX__ = 2147483647 >> __SIZEOF_LONG__ = 4 >> __UINT16_C(c) = c >> __DECIMAL_DIG__ = 21 >> __gnu_linux__ = 1 >> __LDBL_HAS_QUIET_NAN__ = 1 >> __GNUC__ = 4 >> __GXX_RTTI = 1 >> __FLT_HAS_DENORM__ = 1 >> __SIZEOF_LONG_DOUBLE__ = 12 >> __BIGGEST_ALIGNMENT__ = 16 >> __i686 = 1 >> __DBL_MAX__ = ((double)1.79769313486231570815e+308L) >> __INT_FAST32_MAX__ = 2147483647 >> __DBL_HAS_INFINITY__ = 1 >> __INT64_MAX__ = 9223372036854775807LL >> __DEC32_MIN_EXP__ = (-94) >> __INT_FAST16_TYPE__ = int >> __LDBL_HAS_DENORM__ = 1 >> __cplusplus = 1 >> __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL >> __INT_LEAST32_MAX__ = 2147483647 >> __DEC32_MIN__ = 1E-95DF >> __DEPRECATED = 1 >> __DBL_MAX_EXP__ = 1024 >> __DEC128_EPSILON__ = 1E-33DL >> __PTRDIFF_MAX__ = 2147483647 >> __GNUG__ = 4 >> __LONG_LONG_MAX__ = 9223372036854775807LL >> __SIZEOF_SIZE_T__ = 4 >> __SIZEOF_WINT_T__ = 4 >> __GCC_HAVE_DWARF2_CFI_ASM = 1 >> __GXX_ABI_VERSION = 1002 >> __FLT_MIN_EXP__ = (-125) >> __i686__ = 1 >> __DBL_MIN__ = ((double)2.22507385850720138309e-308L) >> __FLT_MIN_10_EXP__ = (-37) >> __DECIMAL_BID_FORMAT__ = 1 >> __DEC128_MIN__ = 1E-6143DL >> __UINT16_MAX__ = 65535 >> __DBL_HAS_DENORM__ = 1 >> __NO_INLINE__ = 1 >> __i386 = 1 >> __FLT_MANT_DIG__ = 24 >> __VERSION__ = "4.5.2" >> __INT32_C(c) = c >> __DEC64_EPSILON__ = 1E-15DD >> __DEC128_MIN_EXP__ = (-6142) >> __INT_FAST32_TYPE__ = int >> unix = 1 >> __INT16_MAX__ = 32767 >> __i386__ = 1 >> __UINT64_MAX__ = 18446744073709551615ULL >> __ELF__ = 1 >> __FLT_RADIX__ = 2 >> __LDBL_EPSILON__ = 1.08420217248550443401e-19L >> __SIG_ATOMIC_MAX__ = 2147483647 >> __SIZEOF_PTRDIFF_T__ = 4 >> __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF >> __pentiumpro = 1 >> __INT_FAST16_MAX__ = 2147483647 >> __UINT_FAST32_MAX__ = 4294967295U >> __FLT_HAS_QUIET_NAN__ = 1 >> __FLT_MAX_10_EXP__ = 38 >> __LONG_MAX__ = 2147483647L >> __DEC128_SUBNORMAL_MIN__ = >> 0.000000000000000000000000000000001E-6143DL >> __FLT_HAS_INFINITY__ = 1 >> __DEC64_MAX__ = 9.999999999999999E384DD >> __PRAGMA_REDEFINE_EXTNAME = 1 >> __INT_LEAST16_MAX__ = 32767 >> __DEC64_MANT_DIG__ = 16 >> __UINT_LEAST32_MAX__ = 4294967295U >> __DEC32_MAX_EXP__ = 97 >> __INT_FAST8_MAX__ = 127 >> __INTPTR_MAX__ = 2147483647 >> linux = 1 >> __EXCEPTIONS = 1 >> __LDBL_MANT_DIG__ = 64 >> __DBL_HAS_QUIET_NAN__ = 1 >> __INTPTR_TYPE__ = int >> __WCHAR_TYPE__ = int >> __SIZEOF_FLOAT__ = 4 >> __UINTPTR_MAX__ = 4294967295U >> __DEC64_MIN_EXP__ = (-382) >> __INT_FAST64_MAX__ = 9223372036854775807LL >> __FLT_DIG__ = 6 >> __INT_MAX__ = 2147483647 >> __FLT_MAX_EXP__ = 128 >> __DBL_MANT_DIG__ = 53 >> __INT_LEAST64_MAX__ = 9223372036854775807LL >> __DEC64_MIN__ = 1E-383DD >> __SIZEOF_SHORT__ = 2 >> __LDBL_MIN_EXP__ = (-16381) >> __INT_LEAST8_MAX__ = 127 >> __SSP__ = 1 >> __LDBL_MAX_10_EXP__ = 4932 >> __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) >> __UINT8_C(c) = c >> __INT_LEAST32_TYPE__ = int >> __SIZEOF_WCHAR_T__ = 4 >> __DEC_EVAL_METHOD__ = 2 >> __INTMAX_MAX__ = 9223372036854775807LL >> __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F >> __INT8_MAX__ = 127 >> __FLT_MAX__ = 3.40282346638528859812e+38F >> __INT32_TYPE__ = int >> __SIZEOF_DOUBLE__ = 8 >> i386 = 1 >> __DEC128_MAX_EXP__ = 6145 >> __GNUC_MINOR__ = 5 >> __UINTMAX_MAX__ = 18446744073709551615ULL >> __DEC32_MANT_DIG__ = 7 >> __DBL_MAX_10_EXP__ = 308 >> __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L >> __INT16_C(c) = c >> __STDC__ = 1 >> __PTRDIFF_TYPE__ = int >> __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD >> __DEC128_MANT_DIG__ = 34 >> __LDBL_MIN_10_EXP__ = (-4931) >> __SIZEOF_LONG_LONG__ = 8 >> __LDBL_DIG__ = 18 >> __UINT_FAST16_MAX__ = 4294967295U >> __GNUC_GNU_INLINE__ = 1 >> _GNU_SOURCE = 1 >> >> >> >> -- >> Abdellatif El Khlifi >> abd...@ie... <mailto:abd...@ie...> >> http://abdellatif.emurse.com/ >> >> >> >> >> ------------------------------------------------------------------------------ >> Special Offer -- Download ArcSight Logger for FREE! >> Finally, a world-class log management solution at an even better >> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >> download Logger. Secure your free ArcSight Logger TODAY! >> http://p.sf.net/sfu/arcsisghtdev2dev >> >> >> >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-devel > -- Abdellatif El Khlifi abd...@ie... http://abdellatif.emurse.com/ |
From: Eric M. L. <eri...@gm...> - 2011-09-13 01:01:22
|
Hi, It sounds like USE1 and LINUX_ARM_ARCH aren't defined when parsing the file. Use semantic-c-describe-environment to validate if that is true or not. If those symbols are not there, you need to make sure they get defined by either adding the header from which they come to the symbol-file variable you are using below, or by adding them by hand into the preprocessor-symbol-map you are also using. CEDET should correctly parse the #define statements even with the misc spcaces in front of them. Eric On 09/11/2011 12:29 AM, Abdellatif El Khlifi wrote: > Hello, > > Thank you for the answer. > > I did these steps: > > - added (add-to-list 'semantic-lex-c-preprocessor-symbol-file "full > path to the header file") to the ~/.emacs > - removed ~/.semanticdb > - restarted emacs , said no to the message box > - M-x semanticdb-find-test-translate-paths > - forced tag refresh in senator menu > - restarted emacs , said yes to the message box > - M-x semanticdb-find-test-translate-paths > - forced tag refresh in senator menu > > When I use intellisense I find that only __KERNEL__ is recognized. > __LINUX_ARM_ARCH__ and USE1 are not. > > __KERNEL__ : defined with semantic-lex-c-preprocessor-symbol-map > USE1 : defined in a header file included by the current C source file. > __LINUX_ARM_ARCH__ : defined with semantic-lex-c-preprocessor-symbol-file > > Thank you for the help. > > On Sat, Sep 10, 2011 at 1:26 PM, Eric M. Ludlam<eri...@gm...> wrote: >> Hi, >> >> Sorry about the late reply. I thought I'd replied to this earlier. >> >> In my experiments, the parsing here worked fine. It seems likely that for >> this file, it was parsed and the tags stowed away when you noticed the >> problem. If you then added the configurations but the file was never >> edited, then it would appear as you described below. In your file, you can >> use the senator menu to select a forced tag refresh. If you have big piles >> of files that have this issue, now that you've reconfigured things, you can >> delete items from ~/.semanticdb matching the directories you care about, and >> start over and things should be fine. >> >> The one problem that will persist is related to: >> >>> USE1 : defined in a header file included by the current C source file. >> >> where semantic doesn't actually include the files for you, so you would need >> to add it to semantic-lex-c-preprocessor-symbol-map, or add it's header file >> to semantic-lex-c-preprocessor-symbol-file. >> >> Eric >> >> On 09/05/2011 05:55 PM, Abdellatif El Khlifi wrote: >>> >>> Hello, >>> >>> I am trying to use Emacs as an IDE in my Linux kernel development >>> projects. So I installed CEDET and GNU Global (gtags) with no >>> problems. >>> >>> When I open a C source code belonging to my Linux kernel source >>> folder, the linux project is detected automatically. Functions, >>> variables, headers and other keywords are highlighted correctly. >>> >>> Through the ~/.emacs file I configured semantic's code completion and >>> intellisense. So when I press C-<SPC> the code completion menu appears >>> and I can choose what's needed. >>> >>> The issue is when I use preprocessor defines, the intellisense system >>> shows the menu on the current location but doesn't detect the right >>> things when invoked (C-<SPC>). Even I close and restart emacs the same >>> behavior is reproduced. >>> >>> The test code is: >>> >>> >>> //---------------------------------------------------------------------------------------- >>> >>> typedef struct >>> { >>> int p1; >>> >>> #ifdef __KERNEL__ >>> >>> int p2; >>> >>> #endif >>> >>> #ifdef USE1 >>> >>> char p3; >>> >>> #endif >>> >>> #ifdef __LINUX_ARM_ARCH__ >>> >>> int p4; >>> >>> #endif >>> >>> }OBJ; >>> >>> OBJ g_obj; >>> >>> >>> //---------------------------------------------------------------------------------------- >>> >>> __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as >>> follows: >>> >>> __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>> '("__KERNEL__" . "")) in .emacs >>> USE1 : defined in a header file included by the current C source file. >>> __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- >>> file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs >>> >>> In the .emacs file I also added all the needed includes and defines >>> required by GCC cross compiler (GCC for ARM) to build the kernel >>> project. >>> >>> I also tried to force semantic to use GCC cross compiler command line >>> in place of the system GCC to preprocess correctly but haven't found >>> how to do that. >>> >>> >>> The .emacs file, the output of the "M-x semantic-c-describe- >>> environment" command and the software versions are shown below. >>> >>> Any help or indication is welcomed :) >>> Best regards >>> >>> ############# Software versions ############# >>> >>> - Emacs (23.2.1) >>> - Ubuntu machine (natty, 11.04) >>> - Cedet 1.0 (from http://cedet.sourceforge.net/) >>> >>> ############# .emacs ############# >>> >>> ;load CEDET >>> >>> (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") >>> >>> (require 'ede) >>> >>> (global-ede-mode t) >>> >>> ; turn on which-func support (plus all other code helpers) >>> (semantic-load-enable-gaudy-code-helpers) >>> (semantic-load-enable-excessive-code-helpers) >>> >>> ; turn on all "useful" features >>> (setq semantic-load-turn-useful-things-on t) >>> >>> (setq-mode-local c-mode >>> semanticdb-find-default-throttle >>> '(project unloaded system recursive)) >>> >>> >>> ;init names completion, and displaying of information for tags& >>> classes >>> (require 'semantic-ia) >>> >>> >>> >>> ;preprocessing of source code >>> >>> (require 'semantic-c) >>> >>> (semantic-reset-system-include 'c-mode) >>> (semantic-reset-system-include 'c++-mode) >>> (semantic-add-system-include "/home/abdellatif/toolchain/arm- >>> eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) >>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ >>> include" 'c-mode) >>> (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- >>> mode) >>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- >>> omap2/include" 'c-mode) >>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- >>> omap/include" 'c-mode) >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ >>> abdellatif/kernel/include/generated/autoconf.h") >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . >>> "")) >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>> '("__LINUX_ARM_ARCH__" . "7")) >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>> '("KBUILD_STR(s)" . "#s")) >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>> '("KBUILD_BASENAME" . "KBUILD_STR(main)")) >>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>> '("KBUILD_MODNAME" . "KBUILD_STR(main)")) >>> >>> >>> ;semantic integration with imenu (display of a menu with a list of >>> functions, variables, and other tags) >>> (defun my-semantic-hook () >>> (imenu-add-to-menubar "TAGS")) >>> (add-hook 'semantic-init-hooks 'my-semantic-hook) >>> >>> ;names completion (semantic commands) >>> (defun my-cedet-hook () >>> (local-set-key [(control return)] 'semantic-ia-complete-symbol) >>> (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) >>> (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) >>> (add-hook 'c-mode-common-hook 'my-cedet-hook) >>> >>> ;navigating in source code >>> (semantic-mru-bookmark-mode 1) >>> >>> >>> ;tell semantic to store its tags database between sessions here >>> (require 'semanticdb) >>> (setq-default semanticdb-default-save-directory "~/.semantic.cache") >>> (setq-default semanticdb-default-system-save-directory >>> "~/.semantic.cache") >>> >>> ;allow Semanticdb use databases generated by global(gtags) >>> (require 'semanticdb-global) >>> (semanticdb-enable-gnu-global-databases 'c-mode) >>> >>> ############# semantic-c-describe-environment ############# >>> >>> Calculated GCC Parameters: >>> version = 4.5.2 >>> --target = i686-linux-gnu >>> --host = i686-linux-gnu >>> --build = i686-linux-gnu >>> --enable-checking = release >>> --with-tune = generic >>> --with-arch-32 = i686 >>> --disable-werror = nil >>> --enable-targets = all >>> --enable-objc-gc = nil >>> --with-plugin-ld = ld.gold >>> --enable-ld = default >>> --enable-gold = nil >>> --enable-plugin = nil >>> --enable-libstdcxx-time = yes >>> --enable-libstdcxx-debug = nil >>> --enable-clocale = gnu >>> --with-sysroot = / >>> --enable-nls = nil >>> --libdir = /usr/lib/i386-linux-gnu >>> --with-gxx-include-dir = /usr/include/c++/4.5 >>> --enable-threads = posix >>> --without-included-gettext = nil >>> --libexecdir = /usr/lib/i386-linux-gnu >>> --with-system-zlib = nil >>> --enable-linker-build-id = nil >>> --with-multiarch-defaults = i386-linux-gnu >>> --enable-multiarch = nil >>> --enable-shared = nil >>> --program-suffix = -4.5 >>> --prefix = /usr >>> --enable-languages = c,c++,fortran,objc,obj-c++ >>> --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs >>> 4.5.2-8ubuntu4' = nil >>> --with-pkgversion = 'Ubuntu/Linaro >>> -v = nil >>> target = i686-linux-gnu >>> >>> Include Path Summary: >>> >>> This file's system include path is: >>> /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ >>> include/ >>> /home/abdellatif/kernel/arch/arm/include/ >>> /home/abdellatif/kernel/include/ >>> /home/abdellatif/kernel/arch/arm/mach-omap2/include/ >>> /home/abdellatif/kernel/arch/arm/plat-omap/include/ >>> >>> >>> Macro Summary: >>> >>> Your CPP table is primed from these files: >>> /home/abdellatif/kernel/include/generated/autoconf.h >>> in table: #<semanticdb-table autoconf.h (652 tags)> >>> /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h >>> in table: #<semanticdb-table c++config.h (193 tags)> >>> >>> Built-in symbol map: >>> __THROW = >>> __const = const >>> __restrict = >>> __declspec = ((spp-arg-list (foo) 1 . 2)) >>> __attribute__ = ((spp-arg-list (foo) 1 . 2)) >>> >>> User symbol map: >>> KBUILD_MODNAME = KBUILD_STR(main) >>> KBUILD_BASENAME = KBUILD_STR(main) >>> KBUILD_STR(s) = #s >>> __LINUX_ARM_ARCH__ = 7 >>> __KERNEL__ = >>> __DBL_MIN_EXP__ = (-1021) >>> __pentiumpro__ = 1 >>> __UINT_LEAST16_MAX__ = 65535 >>> __FLT_MIN__ = 1.17549435082228750797e-38F >>> __CHAR_BIT__ = 8 >>> __UINT8_MAX__ = 255 >>> __WINT_MAX__ = 4294967295U >>> __SIZE_MAX__ = 4294967295U >>> __WCHAR_MAX__ = 2147483647<tel:2147483647> >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 >>> __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 >>> __FLT_EVAL_METHOD__ = 2 >>> __unix__ = 1 >>> __UINT_FAST64_MAX__ = 18446744073709551615ULL >>> __SIG_ATOMIC_TYPE__ = int >>> __DBL_MIN_10_EXP__ = (-307) >>> __FINITE_MATH_ONLY__ = 0 >>> __GNUC_PATCHLEVEL__ = 2 >>> __UINT_FAST8_MAX__ = 255 >>> __DEC64_MAX_EXP__ = 385 >>> __INT8_C(c) = c >>> __UINT_LEAST64_MAX__ = 18446744073709551615ULL >>> __SHRT_MAX__ = 32767 >>> __LDBL_MAX__ = 1.18973149535723176502e+4932L >>> __UINT_LEAST8_MAX__ = 255 >>> __linux = 1 >>> __DEC32_EPSILON__ = 1E-6DF >>> __unix = 1 >>> __UINT32_MAX__ = 4294967295U >>> __LDBL_MAX_EXP__ = 16384 >>> __WINT_MIN__ = 0U >>> __linux__ = 1 >>> __SCHAR_MAX__ = 127 >>> __DBL_DIG__ = 15 >>> _FORTIFY_SOURCE = 2 >>> __SIZEOF_INT__ = 4 >>> __SIZEOF_POINTER__ = 4 >>> __STDC_HOSTED__ = 1 >>> __LDBL_HAS_INFINITY__ = 1 >>> __FLT_EPSILON__ = 1.19209289550781250000e-7F >>> __GXX_WEAK__ = 1 >>> __LDBL_MIN__ = 3.36210314311209350626e-4932L >>> __DEC32_MAX__ = 9.999999E96DF >>> __INT32_MAX__ = 2147483647 >>> __SIZEOF_LONG__ = 4 >>> __UINT16_C(c) = c >>> __DECIMAL_DIG__ = 21 >>> __gnu_linux__ = 1 >>> __LDBL_HAS_QUIET_NAN__ = 1 >>> __GNUC__ = 4 >>> __GXX_RTTI = 1 >>> __FLT_HAS_DENORM__ = 1 >>> __SIZEOF_LONG_DOUBLE__ = 12 >>> __BIGGEST_ALIGNMENT__ = 16 >>> __i686 = 1 >>> __DBL_MAX__ = ((double)1.79769313486231570815e+308L) >>> __INT_FAST32_MAX__ = 2147483647 >>> __DBL_HAS_INFINITY__ = 1 >>> __INT64_MAX__ = 9223372036854775807LL >>> __DEC32_MIN_EXP__ = (-94) >>> __INT_FAST16_TYPE__ = int >>> __LDBL_HAS_DENORM__ = 1 >>> __cplusplus = 1 >>> __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL >>> __INT_LEAST32_MAX__ = 2147483647 >>> __DEC32_MIN__ = 1E-95DF >>> __DEPRECATED = 1 >>> __DBL_MAX_EXP__ = 1024 >>> __DEC128_EPSILON__ = 1E-33DL >>> __PTRDIFF_MAX__ = 2147483647 >>> __GNUG__ = 4 >>> __LONG_LONG_MAX__ = 9223372036854775807LL >>> __SIZEOF_SIZE_T__ = 4 >>> __SIZEOF_WINT_T__ = 4 >>> __GCC_HAVE_DWARF2_CFI_ASM = 1 >>> __GXX_ABI_VERSION = 1002 >>> __FLT_MIN_EXP__ = (-125) >>> __i686__ = 1 >>> __DBL_MIN__ = ((double)2.22507385850720138309e-308L) >>> __FLT_MIN_10_EXP__ = (-37) >>> __DECIMAL_BID_FORMAT__ = 1 >>> __DEC128_MIN__ = 1E-6143DL >>> __UINT16_MAX__ = 65535 >>> __DBL_HAS_DENORM__ = 1 >>> __NO_INLINE__ = 1 >>> __i386 = 1 >>> __FLT_MANT_DIG__ = 24 >>> __VERSION__ = "4.5.2" >>> __INT32_C(c) = c >>> __DEC64_EPSILON__ = 1E-15DD >>> __DEC128_MIN_EXP__ = (-6142) >>> __INT_FAST32_TYPE__ = int >>> unix = 1 >>> __INT16_MAX__ = 32767 >>> __i386__ = 1 >>> __UINT64_MAX__ = 18446744073709551615ULL >>> __ELF__ = 1 >>> __FLT_RADIX__ = 2 >>> __LDBL_EPSILON__ = 1.08420217248550443401e-19L >>> __SIG_ATOMIC_MAX__ = 2147483647 >>> __SIZEOF_PTRDIFF_T__ = 4 >>> __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF >>> __pentiumpro = 1 >>> __INT_FAST16_MAX__ = 2147483647 >>> __UINT_FAST32_MAX__ = 4294967295U >>> __FLT_HAS_QUIET_NAN__ = 1 >>> __FLT_MAX_10_EXP__ = 38 >>> __LONG_MAX__ = 2147483647L >>> __DEC128_SUBNORMAL_MIN__ = >>> 0.000000000000000000000000000000001E-6143DL >>> __FLT_HAS_INFINITY__ = 1 >>> __DEC64_MAX__ = 9.999999999999999E384DD >>> __PRAGMA_REDEFINE_EXTNAME = 1 >>> __INT_LEAST16_MAX__ = 32767 >>> __DEC64_MANT_DIG__ = 16 >>> __UINT_LEAST32_MAX__ = 4294967295U >>> __DEC32_MAX_EXP__ = 97 >>> __INT_FAST8_MAX__ = 127 >>> __INTPTR_MAX__ = 2147483647 >>> linux = 1 >>> __EXCEPTIONS = 1 >>> __LDBL_MANT_DIG__ = 64 >>> __DBL_HAS_QUIET_NAN__ = 1 >>> __INTPTR_TYPE__ = int >>> __WCHAR_TYPE__ = int >>> __SIZEOF_FLOAT__ = 4 >>> __UINTPTR_MAX__ = 4294967295U >>> __DEC64_MIN_EXP__ = (-382) >>> __INT_FAST64_MAX__ = 9223372036854775807LL >>> __FLT_DIG__ = 6 >>> __INT_MAX__ = 2147483647 >>> __FLT_MAX_EXP__ = 128 >>> __DBL_MANT_DIG__ = 53 >>> __INT_LEAST64_MAX__ = 9223372036854775807LL >>> __DEC64_MIN__ = 1E-383DD >>> __SIZEOF_SHORT__ = 2 >>> __LDBL_MIN_EXP__ = (-16381) >>> __INT_LEAST8_MAX__ = 127 >>> __SSP__ = 1 >>> __LDBL_MAX_10_EXP__ = 4932 >>> __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) >>> __UINT8_C(c) = c >>> __INT_LEAST32_TYPE__ = int >>> __SIZEOF_WCHAR_T__ = 4 >>> __DEC_EVAL_METHOD__ = 2 >>> __INTMAX_MAX__ = 9223372036854775807LL >>> __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F >>> __INT8_MAX__ = 127 >>> __FLT_MAX__ = 3.40282346638528859812e+38F >>> __INT32_TYPE__ = int >>> __SIZEOF_DOUBLE__ = 8 >>> i386 = 1 >>> __DEC128_MAX_EXP__ = 6145 >>> __GNUC_MINOR__ = 5 >>> __UINTMAX_MAX__ = 18446744073709551615ULL >>> __DEC32_MANT_DIG__ = 7 >>> __DBL_MAX_10_EXP__ = 308 >>> __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L >>> __INT16_C(c) = c >>> __STDC__ = 1 >>> __PTRDIFF_TYPE__ = int >>> __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD >>> __DEC128_MANT_DIG__ = 34 >>> __LDBL_MIN_10_EXP__ = (-4931) >>> __SIZEOF_LONG_LONG__ = 8 >>> __LDBL_DIG__ = 18 >>> __UINT_FAST16_MAX__ = 4294967295U >>> __GNUC_GNU_INLINE__ = 1 >>> _GNU_SOURCE = 1 >>> >>> >>> >>> -- >>> Abdellatif El Khlifi >>> abd...@ie...<mailto:abd...@ie...> >>> http://abdellatif.emurse.com/ >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Special Offer -- Download ArcSight Logger for FREE! >>> Finally, a world-class log management solution at an even better >>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>> download Logger. Secure your free ArcSight Logger TODAY! >>> http://p.sf.net/sfu/arcsisghtdev2dev >>> >>> >>> >>> _______________________________________________ >>> Cedet-devel mailing list >>> Ced...@li... >>> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> > > > |
From: Abdellatif El K. <elk...@gm...> - 2011-09-14 00:33:34
|
Hi, Good news :) it begins to work. In fact, earlier I made a new configuration similar to my kernel configuration based on ede-cpp-root-project. And declared USE1 in a header file included in the source code, USE2 through ":spp-table" and USE3 in an out of project header file included through semantic-lex-c-preprocessor-symbol-file. The result was the same as the kernel one: Only USE2 was recognized by semantic. So I replaced: (require 'semantic-gcc) (require 'semantic-c) by : (require 'semantic-gcc) (require 'semantic-lex-spp) Then I changed the location of some other configurations. And I added the header file including USE1 through semantic-lex-c-preprocessor-symbol-file. Now it works. All 3 defines are detected ! I think that the solution is due to the replacement of semantic-c by semantic-gcc. May be they were conflicting with each other. My issue now is that I prefer to put (with #include) all header files included in the source code and having some defines like USE1 in a single header file and that I include simply this one in the ~/.emacs file (semantic-lex-c-preprocessor-symbol-file). I tried but it doesn't work. All other defines are detected but not these ones. Abdellatif On Tue, Sep 13, 2011 at 2:01 AM, Eric M. Ludlam <eri...@gm...> wrote: > Hi, > > It sounds like USE1 and LINUX_ARM_ARCH aren't defined when parsing > the file. Use semantic-c-describe-environment to validate if that is > true or not. If those symbols are not there, you need to make sure they > get defined by either adding the header from which they come to the > symbol-file variable you are using below, or by adding them by hand into > the preprocessor-symbol-map you are also using. > > CEDET should correctly parse the #define statements even with the > misc spcaces in front of them. > > Eric > > On 09/11/2011 12:29 AM, Abdellatif El Khlifi wrote: >> Hello, >> >> Thank you for the answer. >> >> I did these steps: >> >> - added (add-to-list 'semantic-lex-c-preprocessor-symbol-file "full >> path to the header file") to the ~/.emacs >> - removed ~/.semanticdb >> - restarted emacs , said no to the message box >> - M-x semanticdb-find-test-translate-paths >> - forced tag refresh in senator menu >> - restarted emacs , said yes to the message box >> - M-x semanticdb-find-test-translate-paths >> - forced tag refresh in senator menu >> >> When I use intellisense I find that only __KERNEL__ is recognized. >> __LINUX_ARM_ARCH__ and USE1 are not. >> >> __KERNEL__ : defined with semantic-lex-c-preprocessor-symbol-map >> USE1 : defined in a header file included by the current C source file. >> __LINUX_ARM_ARCH__ : defined with semantic-lex-c-preprocessor-symbol-file >> >> Thank you for the help. >> >> On Sat, Sep 10, 2011 at 1:26 PM, Eric M. Ludlam<eri...@gm...> wrote: >>> Hi, >>> >>> Sorry about the late reply. I thought I'd replied to this earlier. >>> >>> In my experiments, the parsing here worked fine. It seems likely that for >>> this file, it was parsed and the tags stowed away when you noticed the >>> problem. If you then added the configurations but the file was never >>> edited, then it would appear as you described below. In your file, you can >>> use the senator menu to select a forced tag refresh. If you have big piles >>> of files that have this issue, now that you've reconfigured things, you can >>> delete items from ~/.semanticdb matching the directories you care about, and >>> start over and things should be fine. >>> >>> The one problem that will persist is related to: >>> >>>> USE1 : defined in a header file included by the current C source file. >>> >>> where semantic doesn't actually include the files for you, so you would need >>> to add it to semantic-lex-c-preprocessor-symbol-map, or add it's header file >>> to semantic-lex-c-preprocessor-symbol-file. >>> >>> Eric >>> >>> On 09/05/2011 05:55 PM, Abdellatif El Khlifi wrote: >>>> >>>> Hello, >>>> >>>> I am trying to use Emacs as an IDE in my Linux kernel development >>>> projects. So I installed CEDET and GNU Global (gtags) with no >>>> problems. >>>> >>>> When I open a C source code belonging to my Linux kernel source >>>> folder, the linux project is detected automatically. Functions, >>>> variables, headers and other keywords are highlighted correctly. >>>> >>>> Through the ~/.emacs file I configured semantic's code completion and >>>> intellisense. So when I press C-<SPC> the code completion menu appears >>>> and I can choose what's needed. >>>> >>>> The issue is when I use preprocessor defines, the intellisense system >>>> shows the menu on the current location but doesn't detect the right >>>> things when invoked (C-<SPC>). Even I close and restart emacs the same >>>> behavior is reproduced. >>>> >>>> The test code is: >>>> >>>> >>>> //---------------------------------------------------------------------------------------- >>>> >>>> typedef struct >>>> { >>>> int p1; >>>> >>>> #ifdef __KERNEL__ >>>> >>>> int p2; >>>> >>>> #endif >>>> >>>> #ifdef USE1 >>>> >>>> char p3; >>>> >>>> #endif >>>> >>>> #ifdef __LINUX_ARM_ARCH__ >>>> >>>> int p4; >>>> >>>> #endif >>>> >>>> }OBJ; >>>> >>>> OBJ g_obj; >>>> >>>> >>>> //---------------------------------------------------------------------------------------- >>>> >>>> __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as >>>> follows: >>>> >>>> __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>> '("__KERNEL__" . "")) in .emacs >>>> USE1 : defined in a header file included by the current C source file. >>>> __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- >>>> file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs >>>> >>>> In the .emacs file I also added all the needed includes and defines >>>> required by GCC cross compiler (GCC for ARM) to build the kernel >>>> project. >>>> >>>> I also tried to force semantic to use GCC cross compiler command line >>>> in place of the system GCC to preprocess correctly but haven't found >>>> how to do that. >>>> >>>> >>>> The .emacs file, the output of the "M-x semantic-c-describe- >>>> environment" command and the software versions are shown below. >>>> >>>> Any help or indication is welcomed :) >>>> Best regards >>>> >>>> ############# Software versions ############# >>>> >>>> - Emacs (23.2.1) >>>> - Ubuntu machine (natty, 11.04) >>>> - Cedet 1.0 (from http://cedet.sourceforge.net/) >>>> >>>> ############# .emacs ############# >>>> >>>> ;load CEDET >>>> >>>> (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") >>>> >>>> (require 'ede) >>>> >>>> (global-ede-mode t) >>>> >>>> ; turn on which-func support (plus all other code helpers) >>>> (semantic-load-enable-gaudy-code-helpers) >>>> (semantic-load-enable-excessive-code-helpers) >>>> >>>> ; turn on all "useful" features >>>> (setq semantic-load-turn-useful-things-on t) >>>> >>>> (setq-mode-local c-mode >>>> semanticdb-find-default-throttle >>>> '(project unloaded system recursive)) >>>> >>>> >>>> ;init names completion, and displaying of information for tags& >>>> classes >>>> (require 'semantic-ia) >>>> >>>> >>>> >>>> ;preprocessing of source code >>>> >>>> (require 'semantic-c) >>>> >>>> (semantic-reset-system-include 'c-mode) >>>> (semantic-reset-system-include 'c++-mode) >>>> (semantic-add-system-include "/home/abdellatif/toolchain/arm- >>>> eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) >>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ >>>> include" 'c-mode) >>>> (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- >>>> mode) >>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- >>>> omap2/include" 'c-mode) >>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- >>>> omap/include" 'c-mode) >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ >>>> abdellatif/kernel/include/generated/autoconf.h") >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . >>>> "")) >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>> '("__LINUX_ARM_ARCH__" . "7")) >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>> '("KBUILD_STR(s)" . "#s")) >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>> '("KBUILD_BASENAME" . "KBUILD_STR(main)")) >>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>> '("KBUILD_MODNAME" . "KBUILD_STR(main)")) >>>> >>>> >>>> ;semantic integration with imenu (display of a menu with a list of >>>> functions, variables, and other tags) >>>> (defun my-semantic-hook () >>>> (imenu-add-to-menubar "TAGS")) >>>> (add-hook 'semantic-init-hooks 'my-semantic-hook) >>>> >>>> ;names completion (semantic commands) >>>> (defun my-cedet-hook () >>>> (local-set-key [(control return)] 'semantic-ia-complete-symbol) >>>> (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) >>>> (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) >>>> (add-hook 'c-mode-common-hook 'my-cedet-hook) >>>> >>>> ;navigating in source code >>>> (semantic-mru-bookmark-mode 1) >>>> >>>> >>>> ;tell semantic to store its tags database between sessions here >>>> (require 'semanticdb) >>>> (setq-default semanticdb-default-save-directory "~/.semantic.cache") >>>> (setq-default semanticdb-default-system-save-directory >>>> "~/.semantic.cache") >>>> >>>> ;allow Semanticdb use databases generated by global(gtags) >>>> (require 'semanticdb-global) >>>> (semanticdb-enable-gnu-global-databases 'c-mode) >>>> >>>> ############# semantic-c-describe-environment ############# >>>> >>>> Calculated GCC Parameters: >>>> version = 4.5.2 >>>> --target = i686-linux-gnu >>>> --host = i686-linux-gnu >>>> --build = i686-linux-gnu >>>> --enable-checking = release >>>> --with-tune = generic >>>> --with-arch-32 = i686 >>>> --disable-werror = nil >>>> --enable-targets = all >>>> --enable-objc-gc = nil >>>> --with-plugin-ld = ld.gold >>>> --enable-ld = default >>>> --enable-gold = nil >>>> --enable-plugin = nil >>>> --enable-libstdcxx-time = yes >>>> --enable-libstdcxx-debug = nil >>>> --enable-clocale = gnu >>>> --with-sysroot = / >>>> --enable-nls = nil >>>> --libdir = /usr/lib/i386-linux-gnu >>>> --with-gxx-include-dir = /usr/include/c++/4.5 >>>> --enable-threads = posix >>>> --without-included-gettext = nil >>>> --libexecdir = /usr/lib/i386-linux-gnu >>>> --with-system-zlib = nil >>>> --enable-linker-build-id = nil >>>> --with-multiarch-defaults = i386-linux-gnu >>>> --enable-multiarch = nil >>>> --enable-shared = nil >>>> --program-suffix = -4.5 >>>> --prefix = /usr >>>> --enable-languages = c,c++,fortran,objc,obj-c++ >>>> --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs >>>> 4.5.2-8ubuntu4' = nil >>>> --with-pkgversion = 'Ubuntu/Linaro >>>> -v = nil >>>> target = i686-linux-gnu >>>> >>>> Include Path Summary: >>>> >>>> This file's system include path is: >>>> /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ >>>> include/ >>>> /home/abdellatif/kernel/arch/arm/include/ >>>> /home/abdellatif/kernel/include/ >>>> /home/abdellatif/kernel/arch/arm/mach-omap2/include/ >>>> /home/abdellatif/kernel/arch/arm/plat-omap/include/ >>>> >>>> >>>> Macro Summary: >>>> >>>> Your CPP table is primed from these files: >>>> /home/abdellatif/kernel/include/generated/autoconf.h >>>> in table: #<semanticdb-table autoconf.h (652 tags)> >>>> /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h >>>> in table: #<semanticdb-table c++config.h (193 tags)> >>>> >>>> Built-in symbol map: >>>> __THROW = >>>> __const = const >>>> __restrict = >>>> __declspec = ((spp-arg-list (foo) 1 . 2)) >>>> __attribute__ = ((spp-arg-list (foo) 1 . 2)) >>>> >>>> User symbol map: >>>> KBUILD_MODNAME = KBUILD_STR(main) >>>> KBUILD_BASENAME = KBUILD_STR(main) >>>> KBUILD_STR(s) = #s >>>> __LINUX_ARM_ARCH__ = 7 >>>> __KERNEL__ = >>>> __DBL_MIN_EXP__ = (-1021) >>>> __pentiumpro__ = 1 >>>> __UINT_LEAST16_MAX__ = 65535 >>>> __FLT_MIN__ = 1.17549435082228750797e-38F >>>> __CHAR_BIT__ = 8 >>>> __UINT8_MAX__ = 255 >>>> __WINT_MAX__ = 4294967295U >>>> __SIZE_MAX__ = 4294967295U >>>> __WCHAR_MAX__ = 2147483647<tel:2147483647> >>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 >>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 >>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 >>>> __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) >>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 >>>> __FLT_EVAL_METHOD__ = 2 >>>> __unix__ = 1 >>>> __UINT_FAST64_MAX__ = 18446744073709551615ULL >>>> __SIG_ATOMIC_TYPE__ = int >>>> __DBL_MIN_10_EXP__ = (-307) >>>> __FINITE_MATH_ONLY__ = 0 >>>> __GNUC_PATCHLEVEL__ = 2 >>>> __UINT_FAST8_MAX__ = 255 >>>> __DEC64_MAX_EXP__ = 385 >>>> __INT8_C(c) = c >>>> __UINT_LEAST64_MAX__ = 18446744073709551615ULL >>>> __SHRT_MAX__ = 32767 >>>> __LDBL_MAX__ = 1.18973149535723176502e+4932L >>>> __UINT_LEAST8_MAX__ = 255 >>>> __linux = 1 >>>> __DEC32_EPSILON__ = 1E-6DF >>>> __unix = 1 >>>> __UINT32_MAX__ = 4294967295U >>>> __LDBL_MAX_EXP__ = 16384 >>>> __WINT_MIN__ = 0U >>>> __linux__ = 1 >>>> __SCHAR_MAX__ = 127 >>>> __DBL_DIG__ = 15 >>>> _FORTIFY_SOURCE = 2 >>>> __SIZEOF_INT__ = 4 >>>> __SIZEOF_POINTER__ = 4 >>>> __STDC_HOSTED__ = 1 >>>> __LDBL_HAS_INFINITY__ = 1 >>>> __FLT_EPSILON__ = 1.19209289550781250000e-7F >>>> __GXX_WEAK__ = 1 >>>> __LDBL_MIN__ = 3.36210314311209350626e-4932L >>>> __DEC32_MAX__ = 9.999999E96DF >>>> __INT32_MAX__ = 2147483647 >>>> __SIZEOF_LONG__ = 4 >>>> __UINT16_C(c) = c >>>> __DECIMAL_DIG__ = 21 >>>> __gnu_linux__ = 1 >>>> __LDBL_HAS_QUIET_NAN__ = 1 >>>> __GNUC__ = 4 >>>> __GXX_RTTI = 1 >>>> __FLT_HAS_DENORM__ = 1 >>>> __SIZEOF_LONG_DOUBLE__ = 12 >>>> __BIGGEST_ALIGNMENT__ = 16 >>>> __i686 = 1 >>>> __DBL_MAX__ = ((double)1.79769313486231570815e+308L) >>>> __INT_FAST32_MAX__ = 2147483647 >>>> __DBL_HAS_INFINITY__ = 1 >>>> __INT64_MAX__ = 9223372036854775807LL >>>> __DEC32_MIN_EXP__ = (-94) >>>> __INT_FAST16_TYPE__ = int >>>> __LDBL_HAS_DENORM__ = 1 >>>> __cplusplus = 1 >>>> __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL >>>> __INT_LEAST32_MAX__ = 2147483647 >>>> __DEC32_MIN__ = 1E-95DF >>>> __DEPRECATED = 1 >>>> __DBL_MAX_EXP__ = 1024 >>>> __DEC128_EPSILON__ = 1E-33DL >>>> __PTRDIFF_MAX__ = 2147483647 >>>> __GNUG__ = 4 >>>> __LONG_LONG_MAX__ = 9223372036854775807LL >>>> __SIZEOF_SIZE_T__ = 4 >>>> __SIZEOF_WINT_T__ = 4 >>>> __GCC_HAVE_DWARF2_CFI_ASM = 1 >>>> __GXX_ABI_VERSION = 1002 >>>> __FLT_MIN_EXP__ = (-125) >>>> __i686__ = 1 >>>> __DBL_MIN__ = ((double)2.22507385850720138309e-308L) >>>> __FLT_MIN_10_EXP__ = (-37) >>>> __DECIMAL_BID_FORMAT__ = 1 >>>> __DEC128_MIN__ = 1E-6143DL >>>> __UINT16_MAX__ = 65535 >>>> __DBL_HAS_DENORM__ = 1 >>>> __NO_INLINE__ = 1 >>>> __i386 = 1 >>>> __FLT_MANT_DIG__ = 24 >>>> __VERSION__ = "4.5.2" >>>> __INT32_C(c) = c >>>> __DEC64_EPSILON__ = 1E-15DD >>>> __DEC128_MIN_EXP__ = (-6142) >>>> __INT_FAST32_TYPE__ = int >>>> unix = 1 >>>> __INT16_MAX__ = 32767 >>>> __i386__ = 1 >>>> __UINT64_MAX__ = 18446744073709551615ULL >>>> __ELF__ = 1 >>>> __FLT_RADIX__ = 2 >>>> __LDBL_EPSILON__ = 1.08420217248550443401e-19L >>>> __SIG_ATOMIC_MAX__ = 2147483647 >>>> __SIZEOF_PTRDIFF_T__ = 4 >>>> __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF >>>> __pentiumpro = 1 >>>> __INT_FAST16_MAX__ = 2147483647 >>>> __UINT_FAST32_MAX__ = 4294967295U >>>> __FLT_HAS_QUIET_NAN__ = 1 >>>> __FLT_MAX_10_EXP__ = 38 >>>> __LONG_MAX__ = 2147483647L >>>> __DEC128_SUBNORMAL_MIN__ = >>>> 0.000000000000000000000000000000001E-6143DL >>>> __FLT_HAS_INFINITY__ = 1 >>>> __DEC64_MAX__ = 9.999999999999999E384DD >>>> __PRAGMA_REDEFINE_EXTNAME = 1 >>>> __INT_LEAST16_MAX__ = 32767 >>>> __DEC64_MANT_DIG__ = 16 >>>> __UINT_LEAST32_MAX__ = 4294967295U >>>> __DEC32_MAX_EXP__ = 97 >>>> __INT_FAST8_MAX__ = 127 >>>> __INTPTR_MAX__ = 2147483647 >>>> linux = 1 >>>> __EXCEPTIONS = 1 >>>> __LDBL_MANT_DIG__ = 64 >>>> __DBL_HAS_QUIET_NAN__ = 1 >>>> __INTPTR_TYPE__ = int >>>> __WCHAR_TYPE__ = int >>>> __SIZEOF_FLOAT__ = 4 >>>> __UINTPTR_MAX__ = 4294967295U >>>> __DEC64_MIN_EXP__ = (-382) >>>> __INT_FAST64_MAX__ = 9223372036854775807LL >>>> __FLT_DIG__ = 6 >>>> __INT_MAX__ = 2147483647 >>>> __FLT_MAX_EXP__ = 128 >>>> __DBL_MANT_DIG__ = 53 >>>> __INT_LEAST64_MAX__ = 9223372036854775807LL >>>> __DEC64_MIN__ = 1E-383DD >>>> __SIZEOF_SHORT__ = 2 >>>> __LDBL_MIN_EXP__ = (-16381) >>>> __INT_LEAST8_MAX__ = 127 >>>> __SSP__ = 1 >>>> __LDBL_MAX_10_EXP__ = 4932 >>>> __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) >>>> __UINT8_C(c) = c >>>> __INT_LEAST32_TYPE__ = int >>>> __SIZEOF_WCHAR_T__ = 4 >>>> __DEC_EVAL_METHOD__ = 2 >>>> __INTMAX_MAX__ = 9223372036854775807LL >>>> __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F >>>> __INT8_MAX__ = 127 >>>> __FLT_MAX__ = 3.40282346638528859812e+38F >>>> __INT32_TYPE__ = int >>>> __SIZEOF_DOUBLE__ = 8 >>>> i386 = 1 >>>> __DEC128_MAX_EXP__ = 6145 >>>> __GNUC_MINOR__ = 5 >>>> __UINTMAX_MAX__ = 18446744073709551615ULL >>>> __DEC32_MANT_DIG__ = 7 >>>> __DBL_MAX_10_EXP__ = 308 >>>> __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L >>>> __INT16_C(c) = c >>>> __STDC__ = 1 >>>> __PTRDIFF_TYPE__ = int >>>> __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD >>>> __DEC128_MANT_DIG__ = 34 >>>> __LDBL_MIN_10_EXP__ = (-4931) >>>> __SIZEOF_LONG_LONG__ = 8 >>>> __LDBL_DIG__ = 18 >>>> __UINT_FAST16_MAX__ = 4294967295U >>>> __GNUC_GNU_INLINE__ = 1 >>>> _GNU_SOURCE = 1 >>>> >>>> >>>> >>>> -- >>>> Abdellatif El Khlifi >>>> abd...@ie...<mailto:abd...@ie...> >>>> http://abdellatif.emurse.com/ >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Special Offer -- Download ArcSight Logger for FREE! >>>> Finally, a world-class log management solution at an even better >>>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>>> download Logger. Secure your free ArcSight Logger TODAY! >>>> http://p.sf.net/sfu/arcsisghtdev2dev >>>> >>>> >>>> >>>> _______________________________________________ >>>> Cedet-devel mailing list >>>> Ced...@li... >>>> https://lists.sourceforge.net/lists/listinfo/cedet-devel >>> >> >> >> > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > Learn about the latest advances in developing for the > BlackBerry® mobile platform with sessions, labs & more. > See new tools and technologies. Register for BlackBerry® DevCon today! > http://p.sf.net/sfu/rim-devcon-copy1 > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-devel > -- Abdellatif El Khlifi abd...@ie... http://abdellatif.emurse.com/ |
From: Eric M. L. <eri...@gm...> - 2011-09-25 21:27:03
|
Hi, It should not be necessary to require semantic-c and semantic-gcc in your .emacs file. Only put configuration changes to the preprocessor variables (symbols or files) in your .emacs. Upon loading your first C file, semantic-c and semantic-gcc will get pulled in, and your configurations setup. If you want to change those settings AFTER semantic-c or gcc is already required into Emacs, you need to run (semantic-c-reset-preprocessor-symbol-map). Eric On 09/13/2011 08:33 PM, Abdellatif El Khlifi wrote: > Hi, > > Good news :) it begins to work. > > In fact, earlier I made a new configuration similar to my kernel > configuration based on ede-cpp-root-project. And declared USE1 in a > header file included in the source code, USE2 through ":spp-table" and > USE3 in an out of project header file included through > semantic-lex-c-preprocessor-symbol-file. > > The result was the same as the kernel one: Only USE2 was recognized by semantic. > > So I replaced: > > (require 'semantic-gcc) > (require 'semantic-c) > > by : > > (require 'semantic-gcc) > (require 'semantic-lex-spp) > > Then I changed the location of some other configurations. And I added > the header file including USE1 through > semantic-lex-c-preprocessor-symbol-file. Now it works. All 3 defines > are detected ! I think that the solution is due to the replacement of > semantic-c by semantic-gcc. May be they were conflicting with each > other. > > My issue now is that I prefer to put (with #include) all header files > included in the source code and having some defines like USE1 in a > single header file and that I include simply this one in the ~/.emacs > file (semantic-lex-c-preprocessor-symbol-file). I tried but it doesn't > work. > > All other defines are detected but not these ones. > > > Abdellatif > > On Tue, Sep 13, 2011 at 2:01 AM, Eric M. Ludlam<eri...@gm...> wrote: >> Hi, >> >> It sounds like USE1 and LINUX_ARM_ARCH aren't defined when parsing >> the file. Use semantic-c-describe-environment to validate if that is >> true or not. If those symbols are not there, you need to make sure they >> get defined by either adding the header from which they come to the >> symbol-file variable you are using below, or by adding them by hand into >> the preprocessor-symbol-map you are also using. >> >> CEDET should correctly parse the #define statements even with the >> misc spcaces in front of them. >> >> Eric >> >> On 09/11/2011 12:29 AM, Abdellatif El Khlifi wrote: >>> Hello, >>> >>> Thank you for the answer. >>> >>> I did these steps: >>> >>> - added (add-to-list 'semantic-lex-c-preprocessor-symbol-file "full >>> path to the header file") to the ~/.emacs >>> - removed ~/.semanticdb >>> - restarted emacs , said no to the message box >>> - M-x semanticdb-find-test-translate-paths >>> - forced tag refresh in senator menu >>> - restarted emacs , said yes to the message box >>> - M-x semanticdb-find-test-translate-paths >>> - forced tag refresh in senator menu >>> >>> When I use intellisense I find that only __KERNEL__ is recognized. >>> __LINUX_ARM_ARCH__ and USE1 are not. >>> >>> __KERNEL__ : defined with semantic-lex-c-preprocessor-symbol-map >>> USE1 : defined in a header file included by the current C source file. >>> __LINUX_ARM_ARCH__ : defined with semantic-lex-c-preprocessor-symbol-file >>> >>> Thank you for the help. >>> >>> On Sat, Sep 10, 2011 at 1:26 PM, Eric M. Ludlam<eri...@gm...> wrote: >>>> Hi, >>>> >>>> Sorry about the late reply. I thought I'd replied to this earlier. >>>> >>>> In my experiments, the parsing here worked fine. It seems likely that for >>>> this file, it was parsed and the tags stowed away when you noticed the >>>> problem. If you then added the configurations but the file was never >>>> edited, then it would appear as you described below. In your file, you can >>>> use the senator menu to select a forced tag refresh. If you have big piles >>>> of files that have this issue, now that you've reconfigured things, you can >>>> delete items from ~/.semanticdb matching the directories you care about, and >>>> start over and things should be fine. >>>> >>>> The one problem that will persist is related to: >>>> >>>>> USE1 : defined in a header file included by the current C source file. >>>> >>>> where semantic doesn't actually include the files for you, so you would need >>>> to add it to semantic-lex-c-preprocessor-symbol-map, or add it's header file >>>> to semantic-lex-c-preprocessor-symbol-file. >>>> >>>> Eric >>>> >>>> On 09/05/2011 05:55 PM, Abdellatif El Khlifi wrote: >>>>> >>>>> Hello, >>>>> >>>>> I am trying to use Emacs as an IDE in my Linux kernel development >>>>> projects. So I installed CEDET and GNU Global (gtags) with no >>>>> problems. >>>>> >>>>> When I open a C source code belonging to my Linux kernel source >>>>> folder, the linux project is detected automatically. Functions, >>>>> variables, headers and other keywords are highlighted correctly. >>>>> >>>>> Through the ~/.emacs file I configured semantic's code completion and >>>>> intellisense. So when I press C-<SPC> the code completion menu appears >>>>> and I can choose what's needed. >>>>> >>>>> The issue is when I use preprocessor defines, the intellisense system >>>>> shows the menu on the current location but doesn't detect the right >>>>> things when invoked (C-<SPC>). Even I close and restart emacs the same >>>>> behavior is reproduced. >>>>> >>>>> The test code is: >>>>> >>>>> >>>>> //---------------------------------------------------------------------------------------- >>>>> >>>>> typedef struct >>>>> { >>>>> int p1; >>>>> >>>>> #ifdef __KERNEL__ >>>>> >>>>> int p2; >>>>> >>>>> #endif >>>>> >>>>> #ifdef USE1 >>>>> >>>>> char p3; >>>>> >>>>> #endif >>>>> >>>>> #ifdef __LINUX_ARM_ARCH__ >>>>> >>>>> int p4; >>>>> >>>>> #endif >>>>> >>>>> }OBJ; >>>>> >>>>> OBJ g_obj; >>>>> >>>>> >>>>> //---------------------------------------------------------------------------------------- >>>>> >>>>> __KERNEL__ , USE1 and __LINUX_ARM_ARCH__ are already defined as >>>>> follows: >>>>> >>>>> __KERNEL__ : (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>>> '("__KERNEL__" . "")) in .emacs >>>>> USE1 : defined in a header file included by the current C source file. >>>>> __LINUX_ARM_ARCH__ : (add-to-list 'semantic-lex-c-preprocessor-symbol- >>>>> file "/home/abdellatif/kernel/include/generated/autoconf.h") in .emacs >>>>> >>>>> In the .emacs file I also added all the needed includes and defines >>>>> required by GCC cross compiler (GCC for ARM) to build the kernel >>>>> project. >>>>> >>>>> I also tried to force semantic to use GCC cross compiler command line >>>>> in place of the system GCC to preprocess correctly but haven't found >>>>> how to do that. >>>>> >>>>> >>>>> The .emacs file, the output of the "M-x semantic-c-describe- >>>>> environment" command and the software versions are shown below. >>>>> >>>>> Any help or indication is welcomed :) >>>>> Best regards >>>>> >>>>> ############# Software versions ############# >>>>> >>>>> - Emacs (23.2.1) >>>>> - Ubuntu machine (natty, 11.04) >>>>> - Cedet 1.0 (from http://cedet.sourceforge.net/) >>>>> >>>>> ############# .emacs ############# >>>>> >>>>> ;load CEDET >>>>> >>>>> (load-file "~/Documents/my_emacs/cedet-1.0/common/cedet.el") >>>>> >>>>> (require 'ede) >>>>> >>>>> (global-ede-mode t) >>>>> >>>>> ; turn on which-func support (plus all other code helpers) >>>>> (semantic-load-enable-gaudy-code-helpers) >>>>> (semantic-load-enable-excessive-code-helpers) >>>>> >>>>> ; turn on all "useful" features >>>>> (setq semantic-load-turn-useful-things-on t) >>>>> >>>>> (setq-mode-local c-mode >>>>> semanticdb-find-default-throttle >>>>> '(project unloaded system recursive)) >>>>> >>>>> >>>>> ;init names completion, and displaying of information for tags& >>>>> classes >>>>> (require 'semantic-ia) >>>>> >>>>> >>>>> >>>>> ;preprocessing of source code >>>>> >>>>> (require 'semantic-c) >>>>> >>>>> (semantic-reset-system-include 'c-mode) >>>>> (semantic-reset-system-include 'c++-mode) >>>>> (semantic-add-system-include "/home/abdellatif/toolchain/arm- >>>>> eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/include" 'c-mode) >>>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/ >>>>> include" 'c-mode) >>>>> (semantic-add-system-include "/home/abdellatif/kernel/include" 'c- >>>>> mode) >>>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/mach- >>>>> omap2/include" 'c-mode) >>>>> (semantic-add-system-include "/home/abdellatif/kernel/arch/arm/plat- >>>>> omap/include" 'c-mode) >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-file "/home/ >>>>> abdellatif/kernel/include/generated/autoconf.h") >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__KERNEL__" . >>>>> "")) >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>>> '("__LINUX_ARM_ARCH__" . "7")) >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>>> '("KBUILD_STR(s)" . "#s")) >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>>> '("KBUILD_BASENAME" . "KBUILD_STR(main)")) >>>>> (add-to-list 'semantic-lex-c-preprocessor-symbol-map >>>>> '("KBUILD_MODNAME" . "KBUILD_STR(main)")) >>>>> >>>>> >>>>> ;semantic integration with imenu (display of a menu with a list of >>>>> functions, variables, and other tags) >>>>> (defun my-semantic-hook () >>>>> (imenu-add-to-menubar "TAGS")) >>>>> (add-hook 'semantic-init-hooks 'my-semantic-hook) >>>>> >>>>> ;names completion (semantic commands) >>>>> (defun my-cedet-hook () >>>>> (local-set-key [(control return)] 'semantic-ia-complete-symbol) >>>>> (local-set-key "\C-x " 'semantic-ia-complete-symbol-menu) >>>>> (local-set-key "\C-x\r" 'gtags-find-tag-from-here)) >>>>> (add-hook 'c-mode-common-hook 'my-cedet-hook) >>>>> >>>>> ;navigating in source code >>>>> (semantic-mru-bookmark-mode 1) >>>>> >>>>> >>>>> ;tell semantic to store its tags database between sessions here >>>>> (require 'semanticdb) >>>>> (setq-default semanticdb-default-save-directory "~/.semantic.cache") >>>>> (setq-default semanticdb-default-system-save-directory >>>>> "~/.semantic.cache") >>>>> >>>>> ;allow Semanticdb use databases generated by global(gtags) >>>>> (require 'semanticdb-global) >>>>> (semanticdb-enable-gnu-global-databases 'c-mode) >>>>> >>>>> ############# semantic-c-describe-environment ############# >>>>> >>>>> Calculated GCC Parameters: >>>>> version = 4.5.2 >>>>> --target = i686-linux-gnu >>>>> --host = i686-linux-gnu >>>>> --build = i686-linux-gnu >>>>> --enable-checking = release >>>>> --with-tune = generic >>>>> --with-arch-32 = i686 >>>>> --disable-werror = nil >>>>> --enable-targets = all >>>>> --enable-objc-gc = nil >>>>> --with-plugin-ld = ld.gold >>>>> --enable-ld = default >>>>> --enable-gold = nil >>>>> --enable-plugin = nil >>>>> --enable-libstdcxx-time = yes >>>>> --enable-libstdcxx-debug = nil >>>>> --enable-clocale = gnu >>>>> --with-sysroot = / >>>>> --enable-nls = nil >>>>> --libdir = /usr/lib/i386-linux-gnu >>>>> --with-gxx-include-dir = /usr/include/c++/4.5 >>>>> --enable-threads = posix >>>>> --without-included-gettext = nil >>>>> --libexecdir = /usr/lib/i386-linux-gnu >>>>> --with-system-zlib = nil >>>>> --enable-linker-build-id = nil >>>>> --with-multiarch-defaults = i386-linux-gnu >>>>> --enable-multiarch = nil >>>>> --enable-shared = nil >>>>> --program-suffix = -4.5 >>>>> --prefix = /usr >>>>> --enable-languages = c,c++,fortran,objc,obj-c++ >>>>> --with-bugurl = file:///usr/share/doc/gcc-4.5/README.Bugs >>>>> 4.5.2-8ubuntu4' = nil >>>>> --with-pkgversion = 'Ubuntu/Linaro >>>>> -v = nil >>>>> target = i686-linux-gnu >>>>> >>>>> Include Path Summary: >>>>> >>>>> This file's system include path is: >>>>> /home/abdellatif/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/ >>>>> include/ >>>>> /home/abdellatif/kernel/arch/arm/include/ >>>>> /home/abdellatif/kernel/include/ >>>>> /home/abdellatif/kernel/arch/arm/mach-omap2/include/ >>>>> /home/abdellatif/kernel/arch/arm/plat-omap/include/ >>>>> >>>>> >>>>> Macro Summary: >>>>> >>>>> Your CPP table is primed from these files: >>>>> /home/abdellatif/kernel/include/generated/autoconf.h >>>>> in table: #<semanticdb-table autoconf.h (652 tags)> >>>>> /usr/include/c++/4.5/i686-linux-gnu/bits/c++config.h >>>>> in table: #<semanticdb-table c++config.h (193 tags)> >>>>> >>>>> Built-in symbol map: >>>>> __THROW = >>>>> __const = const >>>>> __restrict = >>>>> __declspec = ((spp-arg-list (foo) 1 . 2)) >>>>> __attribute__ = ((spp-arg-list (foo) 1 . 2)) >>>>> >>>>> User symbol map: >>>>> KBUILD_MODNAME = KBUILD_STR(main) >>>>> KBUILD_BASENAME = KBUILD_STR(main) >>>>> KBUILD_STR(s) = #s >>>>> __LINUX_ARM_ARCH__ = 7 >>>>> __KERNEL__ = >>>>> __DBL_MIN_EXP__ = (-1021) >>>>> __pentiumpro__ = 1 >>>>> __UINT_LEAST16_MAX__ = 65535 >>>>> __FLT_MIN__ = 1.17549435082228750797e-38F >>>>> __CHAR_BIT__ = 8 >>>>> __UINT8_MAX__ = 255 >>>>> __WINT_MAX__ = 4294967295U >>>>> __SIZE_MAX__ = 4294967295U >>>>> __WCHAR_MAX__ = 2147483647<tel:2147483647> >>>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = 1 >>>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = 1 >>>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = 1 >>>>> __DBL_DENORM_MIN__ = ((double)4.94065645841246544177e-324L) >>>>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = 1 >>>>> __FLT_EVAL_METHOD__ = 2 >>>>> __unix__ = 1 >>>>> __UINT_FAST64_MAX__ = 18446744073709551615ULL >>>>> __SIG_ATOMIC_TYPE__ = int >>>>> __DBL_MIN_10_EXP__ = (-307) >>>>> __FINITE_MATH_ONLY__ = 0 >>>>> __GNUC_PATCHLEVEL__ = 2 >>>>> __UINT_FAST8_MAX__ = 255 >>>>> __DEC64_MAX_EXP__ = 385 >>>>> __INT8_C(c) = c >>>>> __UINT_LEAST64_MAX__ = 18446744073709551615ULL >>>>> __SHRT_MAX__ = 32767 >>>>> __LDBL_MAX__ = 1.18973149535723176502e+4932L >>>>> __UINT_LEAST8_MAX__ = 255 >>>>> __linux = 1 >>>>> __DEC32_EPSILON__ = 1E-6DF >>>>> __unix = 1 >>>>> __UINT32_MAX__ = 4294967295U >>>>> __LDBL_MAX_EXP__ = 16384 >>>>> __WINT_MIN__ = 0U >>>>> __linux__ = 1 >>>>> __SCHAR_MAX__ = 127 >>>>> __DBL_DIG__ = 15 >>>>> _FORTIFY_SOURCE = 2 >>>>> __SIZEOF_INT__ = 4 >>>>> __SIZEOF_POINTER__ = 4 >>>>> __STDC_HOSTED__ = 1 >>>>> __LDBL_HAS_INFINITY__ = 1 >>>>> __FLT_EPSILON__ = 1.19209289550781250000e-7F >>>>> __GXX_WEAK__ = 1 >>>>> __LDBL_MIN__ = 3.36210314311209350626e-4932L >>>>> __DEC32_MAX__ = 9.999999E96DF >>>>> __INT32_MAX__ = 2147483647 >>>>> __SIZEOF_LONG__ = 4 >>>>> __UINT16_C(c) = c >>>>> __DECIMAL_DIG__ = 21 >>>>> __gnu_linux__ = 1 >>>>> __LDBL_HAS_QUIET_NAN__ = 1 >>>>> __GNUC__ = 4 >>>>> __GXX_RTTI = 1 >>>>> __FLT_HAS_DENORM__ = 1 >>>>> __SIZEOF_LONG_DOUBLE__ = 12 >>>>> __BIGGEST_ALIGNMENT__ = 16 >>>>> __i686 = 1 >>>>> __DBL_MAX__ = ((double)1.79769313486231570815e+308L) >>>>> __INT_FAST32_MAX__ = 2147483647 >>>>> __DBL_HAS_INFINITY__ = 1 >>>>> __INT64_MAX__ = 9223372036854775807LL >>>>> __DEC32_MIN_EXP__ = (-94) >>>>> __INT_FAST16_TYPE__ = int >>>>> __LDBL_HAS_DENORM__ = 1 >>>>> __cplusplus = 1 >>>>> __DEC128_MAX__ = 9.999999999999999999999999999999999E6144DL >>>>> __INT_LEAST32_MAX__ = 2147483647 >>>>> __DEC32_MIN__ = 1E-95DF >>>>> __DEPRECATED = 1 >>>>> __DBL_MAX_EXP__ = 1024 >>>>> __DEC128_EPSILON__ = 1E-33DL >>>>> __PTRDIFF_MAX__ = 2147483647 >>>>> __GNUG__ = 4 >>>>> __LONG_LONG_MAX__ = 9223372036854775807LL >>>>> __SIZEOF_SIZE_T__ = 4 >>>>> __SIZEOF_WINT_T__ = 4 >>>>> __GCC_HAVE_DWARF2_CFI_ASM = 1 >>>>> __GXX_ABI_VERSION = 1002 >>>>> __FLT_MIN_EXP__ = (-125) >>>>> __i686__ = 1 >>>>> __DBL_MIN__ = ((double)2.22507385850720138309e-308L) >>>>> __FLT_MIN_10_EXP__ = (-37) >>>>> __DECIMAL_BID_FORMAT__ = 1 >>>>> __DEC128_MIN__ = 1E-6143DL >>>>> __UINT16_MAX__ = 65535 >>>>> __DBL_HAS_DENORM__ = 1 >>>>> __NO_INLINE__ = 1 >>>>> __i386 = 1 >>>>> __FLT_MANT_DIG__ = 24 >>>>> __VERSION__ = "4.5.2" >>>>> __INT32_C(c) = c >>>>> __DEC64_EPSILON__ = 1E-15DD >>>>> __DEC128_MIN_EXP__ = (-6142) >>>>> __INT_FAST32_TYPE__ = int >>>>> unix = 1 >>>>> __INT16_MAX__ = 32767 >>>>> __i386__ = 1 >>>>> __UINT64_MAX__ = 18446744073709551615ULL >>>>> __ELF__ = 1 >>>>> __FLT_RADIX__ = 2 >>>>> __LDBL_EPSILON__ = 1.08420217248550443401e-19L >>>>> __SIG_ATOMIC_MAX__ = 2147483647 >>>>> __SIZEOF_PTRDIFF_T__ = 4 >>>>> __DEC32_SUBNORMAL_MIN__ = 0.000001E-95DF >>>>> __pentiumpro = 1 >>>>> __INT_FAST16_MAX__ = 2147483647 >>>>> __UINT_FAST32_MAX__ = 4294967295U >>>>> __FLT_HAS_QUIET_NAN__ = 1 >>>>> __FLT_MAX_10_EXP__ = 38 >>>>> __LONG_MAX__ = 2147483647L >>>>> __DEC128_SUBNORMAL_MIN__ = >>>>> 0.000000000000000000000000000000001E-6143DL >>>>> __FLT_HAS_INFINITY__ = 1 >>>>> __DEC64_MAX__ = 9.999999999999999E384DD >>>>> __PRAGMA_REDEFINE_EXTNAME = 1 >>>>> __INT_LEAST16_MAX__ = 32767 >>>>> __DEC64_MANT_DIG__ = 16 >>>>> __UINT_LEAST32_MAX__ = 4294967295U >>>>> __DEC32_MAX_EXP__ = 97 >>>>> __INT_FAST8_MAX__ = 127 >>>>> __INTPTR_MAX__ = 2147483647 >>>>> linux = 1 >>>>> __EXCEPTIONS = 1 >>>>> __LDBL_MANT_DIG__ = 64 >>>>> __DBL_HAS_QUIET_NAN__ = 1 >>>>> __INTPTR_TYPE__ = int >>>>> __WCHAR_TYPE__ = int >>>>> __SIZEOF_FLOAT__ = 4 >>>>> __UINTPTR_MAX__ = 4294967295U >>>>> __DEC64_MIN_EXP__ = (-382) >>>>> __INT_FAST64_MAX__ = 9223372036854775807LL >>>>> __FLT_DIG__ = 6 >>>>> __INT_MAX__ = 2147483647 >>>>> __FLT_MAX_EXP__ = 128 >>>>> __DBL_MANT_DIG__ = 53 >>>>> __INT_LEAST64_MAX__ = 9223372036854775807LL >>>>> __DEC64_MIN__ = 1E-383DD >>>>> __SIZEOF_SHORT__ = 2 >>>>> __LDBL_MIN_EXP__ = (-16381) >>>>> __INT_LEAST8_MAX__ = 127 >>>>> __SSP__ = 1 >>>>> __LDBL_MAX_10_EXP__ = 4932 >>>>> __DBL_EPSILON__ = ((double)2.22044604925031308085e-16L) >>>>> __UINT8_C(c) = c >>>>> __INT_LEAST32_TYPE__ = int >>>>> __SIZEOF_WCHAR_T__ = 4 >>>>> __DEC_EVAL_METHOD__ = 2 >>>>> __INTMAX_MAX__ = 9223372036854775807LL >>>>> __FLT_DENORM_MIN__ = 1.40129846432481707092e-45F >>>>> __INT8_MAX__ = 127 >>>>> __FLT_MAX__ = 3.40282346638528859812e+38F >>>>> __INT32_TYPE__ = int >>>>> __SIZEOF_DOUBLE__ = 8 >>>>> i386 = 1 >>>>> __DEC128_MAX_EXP__ = 6145 >>>>> __GNUC_MINOR__ = 5 >>>>> __UINTMAX_MAX__ = 18446744073709551615ULL >>>>> __DEC32_MANT_DIG__ = 7 >>>>> __DBL_MAX_10_EXP__ = 308 >>>>> __LDBL_DENORM_MIN__ = 3.64519953188247460253e-4951L >>>>> __INT16_C(c) = c >>>>> __STDC__ = 1 >>>>> __PTRDIFF_TYPE__ = int >>>>> __DEC64_SUBNORMAL_MIN__ = 0.000000000000001E-383DD >>>>> __DEC128_MANT_DIG__ = 34 >>>>> __LDBL_MIN_10_EXP__ = (-4931) >>>>> __SIZEOF_LONG_LONG__ = 8 >>>>> __LDBL_DIG__ = 18 >>>>> __UINT_FAST16_MAX__ = 4294967295U >>>>> __GNUC_GNU_INLINE__ = 1 >>>>> _GNU_SOURCE = 1 >>>>> >>>>> >>>>> >>>>> -- >>>>> Abdellatif El Khlifi >>>>> abd...@ie...<mailto:abd...@ie...> >>>>> http://abdellatif.emurse.com/ >>>>> >>>>> >>>>> >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Special Offer -- Download ArcSight Logger for FREE! >>>>> Finally, a world-class log management solution at an even better >>>>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>>>> download Logger. Secure your free ArcSight Logger TODAY! >>>>> http://p.sf.net/sfu/arcsisghtdev2dev >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Cedet-devel mailing list >>>>> Ced...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/cedet-devel >>>> >>> >>> >>> >> >> ------------------------------------------------------------------------------ >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> Learn about the latest advances in developing for the >> BlackBerry® mobile platform with sessions, labs& more. >> See new tools and technologies. Register for BlackBerry® DevCon today! >> http://p.sf.net/sfu/rim-devcon-copy1 >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> > > > |