From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 8PwyNYLRo2AhOwAAgWs5BA (envelope-from ) for ; Tue, 18 May 2021 16:38:58 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id ro3VMILRo2AZVwAAbx9fmQ (envelope-from ) for ; Tue, 18 May 2021 14:38:58 +0000 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 2AED918A72 for ; Tue, 18 May 2021 16:38:58 +0200 (CEST) Received: from localhost ([::1]:39158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj0s5-000752-5O for larch@yhetil.org; Tue, 18 May 2021 10:38:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj0pk-0005sG-FZ for emacs-orgmode@gnu.org; Tue, 18 May 2021 10:36:32 -0400 Received: from mout02.posteo.de ([185.67.36.66]:49067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj0pg-0006Va-SY for emacs-orgmode@gnu.org; Tue, 18 May 2021 10:36:32 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 1BF662400FF for ; Tue, 18 May 2021 16:36:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.eu; s=2017; t=1621348586; bh=dXxxbjcXwsk2BmHcBwGrj1D53Y7KoqUI6AUelj4eBTk=; h=Subject:To:Cc:From:Date:From; b=YQQue6wZk1iGVNaibu2i42XcmcMR5s6GhRF4h0AQIoyXdJO4TvnFeEy1EVAVsS8NC PcSDA7bmD6pZlcmdriRHj7unuBSCTeRuCkgv9lPAVKZL6iXudJoKLXvFUPSBXnoN4U 1DP6urN6OQuNrp9umXu9RrJfvjRj0Riz3CuchP3PfJUvGqb+w4yAOqz60+v2Z9gYbq onFsG0drhZefK4+7eMWGcJV3hLVH9wIj6SZd0wjMvBKi+5zwunr6HAjisqJlz2DOzq 4Z4IQ58aHq/W0ZX2/dDGKUJHwLkppuspgPGGP0U1BodH/CSlSmi+FZOzfqpfCvUzDV JayJYXr4ziGXA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Fkz8T3JwWz6tmR; Tue, 18 May 2021 16:36:25 +0200 (CEST) Subject: Re: [PATCH] Fontification for inline src blocks To: Timothy References: <87pmzf4bd0.fsf@gmail.com> <87pmye51a3.fsf@gmail.com> <87zgxcgaba.fsf@gmail.com> <878s4wtrzx.fsf@gmail.com> <87k0o419uh.fsf@gmail.com> <87o8dgdo7l.fsf@localhost> <87fsys102j.fsf@gmail.com> <87im3odk35.fsf@localhost> <87cztv29ff.fsf@gmail.com> <87eee49ndx.fsf@gmail.com> From: =?UTF-8?Q?S=c3=a9bastien_Miquel?= Message-ID: <033165b3-253b-ca51-98c4-ddd2b9890fa3@posteo.eu> Date: Tue, 18 May 2021 14:36:25 +0000 MIME-Version: 1.0 In-Reply-To: <87eee49ndx.fsf@gmail.com> Content-Type: multipart/alternative; boundary="------------33CEA0F93E926B6CB52BAEA8" Content-Language: fr Received-SPF: pass client-ip=185.67.36.66; envelope-from=sebastien.miquel@posteo.eu; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sebastien.miquel@posteo.eu Cc: org-mode-email Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1621348738; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=fwdNO7GwlgTrPUiYovW21FzkzYute6v+GkN0P1OPU/o=; b=K3Ds53IKlGR6kQlkM562anMtPO/YgR+wL1AKJEuvnHoL+0MA9J1ksxgGzaNd30K5aXulBr 3cLrplHKHrYuUEcjJ0Jspogkwunab3YbxdeV49wQJ14VhPDWXMW4tzYVd21qn1sDR1vQfp 2EihgAYkZzFhh1qq1rNFTcei2ue7tRRil7E04Ijz8LD1f6/SAS3xLiOgaqa5CXG4A837Z9 m67+cfkcKEznldTJCSFgROteAxP5e1r/E1ILHQM/8ICXaQaDf3Vw+8DXlLUQZSCQPBb2zC D9e9TM3gWUMVMimq89Gw8phoGHhRwCZIX0FzA7VrkJYBTvtvWEfJnNilK/4bhg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1621348738; a=rsa-sha256; cv=none; b=aL9r8rcgaPqReo4P0iYv4Bhlc4mEvcOQMZwi/4bFhd4EpKqvaKk3IwUjCZDrDLhBgz5/Og oozbxcJs4pUy/EBmfrt0ytjB1MxSLZhwId3hmbBMjkCwEPQSYUQyoI9DKte4rPXOJm1+dh UO6dcDZmEF3hkqsGVvi07gXOxnE8lKf/dK+YFf/ruHIq3zJbKP60xPjyC8wT2lL4OlKqWO RCBRKV+IJl0gsA+Yv7fFl/OeeY/t7Vlce05JE8FkcJ7EGJ+Y0gxVhaOpNJoThI+RvDYbXa sliX5lo03ZG/fye1au3zbUurGg/JXXEeJqWKE8YET6AFJaqahQqxSkKvSaMzCw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.eu header.s=2017 header.b=YQQue6wZ; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: -3.14 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.eu header.s=2017 header.b=YQQue6wZ; dmarc=pass (policy=none) header.from=posteo.eu; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: 2AED918A72 X-Spam-Score: -3.14 X-Migadu-Scanner: scn0.migadu.com X-TUID: pXb8g3TQ1Pwb This is a multi-part message in MIME format. --------------33CEA0F93E926B6CB52BAEA8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Timothy writes: > In src blocks, you have the org-block-begin-line face applied. This (in > any sensible theme) has the same background as org-block. I might be confused by my own config, but that doesn't seem to be the case. Unless customized, the =org-block-begin-line= inherits from org-meta-line, and the org-block documentation does specify that it applies *inside* blocks. I personaly dislike any inline change of background color. It makes some sense for the python code, since it isn't org anymore (indeed, the fontification is done in another buffer), but the src_lang, and the result part are just org syntax. Here's an example of a reasonable -- I hope -- use of those faces. >> The ~org-src-font-lock-fontify-block~ function could be modified to >> take an optional =inline= argument. When =t=, it should not set the >> =multiline= font property. Although this is very minor, it would allow >> one to easily advice this function to behave differently in inline src >> blocks. For example, to not use the =org-block= face in this case. > I don't see where the multiline property is currently set, would you mind > pointing it out to me? Right at the end of ~org-src-font-lock-fontify-block~. The property is =font-lock-multiline=. > I'm going to be using the original symbols in my configuration anyway > because I think they're nicer, but clearly this is contentious. I'd want > to hear from more people on this. If results prettification were disabled by default, There would be much less contention. >> Since ~prettify-symbols~ seems to be raising some usability concerns, >> perhaps ~org-inline-src-prettify-results~ should default to ~nil~. >> It'd be unlike org to hide things from the user in the default >> configuration. > This seems somewhat sensible to me, but I must say that {{{results()}}} > is /ugly/ and I suspect that many users would like the effect, but a > minority will be aware of this option. Perhaps this is worth doing > anyway. I agree. But org-mode is ugly by default, so that is consistent. > So are you suggesting I do or don't create new faces for this? You should create new faces yes. I do not know whether one or two faces is best. Regards, -- Sébastien Miquel --------------33CEA0F93E926B6CB52BAEA8 Content-Type: multipart/related; boundary="------------AFDA86935C3CF8E9E103645D" --------------AFDA86935C3CF8E9E103645D Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit
Timothy writes:

In src blocks, you have the org-block-begin-line face applied. This (in
any sensible theme) has the same background as org-block.

I might be confused by my own config, but that doesn't seem to be the
case. Unless customized, the =org-block-begin-line= inherits from
org-meta-line, and the org-block documentation does specify that it
applies *inside* blocks.

I personaly dislike any inline change of background color. It makes
some sense for the python code, since it isn't org anymore (indeed,
the fontification is done in another buffer), but the src_lang, and
the result part are just org syntax.

Here's an example of a reasonable -- I hope -- use of those faces.




The ~org-src-font-lock-fontify-block~ function could be modified to
take an optional =inline= argument. When =t=, it should not set the
=multiline= font property. Although this is very minor, it would allow
one to easily advice this function to behave differently in inline src
blocks. For example, to not use the =org-block= face in this case.
I don't see where the multiline property is currently set, would you mind
pointing it out to me?

Right at the end of ~org-src-font-lock-fontify-block~. The property
is =font-lock-multiline=.

I'm going to be using the original symbols in my configuration anyway
because I think they're nicer, but clearly this is contentious. I'd want
to hear from more people on this.
If results prettification were disabled by default, There would be much
less contention.

Since ~prettify-symbols~ seems to be raising some usability concerns,
perhaps ~org-inline-src-prettify-results~ should default to ~nil~.
It'd be unlike org to hide things from the user in the default
configuration.
This seems somewhat sensible to me, but I must say that {{{results()}}}
is /ugly/ and I suspect that many users would like the effect, but a
minority will be aware of this option. Perhaps this is worth doing
anyway.
I agree. But org-mode is ugly by default, so that is consistent.

So are you suggesting I do or don't create new faces for this?
You should create new faces yes. I do not know whether one or two faces is
best.

Regards,
-- 
Sébastien Miquel
--------------AFDA86935C3CF8E9E103645D Content-Type: image/png; name="src-block-faces.png" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="src-block-faces.png" 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 zJGXtFCS8OAAAAAASUVORK5CYII= --------------AFDA86935C3CF8E9E103645D-- --------------33CEA0F93E926B6CB52BAEA8--