From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 0L7qCERhmWMwawEAbAwnHQ (envelope-from ) for ; Wed, 14 Dec 2022 06:38:12 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id +OUZCERhmWMOlAAAG6o9tA (envelope-from ) for ; Wed, 14 Dec 2022 06:38:12 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id ACCE119A81 for ; Wed, 14 Dec 2022 06:38:11 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5KSK-0005Hp-6n; Wed, 14 Dec 2022 00:37:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5KSI-0005HZ-Ox for emacs-orgmode@gnu.org; Wed, 14 Dec 2022 00:37:22 -0500 Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p5KSG-0005wv-Nz for emacs-orgmode@gnu.org; Wed, 14 Dec 2022 00:37:22 -0500 Received: by mail-ot1-x331.google.com with SMTP id db10-20020a0568306b0a00b0066d43e80118so1180053otb.1 for ; Tue, 13 Dec 2022 21:37:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:from:to:cc:subject:date:message-id:reply-to; bh=4y7ymGOKTKLmuWV31RmPSGiSCN3yGbfUCZJvMNaa3vk=; b=eEC3LZYUnPaR45BewlgoVr1+ZfPiegBFA6+QsW/SvDymiJFHVNgGPDXzgFt2YSOlvx /06AAEDUg/9bVB9BpsUIq+TXFWYvPQu+Wrh4YmUSeylVZCsC39r4brMJZ7Q6sgsP41bg xhlTczeR0/J1plqoXE/cqqIahDQBqZqllEWzulOwxdsE2CjAPEPr+aBAO2Lh4chIy3T6 VgElouCQtdEtKJlbTjB3CKJTF24MKgF4tccyrysdr4jchUiO/i1bjnlLNKiTXanWpcr+ X5gYICWsLdgKltczZ1M5MO9O72Wn8h9gHXpRCjHeWfSMsRLnjN7iezLpykEXmnxyax4p uabQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4y7ymGOKTKLmuWV31RmPSGiSCN3yGbfUCZJvMNaa3vk=; b=goTjVTTBgx/lNmk/Wb9uVGV+Op8/PPRI5xuvx/DA4ZLApJM4JID/U0BI9zWVJFBySy X6GffywyB11Br6nyqmlJlPM/Oc763UZXEmeXsLIg2YR//OS1bseqw1pPbzL58FoElSOJ fMBUQOTn89ubo+35nQegDPutgIPD2d3VqVDxWf3kLqm5LkUv04NHH3WC0WiBDJOEhFbe CCDqUmRz4CBvsC1LHD6bwa+SGifaX+jrDe+qRFC0EWEELMF5rcBZbeiXOWbvFsN3OX1B o5agvUDSUf1ki5LEMLBCkiSP8pMOftxsRDN+ZPMO3Fnw6C6JzqpL2DIhzqJwir39jt5P trmw== X-Gm-Message-State: ANoB5pnGn9gHWxeFJS5NhH/czl1q02Cvfb2vi6TYnpp3jsaopg9CyamD 3uksi+qIYAUXWb9Q/v0t1nO0y7nJNWnAUQ== X-Google-Smtp-Source: AA0mqf7S9gBeHTqgpbIMEBtGEa59X3QdibLGjNwRGiIY/DAtrEAjclDIr8Sd7WSu1XDDld4uIg/7HA== X-Received: by 2002:a05:6830:1b62:b0:66e:ace5:de2a with SMTP id d2-20020a0568301b6200b0066eace5de2amr10695879ote.19.1670996238561; Tue, 13 Dec 2022 21:37:18 -0800 (PST) Received: from smtpclient.apple ([2804:14c:101:8547:249f:91a:974a:9d39]) by smtp.gmail.com with ESMTPSA id r9-20020a05683001c900b0066e67925addsm2041505ota.26.2022.12.13.21.37.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Dec 2022 21:37:17 -0800 (PST) From: Sterling Hooten Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Completely hide properties drawer in 9.6 Message-Id: <4CC6A1F4-0B08-44E0-AE4D-60CA11636663@gmail.com> Date: Wed, 14 Dec 2022 02:37:14 -0300 To: emacs-orgmode@gnu.org X-Mailer: Apple Mail (2.3696.120.41.1.1) Received-SPF: pass client-ip=2607:f8b0:4864:20::331; envelope-from=hooten@gmail.com; helo=mail-ot1-x331.google.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1670996291; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=4y7ymGOKTKLmuWV31RmPSGiSCN3yGbfUCZJvMNaa3vk=; b=mBDnZFYmmQtjob+94aIYpgYk+UflT8z4Go/jRmnvAiiGSl3fbOEhFus1/90j4fysi2JWFq pOV2Bj+7+agxCK94YilHyYHW1fOYMDO56hlMYHGaMYhWR1HJIx0Vg8jICb0FyLtW6PQsZv VrNPggI1/NJ8cfaKpQjKgLA8OXp6vUOWjkCLOZEdZtgucm/Hc0wKLImu/qGbZbcafmRdFp VsEWyr3MGj3VLDB5j/E2aaRZOMciYgLI6d5coJypf2isJcOd8QmFWcrFcp/u4T/m56VfFv +jcunMKO43k5PjqlbncLGJqspZaK2AZRfQd3F3WwGUdV6pTMgMX4AtzKrRV3kA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eEC3LZYU; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1670996291; a=rsa-sha256; cv=none; b=DhzqJqN0GkPoMvf9gaSl8wy9Oo2T64t+pcp7hoPV5/ecnYrHsvlvwgZCLaEWBhUYLp69qv JMKqcyhvqzUEmoqXrze4fzjyvCZVp2bWhWpYZYxIUwnFGrXIKH+VPqwL2pSyzuj9JZeKk/ IniQ2UOtBnTpgPykaqFAQ8AYxdcKocWiH7SZdUOWz9vISi4yPEcodLajsqdXeS/IX3vyzs 2liDUSvjoC2SemHaxmojaUPBcDLwr6ragE7tnFEFWIL66+ROzA/YQVcIW9oyxo385mN5v9 8trFQFDD4fxvylLRNEpxavUX1ZUkxnZK/jvmN1GFx4ZJ1gxcIEOnhyANGpI+zg== X-Migadu-Spam-Score: -7.44 X-Spam-Score: -7.44 X-Migadu-Queue-Id: ACCE119A81 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eEC3LZYU; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com X-TUID: r1ibTu2QBpYQ First of all, thanks to everyone for working on 9.6! I'm trying to clone Lotus notes in Org mode. This requires certain properties to be generated for every heading (e.g., ID, creation time, modification time, etc.). But these are mainly used for searching and sorting, and rarely of interest to me during editing. For this reason I would like to /completely/ hide the properties box (not just the individual properties). This has been discussed multiple times before in this list. The general sentiment has been to reject adding it to Org as hiding things ompletely from the user might be confusing, but it's also been brought up enough times independently to demonstrate a latent demand for this behavior, and a working example would be very useful for those of us who wish to have a cleaner interface and editing experience. Alternative suggestions have been to change the face to make the properties box appear smaller, but this interferes with movement from the heading to the body, and the ability to toggle the visibility of a property box would make this is redundant. In Ihor suggested adding `org-custom-properties-hide-emptied-drawers', this was rejected, but is pretty close to the desired behavior, except it's still global. I was unable to get this working in release 9.6. Prior to 9.6 I overwrote org-cycle-heading to hide the properties box using overlays. This worked alright but had slowdowns on larger files and affected typing cadence noticeably. Org 9.6 is now relying on text properties instead of overlays, and I would like help replicating (and improving) that behavior. Part of the complication comes from updating modified timestamps in the properties of each heading. This drives the need for hiding to be fast so as not to bog down the editing experience when triggered by `after-change-functions'. The constant updating of a modification timestamp system puts some constraints on the property hiding system. =46rom working in 9.5 I believe the relevant requirements are: =E2=80=A2 Ability to add or modify properties with `org-entry-put' and maintain the state of being hidden or visible =E2=80=A2 E.g., Updating the ":MODIFIED:" property to a hidden = property drawer should keep the drawer hidden. =E2=80=A2 Toggle on and off hiding globally (perhaps in a minor mode) =E2=80=A2 Moving headings around with `org-metaup' etc preserves the visibility state =E2=80=A2 A hidden property drawer should stay hidden when the outline = is rearranged =E2=80=A2 Resistant to changes with undo etc =E2=80=A2 Undoing a change should cause the contet to revert to the = same visibility state it had at time of change. =E2=80=A2 Don't overwrite when editing normally =E2=80=A2 With the point at the end of a heading and immediately = before an ellipsis, typing "j" should result in the character being inserted with the face of the heading, and not overwrite or otherwise disturb the invisible text. `org-fold-catch-invisible-edits' might be relevant here. =E2=80=A2 Reveal or hide just the property drawer of the heading at = point and not the whole buffer =E2=80=A2 This is partially for speed reasons (to handle modified = timestamp updates), but also because revealing all property drawers is extremely annoying when the surrounding headings in the buffer have headings with >10 properties. =E2=80=A2 Fast enough to use with `after-change-functions' =E2=80=A2 The modification timestamp setup I'm using is triggered by = buffer changes, and thus when typing runs after every keystroke. To keep this smooth and not be a bottleneck it would need `(benchmark 100 'org-hide-properties)' to be less than .1s on an Org file with >20,000 lines and >1,000 headings. =E2=80=A2 Ability to reveal just a subset of property lines =E2=80=A2 e.g., `org-bibtex' creates many properties to store = bibliographic data. It would be useful to have enough control over hiding of properties such that if only ":BIB_FIELD:" properties of. =E2=80=A2 Hide ellipsis unless body text is present =E2=80=A2 If all the headings have properties then the default folding behavior will place ellipses at the end of each heading, thus destroying the informational value of the ellipsis as an indication of folded but displayable content. It would be useful if instead the ellipsis would only be present when there's body text. Any help would be greatly appreciated as things have changed in 9.6 and I'm not sure where the opportunities are to leverage the improvements (e.g., are text properties now the way? Or should I still implement it with faces?). Thanks!