From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: use.address@my.homepage.invalid (Chris Gordon-Smith) Newsgroups: gmane.emacs.help Subject: Re: Tabs and Spaces Date: 25 May 2009 14:58:21 GMT Organization: SimSoup Message-ID: <77vq0cF1jh3k6U1@mid.individual.net> References: <77vbbiF1jhhubU1@mid.individual.net> <7chbz9bdyu.fsf@pbourguignon.informatimago.com> <77vgiiF1jjcfrU1@mid.individual.net> <7czld19ttv.fsf@pbourguignon.anevia.com> NNTP-Posting-Host: lo.gmane.org X-Trace: ger.gmane.org 1243346613 23679 80.91.229.12 (26 May 2009 14:03:33 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 26 May 2009 14:03:33 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue May 26 16:03:26 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1M8xFV-0007Qm-Om for geh-help-gnu-emacs@m.gmane.org; Tue, 26 May 2009 16:03:26 +0200 Original-Received: from localhost ([127.0.0.1]:48890 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M8xFV-0007pD-8M for geh-help-gnu-emacs@m.gmane.org; Tue, 26 May 2009 10:03:25 -0400 Original-Path: news.stanford.edu!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 92 Original-X-Trace: individual.net o+hylKLUw3AslP7FVjfhagLVm7u7EiGzwZK4QQiEWg48wqBuNa X-Orig-Path: not-for-mail Cancel-Lock: sha1:IJ63+WaQCHcKlFucbzFK+Tj26xc= User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.26-2-686 (i686)) Original-Xref: news.stanford.edu gnu.emacs.help:169462 X-Mailman-Approved-At: Tue, 26 May 2009 10:02:21 -0400 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:64727 Archived-At: Pascal J. Bourguignon wrote: > use.address@my.homepage.invalid (Chris Gordon-Smith) writes: > >> Pascal J. Bourguignon wrote: >>> use.address@my.homepage.invalid (Chris Gordon-Smith) writes: >>> >>>> Hello All >>>> >>>> I have recenly started using emacs for programming, after years using >>>> KDevelop. One problem I have is indenting code. I have my own indentation >>>> style. and ideally I would like to setup emacs to support it automatically. >>>> However, in the short term I'll settle for having emacs convert a TAB >>>> keypress into the correct number of spaces to fill whitespace up to the >>>> next tabstop. >>>> >>>> At the moment I have >>>> >>>> (global-set-key (kbd "TAB") 'self-insert-command) >>>> >>>> in my .emacs to force insertion of a tab, but I have to keep invoking >>>> untabify manually (otherwise my code looks misaligned when I upload it to >>>> Google Code). >>>> >>>> Can anyone help. >>> >>> You shouldn't insert TAB, this is very bad. At the very least, you >>> may compute the number of spaces you need to insert and insert them >>> rather. >> Yes, that's what I would like to do. Can you suggest how to do this. Do I >> need to put something in my .emacs file. What would it look like? >> >>> >>> But depending on the language you use, a different mode will be used >>> to edit your source and each mode may provide its own indenting rules. >>> >>> In the case of Lisp, you may add a indent-function property to the >>> plist of the operator name. >>> >>> In the case of C, you may customize the variable: c-offsets-alist. See >>> also: c-style-alist ; perhaps there's already a style defined that >>> you'll like. > > > In my post, there was a subliminal question, but it didn't reach your > consciousness, I'm sorry. Here it is: It wasn't really a question, and the fact that you had mentioned that the solution to the problem might be language dependent did register with me. I think its a pity that you chose to answer in what appears to be a rather rude manner. > > What programming language do you use? C++. But I had already established before my original post that the standard emacs indenting would not suit me. Perhaps I should have mentioned this. > > Depending on the answer you give, you may well have nothing to program. > Otherwise, you could do something like this: > > (defconst +space+ 32 "ASCII code for the space character") > > (defun my-language/indent-line () > (interactive) > (let ((where (let ((m (make-marker))) (set-marker m (point)) m)) > (indent (my-language/get-indent-from-some-parsing-around (point)))) > (beginning-of-line) > (looking-at "^[ \t]*") > (delete-region (beginning-of-line) (match-end)) > (goto-char (beginning-of-line)) > (insert (make-string indent +space+)) > (goto-char where) > (set-marker where nil))) > > > (local-set-key (kbd "TAB") 'my-language/indent-line) > > > Of course, all the difficulty (or simplicity, depends on your language) > is in implementing my-language/get-indent-from-some-parsing-around. > > Thanks for this. I'll need to read it and understand it before I use it, but it looks like a good starting point. Chris Gordon-Smith www.simsoup.info