From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Variable-width font indentation Date: Wed, 07 Mar 2018 22:09:54 +0200 Message-ID: <83lgf3przh.fsf@gnu.org> References: <87inaiss6l.fsf@web.de> <6FCF6ACA-4F29-4B6B-BE9D-D7130C6E9495@gnu.org> <87fu5moe4c.fsf@web.de> <877eqyocro.fsf@web.de> <83zi3uz4nb.fsf@gnu.org> <0b1dd3fa-e0b0-ed20-a256-dd92d1c1826f@dancol.org> <8bc3c4c7-dfc7-987a-95e7-bd309e2326c6@cs.ucla.edu> <03118DC0-39DA-4AB5-980E-A33809B9A5EE@raeburn.org> <83vaeas8uz.fsf@gnu.org> <83lgf6s3aa.fsf@gnu.org> <838tb5rxoe.fsf@gnu.org> <83lgf5q73p.fsf@gnu.org> <4742f0ae-86b5-48f9-4601-4dbba9e6380d@gmail.com> <83bmfzreaq.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1520453305 4637 195.159.176.226 (7 Mar 2018 20:08:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 7 Mar 2018 20:08:25 +0000 (UTC) Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Mar 07 21:08:20 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1etfM9-0007cw-Vg for ged-emacs-devel@m.gmane.org; Wed, 07 Mar 2018 21:08:10 +0100 Original-Received: from localhost ([::1]:35413 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etfOC-00043p-Pp for ged-emacs-devel@m.gmane.org; Wed, 07 Mar 2018 15:10:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etfO3-0003zz-Mv for emacs-devel@gnu.org; Wed, 07 Mar 2018 15:10:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1etfO2-0006wH-GK for emacs-devel@gnu.org; Wed, 07 Mar 2018 15:10:07 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:45493) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etfNx-0006uY-Ko; Wed, 07 Mar 2018 15:10:01 -0500 Original-Received: from [176.228.60.248] (port=3021 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1etfNw-0001wa-W3; Wed, 07 Mar 2018 15:10:01 -0500 In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Wed, 7 Mar 2018 13:27:35 -0500) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:223427 Archived-At: > Cc: emacs-devel@gnu.org, eggert@cs.ucla.edu > From: Clément Pit-Claudel > Date: Wed, 7 Mar 2018 13:27:35 -0500 > > > Not AFAIU, no. It is an implementation of a different indentation > > method. I don't see why we should want to go that way, since there's > > nothing wrong with the existing algorithm, except for handling of > > variable-pitch fonts. > > Can you clarify what you call an indentation method? I think that's the source of my confusion. > I wouldn't call what I wrote an indentation method. Maybe I'm not understanding you because of that? I feel that we are somehow bogged down in a miscommunication from which I see no way out... An "indentation method" is a method used to determine the indentation of a line and to insert whitespace in order to achieve that indentation. > >> In your world, concretely, what happens when I open xdisp.c and press M-x variable-pitch-mode? Does everything look misaligned until I M-x indent-region the whole file? > > > > Yes. It isn't different from what happens when you change tab-width. > > But changing tab-width doesn't change the contents of the buffer, whereas what you're advocating for does, right? No, it doesn't. I'm advocating a way of changing the width of whitespace characters on display to account for variable-pitch font, not any change in the buffer. > Maybe I just don't understand what you're advocating for. AFAIU, you're suggesting that we should teach indentation methods about variable-pitch fonts, so that they indent text to a particular pixel offset instead of a particular column. Is that correct? Yes, correct. > If it is correct, then it solves a problem that's different from the one I was thinking in, which is to display existing code with a variable pitch font, without the indentation function. We cannot possibly DTRT with indentation without an indentation function. > * What happens in major modes that don't provide indentation support? The same as what happens today: the default functions are invoked. > * What happens in indentation-sensitive languages (Python, F#, Haskell, etc)? Same as today (the buffer contents will not change from what it is today). > * What happens in comments? Nothing special. > * Do I need to call M-x indent-region every time I switch between variable-pitch and fixed-pitch? Not necessarily, not if the idea of controlling the SPC width is workable. If it is, then the mode will simply set the value of two buffer-local variables, calculating them from the font in use. > * If I close and reopen a file in variable-pitch mode, do I need to re-run M-x indent-region? See above. > * In variable-pitch mode, what gets saved to disk after I run M-x indent-region? Same as what we have now.