From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Christopher Dimech Newsgroups: gmane.emacs.devel Subject: Re: Emacs Survey: Toolbars Date: Wed, 23 Dec 2020 13:36:25 +0100 Message-ID: References: <87o8iv3ac3.fsf@gnus.org> <877dpjp30g.fsf@ucl.ac.uk> <87zh2fnmwq.fsf@gnus.org> <87o8ivumn5.fsf@telefonica.net> <87v9d3nkxk.fsf@gnus.org> <83k0t9rfj5.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38559"; mail-complaints-to="usenet@ciao.gmane.io" Cc: ghe@sdf.org, eliz@gnu.org, Richard Stallman , emacs-devel@gnu.org To: Arthur Miller Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Dec 23 13:37:27 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ks3OQ-0009tm-M8 for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Dec 2020 13:37:26 +0100 Original-Received: from localhost ([::1]:41656 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ks3OP-0000Lv-O3 for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Dec 2020 07:37:25 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ks3NZ-0007sk-JJ for emacs-devel@gnu.org; Wed, 23 Dec 2020 07:36:33 -0500 Original-Received: from mout.gmx.net ([212.227.17.21]:38875) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ks3NW-0007lk-TO; Wed, 23 Dec 2020 07:36:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1608726985; bh=KZqGPZPUSC56W9dIJoLmOh5jTfq1XzoTcxooS4b6EIY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=M9jXuMuJqoEIx5B9pHHy+kmLbuC4DLWKejouEI7W97jgxThpef5NEInAYyJbSXaJt 6dNKpJHnWgDoRgn/p0oxB7073hKgOipbjhJzyRPQkVxfIw8YMUZBkYoAVC15mqyjyR P3d4XzPoLLU4USF345r+nT2Vtj2Xpxq9S8DKbTeU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Original-Received: from [213.165.168.94] ([213.165.168.94]) by web-mail.gmx.net (3c-app-mailcom-bs08.server.lan [172.19.170.176]) (via HTTP); Wed, 23 Dec 2020 13:36:25 +0100 Importance: normal Sensitivity: Normal In-Reply-To: X-UI-Message-Type: mail X-Priority: 3 X-Provags-ID: V03:K1:9h/CROpGan0uFkzhaaD4jz1fx1/bEwkQL1BvN+1wH2vAv+auYeQuxvCh+VlRLPu6+fa6n 1cG0oxGt0ypWjM2yPvjT9LnKZrhtHs4ylgDYGoLKvzSAtU6ALpc7QDsHuXF1NG5X6UJCj+A/aS79 Re5hzE1MAJF2bUZgVNy4QaukDIe5DDLgFErMx7Jo4belInm0XKJjwLCKGqQi8qLgt2NOeBeGh5LH 4Cog/f5k0ekMX5YDK7wA8Bc5xCkzvm8uvd2oVJpaH4RGS37F7jsNMWGotk0zweQx1Fufkd01nLKt nM= X-UI-Out-Filterresults: notjunk:1;V03:K0:7BQk3WK4MDI=:GqpQwukNu3CyGMXuyrXVRI aueuhlTVaJLA8sy9mwKCuV19Ah+C+cbXi7GODAbnrPOqe7w+tjPcD0+O8uqyecr4/AGbsRAxB 78lWlWt3HQfP5Hnqb8KIldLoterJtACpo17zMs7cm+6Y3SvSZDnQgfkTZoeTaLISexlSw9vdt e68bgAR0bVbgIEoGrbVuaxsfUmekqTbvxMx0BpF9PTDhBYJY8sytdd3mMvMa+LggwLSMiNcbK qOn4uNRVnrEExzx3FPo3M/GlUYEBLYXqDCurGxtZMzCoZBOe0X0NUhGpA2f4Xe2Lppx2b5AjE vVNd5hh+cx7jjRBBOsdmfBm7l0d3PfJRsTrQoAFl9gVjyWQA9uHttrUl7KjX9uJTiOuvvzjJr W4C+k7AmLxLC+E18g7fJahKLYA1De/RWLzBpBDCmls+DlywgTEHwPrCT/CvYj5vRUPqxhJMs0 tjkPtNTh/4GJ/ctDYt5tK8YLZj7f0McBaeutZCsYtYsL5QHVA0I2gbZ9n7aM6yTwB3YvBHB5k fzKXXqV/X6L18XasKfDF8TvLs+GQpn+1COtv1MejuhM8l5kmQs+1Pa/FWXAjNX95NBXogS998 i3TCym5I+dVM4= Received-SPF: pass client-ip=212.227.17.21; envelope-from=dimech@gmx.com; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:261591 Archived-At: > Sent: Wednesday, December 23, 2020 at 4:51 PM > From: "Arthur Miller" > To: "Richard Stallman" > Cc: ghe@sdf.org, eliz@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Richard Stallman writes: > > > [[[ To any NSA and FBI agents reading my email: please consider ]]] > > [[[ whether defending the US Constitution against all enemies, ]]] > > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > > > > There is need to tell Emacs: "I wish a buffer of this pixel > > > width and height". > > > > LibreOffice doesn't ask that question, and it lets you start editing > > text and knows what size to use by default for the page. > Somewhere under the hood in it's source code it does. :-) > > I don't think you have understood what I ment there. Maybe I was too > flumsy when writing. > > What I ment is that somewhere in the application code there have to be a > database of papersizes, so that application can draw that representation > of a page on the screen such as they do in Writer for example and how > wide lines will be so it can break lines properly, where user text would > start on those line, on the page, when to break to next page etc. Texinfo does things that way. > One annoyance is also renderer which in Emacs can't draw an "empty > buffer". Libre Office draws a white rectangle and some lines > around. Emacs can't do that since we can't draw things in layers, at > least what I am aware of (Mr. Eli? ). > > Maybe that itself is not that desirable, and could be a "nice ot have " > feature but which can easily be lived without. As a poor man version, > one can just draw lines with unicode chars '|' where say width of page > ends for visual representation and simply insert ^L styled vid svg image > where page ends. > > > One interesting question is how to make text flow between pages. In > > Emacs, a page boundary is a ^L character (formfeed). To make text > > flow between pages would require deleting and inserting ^L characters > > as needed. Is that workable? > I think that would be conceptually trivial, but labourous as now, that > is what I tried to say in mail with demo I sent. I had idea the idea to > do in that demo, but I never got back to work more on it. > > Insertion routine would need to know where pages starts and ends. I > think a page can be modelled just as a range between two points (a > region). There are more details of course; printer margins have to be > taken account, headers, footers, client area and what not. > > But roughly insertion, deletion and other text routines whichever they > are, would need to check if text in a page has reached to certain point > and if it is to insert ^L and reflow the page(s) as needed. > > > > (I remember when ^L made the line printer skip to the next page.) > > > > > For example deleteion would delete > > > a character but insert a filler-character, insertion would insert = a > > > character but delete a filler-character and so on. > > > > I don't follow that. Could you give a concrete example and say > > what these fillers would do, what benefit would result. > > I think they would be a pain in the neck > > for all the editing commands. > Yes, they would be pain, but all editing commands would have to be > changed anyway. There would be some document mode or wysiwyg mode or > whatever which would have to either overwrite or advise insertion, > deletion, etc. > > Those filler spaces was my compensation for how Emacs buffer and rendere= r > works. > > I had an idea to emulate visually a page as in a wyswyg editor. Emacs > can't render an empty buffer of certain size, not what I know. Maybe it > is possible to do something with child frames, or fringes or some other > trick, I don't know. But it was a compensation, I calculated a number of > columns with default font to fill a certain width in pixels. It is a > flawed approach, but it was just an experiment. So I insert just white > space characters which I call "filler space". > > The idea was also to use them conceptually like spacers so I can tell > the insertion routine to really start from column X and not from first > char in line, and to break at column Y and not the last column. > > I see page as consising of header, client and footer areas which are all > just ranges, so it really is just checking some integers; not very > hard. I also see those areas start at some margins (printer margins), > since printers can't print directly from the edge of the paper. > > Also insertion deletion would have to take into account they work in a > page, header etc, so when character is inserted somewhere in a page, one > would have to delete a character at the end of page or rather client > area. But that would all be just a hierarchical delegation when it comes > to implementation. > > Also since we are inserting in a buffer, inserting a char in first page > could potentially move all chars in a 100 pages long book. That is > probably now what we want. We just want to move text on that page. Fille= r > space was ment to be used there as spacer too. Insertion would delete a > space at the end of line or client area to make room for user character > so not entire Emacs buffer is moved around. > > I also wanted to see if I can give them similar property as invisible > text in Emacs has; I wanted to restrict cursor to move into filler > space, but I never got to that part, so I don't know if it is possible. > > It was just an experiment. If I remember, in demo I posted, one can > break page at arbitrary point and insert new ones. But what I noticed is > that it was very slow after few pages were added. Also there are other > problems, for example most important is how to calculate width of > columns to start with? Take a space character and see how many fit into > given pixel width? Or some average size? I took space for the > experiment, but it is not acceptable approach in general. > > Maybe it is more effective to not visually model a page, but to just > render a line where line ends so user can see text has got out of page > width and can reflow things themselves. It could be cheap start at least > and probably not so hard to implement. > >