From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Arthur Miller Newsgroups: gmane.emacs.devel Subject: Re: Emacs Survey: Toolbars Date: Wed, 23 Dec 2020 12:21:12 +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 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30946"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: ghe@sdf.org, eliz@gnu.org, emacs-devel@gnu.org To: Richard Stallman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Dec 23 12:22:15 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 1ks2Df-0007xg-2J for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Dec 2020 12:22:15 +0100 Original-Received: from localhost ([::1]:56574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ks2De-000335-3K for ged-emacs-devel@m.gmane-mx.org; Wed, 23 Dec 2020 06:22:14 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ks2D2-0002cZ-Jm for emacs-devel@gnu.org; Wed, 23 Dec 2020 06:21:36 -0500 Original-Received: from mail-he1eur04olkn080c.outbound.protection.outlook.com ([2a01:111:f400:fe0d::80c]:29444 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ks2Cx-0005fd-O9; Wed, 23 Dec 2020 06:21:36 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VxZOqQ5S1NwY1OdwEV3zAKnTf4abs9Acy0NswbOyDJmF+9fq42fcGfzQJy6g7ZXufsN+EiDe01E38fine9poithXNnVOSDbZds2Dcm4/RId3T+vVor2l79LuTcvqqGUxp+mTMoquK+VvMbUpqo93p1+LWcwvIxWA9YcSMGouz6Vs/OhBsYl5w+L5mFyHBHviasPQm5PHXPW4tfL0olGdzRvdWULm6lZjbMyhsoeyltHFhszvhqOofmZUTWIy6hyfaxkh1GIiaZsKX5I3L4oNx8cjzegV1K9syh84e4Thk8ZrCX3SESZ/kIxUH6kpzFSEWDA4e73REzKX7j9Ova+qWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hl78kx3GYJpHFg1diUJPe0PYlMaMQuP+/w8aBLq0EAk=; b=SKYe6uVWzzof880OAWm19//NWMsdr20PK0u1eUYuNS1zeIzKyZB8q1jIPcbbreJapR7OFtZL65rRySFQqtRrz/8hAUPTOgeyQBsUlWVBWCHEHVIv4XxCuvBsVwWm7hDD0bTJ7F0Y6ZtnJzys9Td9LsLS6TJshc9QEWlS7XFS/L1zGMkJ7e4pblhOZNtKbSrFtLGd6VaOBNYGFfJqT408D3wBPOy1DAwF1PF+W9AqA3LzTzJxUwATtvjHQ7Y10bCrGYgpTYvCYEdb7LolM0HE56xpWKb/i6Zz+11eDNgkzHw8KaSg1yRu1df75m0OILQ+m12T9bZiD0AoNIpm1mQxkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hl78kx3GYJpHFg1diUJPe0PYlMaMQuP+/w8aBLq0EAk=; b=C8ps1KjGmnX53T/zyZWxPDtmdKbC1kJCsSuhgCkEdBVkwPmCT1sbyqzduuGxVwqqzgThfqCUp0D/e8cqGAu2p5MD+bLi9cuIsANoobtqQRDuWA4y2mHUrixKcZ6nWH5xHwAiR+IDwZqcUWXzhycoqtpJKYn08KuqG8t8ywRCCHZ66qq7nM2RX4vrL00CbzTYzN1Vlexp+wA35mhm9c+W/sNXTf0Mw3jgdNbrVQZi74D5z2XUNQ7uKuqBm7havQ34pDBCmEsIUFwLVTvt9j96m50CeiWcaXRIEU7YzcxByyyu3clnlIOUelFs+pJI0j0YHodoYs45rbmrXf3YYG5EsA== Original-Received: from VI1EUR04FT044.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0e::4d) by VI1EUR04HT060.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0e::312) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.22; Wed, 23 Dec 2020 11:21:13 +0000 Original-Received: from AM0PR06MB6577.eurprd06.prod.outlook.com (2a01:111:e400:7e0e::53) by VI1EUR04FT044.mail.protection.outlook.com (2a01:111:e400:7e0e::211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.22 via Frontend Transport; Wed, 23 Dec 2020 11:21:13 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:6D1D3A8FE348D4451326279EF81AF515F1C33402F5E01E2C1D89ADF6DC0E969F; UpperCasedChecksum:9F3817B7D4B468F78FB69F38D3EED0067440712DDAB82A5EC68216E5FB63F3EA; SizeAsReceived:7978; Count:46 Original-Received: from AM0PR06MB6577.eurprd06.prod.outlook.com ([fe80::9487:8c7d:da00:4993]) by AM0PR06MB6577.eurprd06.prod.outlook.com ([fe80::9487:8c7d:da00:4993%8]) with mapi id 15.20.3676.033; Wed, 23 Dec 2020 11:21:13 +0000 In-Reply-To: (Richard Stallman's message of "Tue, 22 Dec 2020 23:21:01 -0500") X-TMN: [xtLvkoCXnfplXIzLgXdsLL/wBGOpLSiV] X-ClientProxiedBy: AM6P194CA0095.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::36) To AM0PR06MB6577.eurprd06.prod.outlook.com (2603:10a6:208:19a::23) X-Microsoft-Original-Message-ID: <877dp8hion.fsf@live.com> X-MS-Exchange-MessageSentRepresentingType: 1 Original-Received: from pascal.homepc (90.230.29.56) by AM6P194CA0095.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Wed, 23 Dec 2020 11:21:13 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 228e21bf-f1e1-461f-2d3c-08d8a734db8a X-MS-TrafficTypeDiagnostic: VI1EUR04HT060: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z0UBQBWF4e3xUl7vyhv41F4J/fr/N/cotROqraSRGQHsb0g00e1DW4M97dLC+wwvevwrYw0jE++zGdAz4Zzp4kWvu/JougxnpmnXmrVAjNCXeNPyvNhXJ0R1ZuAG9SIieZIdRR1D9jZSfDBTPWma5dTHa5+t+ACWk8h7sNrMGmkWoPKOtdTNiL55ADTq49V2EMj73S3YSDgwV0/Mc70wvphoSr6NeVnyuLtkLL6D9ZusLD0/Lj2LlgjziCybFGrX X-MS-Exchange-AntiSpam-MessageData: 3E8trb3luUltIgtnPb2wlkkZR5kWCnsRQDsCJHrIe+QOMe//Bc4AitNyIqihFyXIoHvHuZmdwkpKDQq6yh94DRsQT/Bo1J72FzNvKfRvRSBmrOir3UcpzTYefeCEwsByNQ10zzRTTnR6P0F78uj89w== X-OriginatorOrg: live.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2020 11:21:13.5353 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-Network-Message-Id: 228e21bf-f1e1-461f-2d3c-08d8a734db8a X-MS-Exchange-CrossTenant-AuthSource: VI1EUR04FT044.eop-eur04.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1EUR04HT060 Received-SPF: pass client-ip=2a01:111:f400:fe0d::80c; envelope-from=arthur.miller@live.com; helo=EUR04-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, MSGID_FROM_MTA_HEADER=0.001, SPF_HELO_PASS=-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:261585 Archived-At: 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. 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 renderer 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. Filler 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.