* automatic indentation in C,C++ modes @ 2002-04-12 22:56 Tony Harbin 2002-04-13 1:06 ` Greg Hill 0 siblings, 1 reply; 8+ messages in thread From: Tony Harbin @ 2002-04-12 22:56 UTC (permalink / raw) How do I turn off all automatic indentation in C and C++ modes? I find this behavior *VERY* annoying and would like to disable it permanently (i.e. in the .emacs file) Thanks for your time. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-12 22:56 automatic indentation in C,C++ modes Tony Harbin @ 2002-04-13 1:06 ` Greg Hill 2002-04-15 16:51 ` Tony Harbin 0 siblings, 1 reply; 8+ messages in thread From: Greg Hill @ 2002-04-13 1:06 UTC (permalink / raw) At 5:56 PM -0500 4/12/02, Tony Harbin wrote: >How do I turn off all automatic indentation in C and C++ modes? I find >this >behavior *VERY* annoying and would like to disable it permanently (i.e. >in the >.emacs file) > >Thanks for your time. Tony, If all you want is to insert a tab character at the beginning of a line when you type the tab key, try adding this to your .emacs file: (add-hook 'c-mode-hook (function (lambda () (substitute-key-definition 'c-indent-command 'self-insert-command c-mode-map)))) (add-hook 'c++-mode-hook (function (lambda () (substitute-key-definition 'c-indent-command 'self-insert-command c++-mode-map)))) If, while you are at it, you also want to define the size of a tab as, say, 3 spaces, make it: (add-hook 'c-mode-hook (function (lambda () (substitute-key-definition 'c-indent-command 'self-insert-command c-mode-map) (setq tab-width 3)))) --Greg ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-13 1:06 ` Greg Hill @ 2002-04-15 16:51 ` Tony Harbin 2002-04-15 18:47 ` Greg Hill 0 siblings, 1 reply; 8+ messages in thread From: Tony Harbin @ 2002-04-15 16:51 UTC (permalink / raw) Cc: help-gnu-emacs Not quite. C/C++ mode binds open-paren, open-brace, colon, and slash (among others) to "electric" functions that, when the key is typed, automatically change the spacing and/or indentation on the line. I would like to disable/override/turn off this behavior. I was able to do this in an older version where I had to explicitly load the C/C++ mode modules, but in my current version (20.7.1), the stuff was already compiled in and the same tricks no longer work. Basically, I would just like those keys above to just self-insert and not run the "electric" functions. Is there a way to do this? Thanks. Greg Hill wrote: > At 5:56 PM -0500 4/12/02, Tony Harbin wrote: > >How do I turn off all automatic indentation in C and C++ modes? I find > >this > >behavior *VERY* annoying and would like to disable it permanently (i.e. > >in the > >.emacs file) > > > >Thanks for your time. > > Tony, > > If all you want is to insert a tab character at the beginning of a > line when you type the tab key, try adding this to your .emacs file: > > (add-hook 'c-mode-hook > (function (lambda () > (substitute-key-definition > 'c-indent-command 'self-insert-command c-mode-map)))) > > (add-hook 'c++-mode-hook > (function (lambda () > (substitute-key-definition > 'c-indent-command 'self-insert-command c++-mode-map)))) > > If, while you are at it, you also want to define the size of a tab > as, say, 3 spaces, make it: > > (add-hook 'c-mode-hook > (function (lambda () > (substitute-key-definition > 'c-indent-command 'self-insert-command c-mode-map) > (setq tab-width 3)))) > > --Greg ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-15 16:51 ` Tony Harbin @ 2002-04-15 18:47 ` Greg Hill 2002-04-19 17:30 ` Tony Harbin 0 siblings, 1 reply; 8+ messages in thread From: Greg Hill @ 2002-04-15 18:47 UTC (permalink / raw) Cc: help-gnu-emacs Tony, It just takes more of the same, e.g.: (add-hook 'c-mode-hook (function (lambda () (substitute-key-definition 'c-indent-command 'self-insert-command c-mode-map) (substitute-key-definition 'c-electric-paren 'self-insert-command c-mode-map)))) M-x apropos c-electric will give you a list of all the c-electric- commands. Just use substitute-key-definition in your c-mode-hook and c++-mode-hook lambdas to replace any of them that you don't want with self-insert-command. If you want to keep the automatic indentation performed by the TAB key and ditch only the "electric" stuff, then just leave the substitution for c-indent-command out of your lambdas. --Greg At 11:51 AM -0500 4/15/02, Tony Harbin wrote: >Not quite. C/C++ mode binds open-paren, open-brace, colon, and slash (among > >others) to "electric" functions that, when the key is typed, automatically >change >the spacing and/or indentation on the line. I would like to >disable/override/turn off this behavior. I was able to do this in an older >version where I had to explicitly load the C/C++ mode modules, but in my >current version (20.7.1), the stuff was already compiled in and the same >tricks no longer work. > >Basically, I would just like those keys above to just self-insert and not >run the >"electric" functions. Is there a way to do this? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-15 18:47 ` Greg Hill @ 2002-04-19 17:30 ` Tony Harbin 2002-04-22 17:08 ` Emacs as web server Greg Hill 2002-04-23 2:01 ` automatic indentation in C,C++ modes G Anna 0 siblings, 2 replies; 8+ messages in thread From: Tony Harbin @ 2002-04-19 17:30 UTC (permalink / raw) Cc: Greg Hill, help-gnu-emacs No go. I've inserted these commands into my .emacs file, but still, when I type a "(", the line gets re-indented. Also, when I do a "C-h k (", the key is still described as running c-electric-paren. I had this behavior turned off in an older version on Solaris, but the methods that I used there no longer work. The best solution would be to remap the '(', '{', ':', and '/' keys to simple self-insert-command functions. I have a particular indentation style that is common where I work and I *hate* some software trying to enforce it's own style. Any other suggestions? Thanks in advance. Greg Hill wrote: > Tony, > > It just takes more of the same, e.g.: > > (add-hook 'c-mode-hook > (function (lambda () > (substitute-key-definition > 'c-indent-command 'self-insert-command c-mode-map) > (substitute-key-definition > 'c-electric-paren 'self-insert-command c-mode-map)))) > > M-x apropos > c-electric > > will give you a list of all the c-electric- commands. Just use > substitute-key-definition in your c-mode-hook and c++-mode-hook > lambdas to replace any of them that you don't want with > self-insert-command. If you want to keep the automatic indentation > performed by the TAB key and ditch only the "electric" stuff, then > just leave the substitution for c-indent-command out of your lambdas. > > --Greg > > At 11:51 AM -0500 4/15/02, Tony Harbin wrote: > >Not quite. C/C++ mode binds open-paren, open-brace, colon, and slash (among > > > >others) to "electric" functions that, when the key is typed, automatically > >change > >the spacing and/or indentation on the line. I would like to > >disable/override/turn off this behavior. I was able to do this in an older > >version where I had to explicitly load the C/C++ mode modules, but in my > >current version (20.7.1), the stuff was already compiled in and the same > >tricks no longer work. > > > >Basically, I would just like those keys above to just self-insert and not > >run the > >"electric" functions. Is there a way to do this? > > _______________________________________________ > Help-gnu-emacs mailing list > Help-gnu-emacs@gnu.org > http://mail.gnu.org/mailman/listinfo/help-gnu-emacs ^ permalink raw reply [flat|nested] 8+ messages in thread
* Emacs as web server 2002-04-19 17:30 ` Tony Harbin @ 2002-04-22 17:08 ` Greg Hill 2002-04-23 2:01 ` automatic indentation in C,C++ modes G Anna 1 sibling, 0 replies; 8+ messages in thread From: Greg Hill @ 2002-04-22 17:08 UTC (permalink / raw) If anyone has any experience using Emacs as a web server, I would be delighted to talk with you about it off-forum. I am not having any particular problems. I would just like to compare notes and possibly exchange relevant Lisp code. --Greg ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-19 17:30 ` Tony Harbin 2002-04-22 17:08 ` Emacs as web server Greg Hill @ 2002-04-23 2:01 ` G Anna 2002-04-24 15:53 ` Tony Harbin 1 sibling, 1 reply; 8+ messages in thread From: G Anna @ 2002-04-23 2:01 UTC (permalink / raw) Cc: help-gnu-emacs > Date: Fri, 19 Apr 2002 12:30:46 -0500 > From: Tony Harbin <tharbin@hiwaay.net> > Subj: Re: automatic indentation in C,C++ modes [snip] > self-insert-command functions. I have a particular indentation > style that is common where I work and I *hate* some software trying > to enforce it's own style. My understanding is that GNU Emacs doesn't do anything unless its asked to do so. Below, I am quoting an extract from the Emacs info documentation. Is this of any help? <info> Electric C Characters In C mode and related modes, certain printing characters are "electric"--in addition to inserting themselves, they also reindent the current line and may insert newlines. This feature is controlled by the variable `c-auto-newline'. The "electric" characters are `{', `}', `:', `#', `;', `,', `<', `>', `/', `*', `(', and `)'. Electric characters insert newlines only when the "auto-newline" feature is enabled (indicated by `/a' in the mode line after the mode name). This feature is controlled by the variable `c-auto-newline'. You can turn this feature on or off with the command `C-c C-a': `C-c C-a' Toggle the auto-newline feature (`c-toggle-auto-state'). With a prefix argument, this command turns the auto-newline feature on if the argument is positive, and off if it is negative. </info> HTH anna -- Get your free e-mail account at http://www.linuxmail.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: automatic indentation in C,C++ modes 2002-04-23 2:01 ` automatic indentation in C,C++ modes G Anna @ 2002-04-24 15:53 ` Tony Harbin 0 siblings, 0 replies; 8+ messages in thread From: Tony Harbin @ 2002-04-24 15:53 UTC (permalink / raw) [-- Attachment #1: Type: text/plain, Size: 814 bytes --] Thanks to all who helped with this. I finally found the answer. In my .emacs file, I had 2 lines: (autoload 'c++-mode "cc-mode" "C++ Editing Mode" t) (autoload 'c-mode "cc-mode" "C Editing Mode" t) However, near as I can tell, these did not actually load anything until a file matching the mode criteria was visited. Any lines referencing any variables defined by those modes were not defined in emacs' scope until a file of the mode type was visited. By then it's too late to affect any of the variables. By changing the lines to: (load "cplus-md.elc") (load "c-mode.elc") The variables (especially c-auto-newline...thanks G Anna!) are now defined and can be manipulated; in my case, to turn off the auto-indentation feature: (setq c-auto-newline nil) This gets me what I need, but is it wasteful? [-- Attachment #2: Type: text/html, Size: 1029 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2002-04-24 15:53 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2002-04-12 22:56 automatic indentation in C,C++ modes Tony Harbin 2002-04-13 1:06 ` Greg Hill 2002-04-15 16:51 ` Tony Harbin 2002-04-15 18:47 ` Greg Hill 2002-04-19 17:30 ` Tony Harbin 2002-04-22 17:08 ` Emacs as web server Greg Hill 2002-04-23 2:01 ` automatic indentation in C,C++ modes G Anna 2002-04-24 15:53 ` Tony Harbin
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).