Thread: [CEDET-devel] Problems About Semantic
Brought to you by:
zappo
From: 朱. <zhu...@fo...> - 2013-12-20 13:19:39
|
Hello: My name is Zhu Zhongshu, a student in China. I have a small problem about the parser. When I am using the linear algebra library called "Eigen" in my code, I find the company-mode can't work for this library. Because the semantic will not parse the header files without any suffix, for example "Dense" instead of "Dense.h" .When I add the suffix .h, it works well. After this, I write a simple header file without suffix .h, the same problem happens again. I really don't know how to deal with it, so I use CB now... Please give me some suggestions ,many thanks!! Sincerely, Zzs 2013/12/20 |
From: Eric M. L. <er...@si...> - 2013-12-21 03:48:50
|
On 12/20/2013 08:19 AM, 朱仲书 wrote: > Hello: > My name is Zhu Zhongshu, a student in China. > I have a small problem about the parser. When I am using the linear > algebra library called "Eigen" in my code, I find the company-mode can't > work for this library. Because the semantic will not parse the header > files without any suffix, for example "Dense" instead of "Dense.h" .When > I add the suffix .h, it works well. > After this, I write a simple header file without suffix .h, the same > problem happens again. I really don't know how to deal with it, so I use > CB now... > Please give me some suggestions ,many thanks!! Hi, You probably need to add a mode cooking into your header file, such as: // Components for manipulating sequences of characters -*- C++ -*- which came from the c++ "string" header on my Linux box. If you can't edit them, add something to your auto-mode-alist, such as: (add-to-list 'auto-mode-alist '("^/path/to/some/headers/" . c++-mode) t) to force that stuff to be in C++ mode. Good Luck Eric |
From: 朱. <zhu...@fo...> - 2013-12-21 15:12:36
|
Hello: Another problem, Semantic can parse Eigen library after adding the mode cookie, but the auto-compeletion still doesn't work :( I utilize the company-mode, it works perfectly for C++ STL and other headers except Eigen. Maybe it's due to the Eigen library is too complicated. Sincerely, Zhu Zhongshu ------------------ 原始邮件 ------------------ 发件人: "朱仲书";<zhu...@fo...>; 发送时间: 2013年12月21日(星期六) 晚上9:47 收件人: "Eric M. Ludlam"<er...@si...>; 主题: 回复: 回复: [CEDET-devel] Problems About Semantic OK, I will correct it in my topic about this problem in Eigen forum. I don't know the meaning of mode cookie before, Thanks for your correction and explanation~ Sincerely, Zhu Zhongshu ------------------ 原始邮件 ------------------ 发件人: "Eric M. Ludlam";<er...@si...>; 发送时间: 2013年12月21日(星期六) 晚上9:34 收件人: "朱仲书"<zhu...@fo...>; 主题: Re: 回复: [CEDET-devel] Problems About Semantic Hi Zhu, I'm glad it worked. I see a typo in my first message is propagating. I should have typed: mode cookie A mode cookie is a small identifier that can be picked up by emacs to identify the mode of the file when extensions don't work. Thanks Eric On 12/21/2013 06:47 AM, 朱仲书 wrote: > Hello: > > I add the mode cooking in one Eigen header file and Semantic can parse > it now~I will try the second method later because I need to report this > minor problem to the Eigen group. > > Many Thanks~ > Zhu Zhongshu > > > ------------------ 原始邮件 ------------------ > *发件人:* "Eric M. Ludlam";<er...@si...>; > *发送时间:* 2013年12月21日(星期六) 中午11:48 > *收件人:* "朱仲书"<zhu...@fo...>; > *抄送:* "cedet-devel"<ced...@li...>; > *主题:* Re: [CEDET-devel] Problems About Semantic > > On 12/20/2013 08:19 AM, 朱仲书 wrote: > > Hello: > > My name is Zhu Zhongshu, a student in China. > > I have a small problem about the parser. When I am using the linear > > algebra library called "Eigen" in my code, I find the company-mode can't > > work for this library. Because the semantic will not parse the header > > files without any suffix, for example "Dense" instead of "Dense.h" .When > > I add the suffix .h, it works well. > > After this, I write a simple header file without suffix .h, the same > > problem happens again. I really don't know how to deal with it, so I use > > CB now... > > Please give me some suggestions ,many thanks!! > > Hi, > > You probably need to add a mode cooking into your header file, such as: > > // Components for manipulating sequences of characters -*- C++ -*- > > which came from the c++ "string" header on my Linux box. > > If you can't edit them, add something to your auto-mode-alist, such as: > > (add-to-list 'auto-mode-alist '("^/path/to/some/headers/" . c++-mode) t) > > to force that stuff to be in C++ mode. > > Good Luck > Eric > . . |
From: David E. <de...@ra...> - 2013-12-21 09:52:05
|
Eric M. Ludlam writes: > On 12/20/2013 08:19 AM, 朱仲书 wrote: >> I have a small problem about the parser. When I am using the linear >> algebra library called "Eigen" in my code, I find the company-mode can't >> work for this library. Because the semantic will not parse the header >> files without any suffix, for example "Dense" instead of "Dense.h" .When >> I add the suffix .h, it works well. >> After this, I write a simple header file without suffix .h, the same >> problem happens again. I really don't know how to deal with it, so I use >> CB now... >> Please give me some suggestions ,many thanks!! > > If you can't edit them, add something to your auto-mode-alist, such as: > > (add-to-list 'auto-mode-alist '("^/path/to/some/headers/" . c++-mode) t) > > to force that stuff to be in C++ mode. While this should work, don't be surprised if you don't get the right completions. The Eigen library is incredibly complicated C++ code and makes heavy use of static polymorphism (CRTP) and expression templates, which Semantic cannot fully understand. Also, it generates types through pretty complex preprocessor trickery. -David |
From: 朱. <zhu...@fo...> - 2013-12-21 12:06:49
|
To my konwledge, the Code::Blocks provides an execllent completion even for Eigen library. I have used them together in my last project. Thanks for your suggestions!! Zhu Zhongshuew ------------------ 原始邮件 ------------------ 发件人: "David Engster"; 发送时间: 2013年12月21日(星期六) 下午5:50 收件人: "Eric M. Ludlam"; 抄送: "朱仲书"; "cedet-devel"; 主题: Re: [CEDET-devel] Problems About Semantic Eric M. Ludlam writes: > On 12/20/2013 08:19 AM, 朱仲书 wrote: >> I have a small problem about the parser. When I am using the linear >> algebra library called "Eigen" in my code, I find the company-mode can't >> work for this library. Because the semantic will not parse the header >> files without any suffix, for example "Dense" instead of "Dense.h" .When >> I add the suffix .h, it works well. >> After this, I write a simple header file without suffix .h, the same >> problem happens again. I really don't know how to deal with it, so I use >> CB now... >> Please give me some suggestions ,many thanks!! > > If you can't edit them, add something to your auto-mode-alist, such as: > > (add-to-list 'auto-mode-alist '("^/path/to/some/headers/" . c++-mode) t) > > to force that stuff to be in C++ mode. While this should work, don't be surprised if you don't get the right completions. The Eigen library is incredibly complicated C++ code and makes heavy use of static polymorphism (CRTP) and expression templates, which Semantic cannot fully understand. Also, it generates types through pretty complex preprocessor trickery. -David . |
From: David E. <de...@ra...> - 2013-12-21 11:49:00
|
朱仲书 writes: > To my konwledge, the Code::Blocks provides an execllent completion even for > Eigen library. I have used them together in my last project. Yes, Code::Blocks has a pretty good parser. I actually used the Eigen library and also fixed some stuff in Semantic to better deal with the preprocessor-generated types (like 'Matrix3f' and so on). If I remember correctly, most of that stuff was then detected correctly, but if you see further problems, then feel free to report them here; maybe it's not too hard to fix them. -David |
From: 朱. <zhu...@fo...> - 2013-12-21 12:21:09
|
Ok, I will report my problems, if I encounter them in future using. Wish this can give suggestions for people with similar problems. Sincerely, Zhu Zhongshu ------------------ 原始邮件 ------------------ 发件人: "David Engster";<de...@ra...>; 发送时间: 2013年12月21日(星期六) 晚上7:47 收件人: "朱仲书"<zhu...@fo...>; 抄送: "Eric M. Ludlam"<er...@si...>; "cedet-devel"<ced...@li...>; 主题: Re: 回复: [CEDET-devel] Problems About Semantic 朱仲书 writes: > To my konwledge, the Code::Blocks provides an execllent completion even for > Eigen library. I have used them together in my last project. Yes, Code::Blocks has a pretty good parser. I actually used the Eigen library and also fixed some stuff in Semantic to better deal with the preprocessor-generated types (like 'Matrix3f' and so on). If I remember correctly, most of that stuff was then detected correctly, but if you see further problems, then feel free to report them here; maybe it's not too hard to fix them. -David . |
From: David E. <de...@ra...> - 2013-12-21 14:56:43
|
朱仲书 writes: > Another problem, Semantic can parse Eigen library after adding the mode cookie, > but the auto-compeletion still doesn't work :( > I utilize the company-mode, it works perfectly for C++ STL and other headers > except Eigen. Maybe it's due to the Eigen library is too complicated. Please be more specific and provide a test case for me to be able to reproduce the problem. Also, please show how you setup CEDET in your init file. -David |