* c-style-alist @ 2010-09-16 14:42 Andrea Crotti 2010-09-25 11:54 ` c-style-alist Andrea Crotti 0 siblings, 1 reply; 10+ messages in thread From: Andrea Crotti @ 2010-09-16 14:42 UTC (permalink / raw) To: help-gnu-emacs Supposing I have a new language (actually NED), and I already have some syntax highlighting. The only thing I want to add is a smarter indentation, and for that is quite similar to C++. Looking for possible answers I found out that in c-style-alist there is also for example python-mode, which is not a c-mode derivatives. Is that is the general way to define the correct the policy of spacing? And what if I define it as a derived mode even if it's quite different from the original c/c++ branch? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-16 14:42 c-style-alist Andrea Crotti @ 2010-09-25 11:54 ` Andrea Crotti 2010-09-25 14:02 ` c-style-alist Andreas Röhler 0 siblings, 1 reply; 10+ messages in thread From: Andrea Crotti @ 2010-09-25 11:54 UTC (permalink / raw) To: help-gnu-emacs Andrea Crotti <andrea.crotti.0@gmail.com> writes: > Supposing I have a new language (actually NED), and I already have some > syntax highlighting. > > The only thing I want to add is a smarter indentation, and for that is > quite similar to C++. > > Looking for possible answers I found out that in > c-style-alist there is also for example python-mode, which is not a > c-mode derivatives. > > Is that is the general way to define the correct the policy of spacing? > And what if I define it as a derived mode even if it's quite different > from the original c/c++ branch? I solved making that mode a derived-mode from cc-mode. Then I created another derived-mode for c++ files used by omnetpp, but I'm struggling to make it automatically enabled. It's very very simple --8<---------------cut here---------------start------------->8--- (require 'derived) (define-derived-mode cpp-omnet-mode c++-mode "C++ Omnet mode" "Major mode for editing c++ files used with omnet++" ) (provide 'cpp-omnet-mode) --8<---------------cut here---------------end--------------->8--- and I thought I could do simply something like --8<---------------cut here---------------start------------->8--- ;; Look for the file .ini or the header inclusion (defun is-omnet-cpp-file () (if (or (file-exists-p "omnetpp.ini") (search-forward "<omnetpp.h>")) (cpp-omnet-mode))) ;FIXME: Not working correctly yet, because it goes in infinite loop ;; (add-hook 'c++-mode-hook 'is-omnet-cpp-file) --8<---------------cut here---------------end--------------->8--- But it's not fine, since it will evaluate infinitely this hook. Another possibility would be to use "find-file-hook", but it doesn't really make sense because the files possible are a subset of c++ files. How can I make it non recurse keeping this? Or some other suggestions? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-25 11:54 ` c-style-alist Andrea Crotti @ 2010-09-25 14:02 ` Andreas Röhler 2010-09-25 22:07 ` c-style-alist PJ Weisberg 0 siblings, 1 reply; 10+ messages in thread From: Andreas Röhler @ 2010-09-25 14:02 UTC (permalink / raw) To: help-gnu-emacs Am 25.09.2010 13:54, schrieb Andrea Crotti: > Andrea Crotti<andrea.crotti.0@gmail.com> writes: > >> Supposing I have a new language (actually NED), and I already have some >> syntax highlighting. >> >> The only thing I want to add is a smarter indentation, and for that is >> quite similar to C++. >> >> Looking for possible answers I found out that in >> c-style-alist there is also for example python-mode, which is not a >> c-mode derivatives. >> >> Is that is the general way to define the correct the policy of spacing? >> And what if I define it as a derived mode even if it's quite different >> from the original c/c++ branch? > > I solved making that mode a derived-mode from cc-mode. > Then I created another derived-mode for c++ files used by omnetpp, but > I'm struggling to make it automatically enabled. > > It's very very simple > --8<---------------cut here---------------start------------->8--- > (require 'derived) > > (define-derived-mode cpp-omnet-mode c++-mode "C++ Omnet mode" > "Major mode for editing c++ files used with omnet++" > ) > > (provide 'cpp-omnet-mode) > --8<---------------cut here---------------end--------------->8--- > > and I thought I could do simply something like > --8<---------------cut here---------------start------------->8--- > ;; Look for the file .ini or the header inclusion > (defun is-omnet-cpp-file () > (if > (or (file-exists-p "omnetpp.ini") > (search-forward "<omnetpp.h>")) > (cpp-omnet-mode))) > > ;FIXME: Not working correctly yet, because it goes in infinite loop > ;; (add-hook 'c++-mode-hook 'is-omnet-cpp-file) > --8<---------------cut here---------------end--------------->8--- > > But it's not fine, since it will evaluate infinitely this hook. > Another possibility would be to use "find-file-hook", but it doesn't > really make sense because the files possible are a subset of c++ files. > > How can I make it non recurse keeping this? > Or some other suggestions? > > > Maybe like this: (defun is-omnet-cpp-file () (or (cpp-omnet-mode) (if (or (file-exists-p "omnetpp.ini") (search-forward "<omnetpp.h>")) (cpp-omnet-mode)))) There is no path with "omnetpp.ini", which however should not cause a infinite. Andreas -- https://code.launchpad.net/~a-roehler/python-mode https://code.launchpad.net/s-x-emacs-werkstatt/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-25 14:02 ` c-style-alist Andreas Röhler @ 2010-09-25 22:07 ` PJ Weisberg 2010-09-28 9:00 ` c-style-alist Andrea Crotti 0 siblings, 1 reply; 10+ messages in thread From: PJ Weisberg @ 2010-09-25 22:07 UTC (permalink / raw) To: help-gnu-emacs On Sat, Sep 25, 2010 at 7:02 AM, Andreas Röhler <andreas.roehler@easy-emacs.de> wrote: > Am 25.09.2010 13:54, schrieb Andrea Crotti: >> I solved making that mode a derived-mode from cc-mode. >> Then I created another derived-mode for c++ files used by omnetpp, but >> I'm struggling to make it automatically enabled. >> >> It's very very simple >> --8<---------------cut here---------------start------------->8--- >> (require 'derived) >> >> (define-derived-mode cpp-omnet-mode c++-mode "C++ Omnet mode" >> "Major mode for editing c++ files used with omnet++" >> ) >> >> (provide 'cpp-omnet-mode) >> --8<---------------cut here---------------end--------------->8--- >> >> and I thought I could do simply something like >> --8<---------------cut here---------------start------------->8--- >> ;; Look for the file .ini or the header inclusion >> (defun is-omnet-cpp-file () >> (if >> (or (file-exists-p "omnetpp.ini") >> (search-forward "<omnetpp.h>")) >> (cpp-omnet-mode))) >> >> ;FIXME: Not working correctly yet, because it goes in infinite loop >> ;; (add-hook 'c++-mode-hook 'is-omnet-cpp-file) >> --8<---------------cut here---------------end--------------->8--- >> >> But it's not fine, since it will evaluate infinitely this hook. >> Another possibility would be to use "find-file-hook", but it doesn't >> really make sense because the files possible are a subset of c++ files. >> >> How can I make it non recurse keeping this? >> Or some other suggestions? > > Maybe like this: > > (defun is-omnet-cpp-file () > (or (cpp-omnet-mode) > (if > (or (file-exists-p "omnetpp.ini") > (search-forward "<omnetpp.h>")) > (cpp-omnet-mode)))) > > There is no path with "omnetpp.ini", which however should not cause a > infinite. It looks to me like what's happening is that in the hook it switches to cpp-omnet-mode, and since that's derived from c++-mode it results in c++-mode-hooks getting run again, so it again switches to cpp-omnet-mode and runs c++-mode-hooks, ad infinitum. I'm not an expert and I'm sure there's a better way to do it, but one way I could suggest is to set a buffer-local variable to mark that you're switching to cpp-omnet-mode, and don't switch to cpp-omnet-mode again if it's already set. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-25 22:07 ` c-style-alist PJ Weisberg @ 2010-09-28 9:00 ` Andrea Crotti 2010-09-28 10:41 ` c-style-alist Andreas Röhler [not found] ` <AANLkTinKPzz3aNY0e-7uOvK=3nN7Gs+dgf_3xv4+pLva@mail.gmail.com> 0 siblings, 2 replies; 10+ messages in thread From: Andrea Crotti @ 2010-09-28 9:00 UTC (permalink / raw) To: help-gnu-emacs PJ Weisberg <pj@irregularexpressions.net> writes: > > It looks to me like what's happening is that in the hook it switches > to cpp-omnet-mode, and since that's derived from c++-mode it results > in c++-mode-hooks getting run again, so it again switches to > cpp-omnet-mode and runs c++-mode-hooks, ad infinitum. > > I'm not an expert and I'm sure there's a better way to do it, but one > way I could suggest is to set a buffer-local variable to mark that > you're switching to cpp-omnet-mode, and don't switch to cpp-omnet-mode > again if it's already set. That's exactly what happens, and also the solutions from Andreas doesn't work, it still loops forever. But I don't understand why, since if the OR is short circuiting... But probably I never really pass to cpp-omnet UNTIL all the hooks in c++-mode have been executed. I don't see how the variable could help me with that, maybe an example? Another non related thing, I made a ned-file mode derivate of cc-mode, because it comes handy for many things, but now is there a way to tell yasnippet to expand ONLY the snippets for ned-mode? Otherwise I also see all the snippets for C and C++ which I don't need at all in this case.. Thanks, Andrea ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-28 9:00 ` c-style-alist Andrea Crotti @ 2010-09-28 10:41 ` Andreas Röhler [not found] ` <AANLkTinKPzz3aNY0e-7uOvK=3nN7Gs+dgf_3xv4+pLva@mail.gmail.com> 1 sibling, 0 replies; 10+ messages in thread From: Andreas Röhler @ 2010-09-28 10:41 UTC (permalink / raw) To: help-gnu-emacs Am 28.09.2010 11:00, schrieb Andrea Crotti: > PJ Weisberg<pj@irregularexpressions.net> writes: > >> >> It looks to me like what's happening is that in the hook it switches >> to cpp-omnet-mode, and since that's derived from c++-mode it results >> in c++-mode-hooks getting run again, so it again switches to >> cpp-omnet-mode and runs c++-mode-hooks, ad infinitum. >> >> I'm not an expert and I'm sure there's a better way to do it, but one >> way I could suggest is to set a buffer-local variable to mark that >> you're switching to cpp-omnet-mode, and don't switch to cpp-omnet-mode >> again if it's already set. > > That's exactly what happens, and also the solutions from Andreas doesn't > work, it still loops forever. > > But I don't understand why, since if the OR is short circuiting... > But probably I never really pass to cpp-omnet UNTIL all the hooks in > c++-mode have been executed. > > I don't see how the variable could help me with that, maybe an example? Using a variable is the right thing. Even example code would work, if your mode, once set, returns it. Begin questioning, if the variable is set: (unless my-code-already-active-p ... ACTIVATE (setq my-code-already-active-p t) This should avoid the loop. > > Another non related thing, I made a ned-file mode derivate of cc-mode, > because it comes handy for many things, but now is there a way to tell > yasnippet to expand ONLY the snippets for ned-mode? > > Otherwise I also see all the snippets for C and C++ which I don't need > at all in this case.. > Thanks, > Andrea > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <AANLkTinKPzz3aNY0e-7uOvK=3nN7Gs+dgf_3xv4+pLva@mail.gmail.com>]
[parent not found: <B10177A4-D04A-417D-944C-F21564A9C4A9@gmail.com>]
* Re: c-style-alist [not found] ` <B10177A4-D04A-417D-944C-F21564A9C4A9@gmail.com> @ 2010-09-29 22:02 ` PJ Weisberg 2010-10-06 14:13 ` c-style-alist Andrea Crotti 0 siblings, 1 reply; 10+ messages in thread From: PJ Weisberg @ 2010-09-29 22:02 UTC (permalink / raw) To: Andrea Crotti, help-gnu-emacs On Wed, Sep 29, 2010 at 5:40 AM, Andrea Crotti <andrea.crotti.0@gmail.com> wrote: > > Il giorno 28/set/2010, alle ore 18.26, PJ Weisberg ha scritto >> >> The or is short-circuiting, but problem is with calling >> cpp-omnet-mode, not search-forward. >> >> I was thinking something like this: >> >> (add-hook 'c++-mode-hook 'is-omnet-cpp-file) >> (make-variable-buffer-local 'changing-to-omnet) >> >> (defun is-omnet-cpp-file () >> (when (and (or (file-exists-p "omnetpp.ini") >> (search-forward "<omnetpp.h>")) >> (not changing-to-omnet)) >> (setq changing-to-omnet t) >> (cpp-omnet-mode) >> (setq changing-to-omnet nil))) > > Thanks, but I don't see it on the list I think you only sent to me... > Unfortunately still doesn't work, the same infinite loop problem, even > if this time I really think it was working, very weird! Hm. With that code I don't think it can be calling cpp-omnet-mode from is-omnet-cpp-file before it's returned from the previous call to cpp-omnet-mode from is-omnet-cpp file. What list of function calls do you get with the error? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-09-29 22:02 ` c-style-alist PJ Weisberg @ 2010-10-06 14:13 ` Andrea Crotti 2010-10-06 21:40 ` c-style-alist PJ Weisberg 0 siblings, 1 reply; 10+ messages in thread From: Andrea Crotti @ 2010-10-06 14:13 UTC (permalink / raw) To: help-gnu-emacs PJ Weisberg <pj@irregularexpressions.net> writes: > > Hm. With that code I don't think it can be calling cpp-omnet-mode > from is-omnet-cpp-file before it's returned from the previous call to > cpp-omnet-mode from is-omnet-cpp file. What list of function calls do > you get with the error? Still doesn't work, or well it works because the mode is activated correctly, but it still goes in --8<---------------cut here---------------start------------->8--- block: Lisp nesting exceeds `max-lisp-eval-depth' --8<---------------cut here---------------end--------------->8--- I also activated the debug-on-error but I don't see any list of function calls. Maybe you meant that I have to trace the function? Thanks, Andrea ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-10-06 14:13 ` c-style-alist Andrea Crotti @ 2010-10-06 21:40 ` PJ Weisberg 2010-10-07 16:30 ` c-style-alist Andrea Crotti 0 siblings, 1 reply; 10+ messages in thread From: PJ Weisberg @ 2010-10-06 21:40 UTC (permalink / raw) To: Andrea Crotti; +Cc: help-gnu-emacs On Wed, Oct 6, 2010 at 7:13 AM, Andrea Crotti <andrea.crotti.0@gmail.com> wrote: > PJ Weisberg <pj@irregularexpressions.net> writes: >> >> Hm. With that code I don't think it can be calling cpp-omnet-mode >> from is-omnet-cpp-file before it's returned from the previous call to >> cpp-omnet-mode from is-omnet-cpp file. What list of function calls do >> you get with the error? > > Still doesn't work, or well it works because the mode is activated > correctly, but it still goes in > --8<---------------cut here---------------start------------->8--- > block: Lisp nesting exceeds `max-lisp-eval-depth' > --8<---------------cut here---------------end--------------->8--- > > I also activated the debug-on-error but I don't see any list of function > calls. > Maybe you meant that I have to trace the function? > Thanks, > Andrea I meant what shows up in the *Backtrace* buffer. For me it usually appears in another window on the frame when I get an error, but I guess not always. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: c-style-alist 2010-10-06 21:40 ` c-style-alist PJ Weisberg @ 2010-10-07 16:30 ` Andrea Crotti 0 siblings, 0 replies; 10+ messages in thread From: Andrea Crotti @ 2010-10-07 16:30 UTC (permalink / raw) To: help-gnu-emacs PJ Weisberg <pj@irregularexpressions.net> writes: > > I meant what shows up in the *Backtrace* buffer. For me it usually > appears in another window on the frame when I get an error, but I > guess not always. No apparently it doesn't... But there is another problem now, being omnet-cpp a major mode also semantic doesn't work anymore. In an older version it was possible to do something like --8<---------------cut here---------------start------------->8--- ;; (add-to-list 'semantic-new-buffer-setup-functions ;; '(cpp-omnet-mode . semantic-default-c-setup)) --8<---------------cut here---------------end--------------->8--- but that variable is not there anymore and I can't find something similar, any idea? And another problem, when I open a file ".h" which is clearly a c++ file (there are classes for example) is not possible for emacs to use the correct mode automatically? Thanks ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-10-07 16:30 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-09-16 14:42 c-style-alist Andrea Crotti 2010-09-25 11:54 ` c-style-alist Andrea Crotti 2010-09-25 14:02 ` c-style-alist Andreas Röhler 2010-09-25 22:07 ` c-style-alist PJ Weisberg 2010-09-28 9:00 ` c-style-alist Andrea Crotti 2010-09-28 10:41 ` c-style-alist Andreas Röhler [not found] ` <AANLkTinKPzz3aNY0e-7uOvK=3nN7Gs+dgf_3xv4+pLva@mail.gmail.com> [not found] ` <B10177A4-D04A-417D-944C-F21564A9C4A9@gmail.com> 2010-09-29 22:02 ` c-style-alist PJ Weisberg 2010-10-06 14:13 ` c-style-alist Andrea Crotti 2010-10-06 21:40 ` c-style-alist PJ Weisberg 2010-10-07 16:30 ` c-style-alist Andrea Crotti
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).