From unknown Fri Aug 15 18:49:53 2025 X-Loop: help-debbugs@gnu.org Subject: bug#45917: [PATCH] Use big brackets in Calc in big mode Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 16 Jan 2021 17:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 45917 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 45917@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.1610817046985 (code B ref -1); Sat, 16 Jan 2021 17:11:01 +0000 Received: (at submit) by debbugs.gnu.org; 16 Jan 2021 17:10:46 +0000 Received: from localhost ([127.0.0.1]:43905 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l0p65-0000Fp-US for submit@debbugs.gnu.org; Sat, 16 Jan 2021 12:10:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:45950) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l0p64-0000Fh-2G for submit@debbugs.gnu.org; Sat, 16 Jan 2021 12:10:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l0p63-0003lO-9n for bug-gnu-emacs@gnu.org; Sat, 16 Jan 2021 12:10:43 -0500 Received: from mail1467c50.megamailservers.eu ([91.136.14.67]:55384 helo=mail268c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l0p5y-0001tl-JT for bug-gnu-emacs@gnu.org; Sat, 16 Jan 2021 12:10:43 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1610817034; bh=CJl1kz0EXjVw0W0rtyIBHlUWYynXzv5d6oTtOVD+RUM=; h=From:Subject:Date:To:From; b=Waz6ZRHk4t9bdHfIHN6vPDcEmw1v77wMfPGm1fMMO6c2/bZIS6hua2H/V4Q3sJAZ6 aPZfmRC2mfNOCp5IEuMKVZWfk5u7IM3L/q1RI7XdbNswV9afFN+lcdacdyDMcZq0ir zoHMIPSqO2DV8TqCxYm1nA3V1YQHGQ0lk25xIsik= Feedback-ID: mattiase@acm.or Received: from stanniol.lan (c-b952e353.032-75-73746f71.bbcust.telenor.se [83.227.82.185]) (authenticated bits=0) by mail268c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 10GHAWJZ001983 for ; Sat, 16 Jan 2021 17:10:33 +0000 From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Content-Type: multipart/mixed; boundary="Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\)) Message-Id: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> Date: Sat, 16 Jan 2021 18:10:31 +0100 X-Mailer: Apple Mail (2.3445.104.17) X-CTCH-RefID: str=0001.0A742F17.60031E0A.0012, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=J+PUEzvS c=1 sm=1 tr=0 a=von4qPfY+hyqc0zmWf0tYQ==:117 a=von4qPfY+hyqc0zmWf0tYQ==:17 a=M51BFTxLslgA:10 a=hz4ZEoUbM58TYr4sGwoA:9 a=CjuIK1q_8ugA:10 a=FxUsVjK5u7_X8EQ_saYA:9 a=B2y7HmGcmWMA:10 a=tclcd6dtLQvEqt9_mmAA:9 X-Origin-Country: SE Received-SPF: softfail client-ip=91.136.14.67; envelope-from=mattiase@acm.org; helo=mail268c50.megamailservers.eu X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The attached patch makes Calc use big brackets in Big mode when the = Unicode characters are available. This makes for prettier display which = is sort of the point of using Big mode. It follows previous use of = Unicode characters for square root and integral signs. The code supports big versions of round, square and curly brackets. Big = square brackets are currently only used for intervals and curly ones not = at all (maybe they could be put to use for Stirling numbers of the = second kind). Matrices do not use big brackets but they probably should since it is = standard mathematical notation. As far as I can tell the only reasons for not applying this would be = that it is common with fonts or terminals where this doesn't look good, = or that the resulting formula isn't recognised by the embedded-mode = parser (which is already the case with several other constructs). --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Disposition: attachment; filename=0001-Calc-use-big-Unicode-brackets-in-Big-mode-when-avail.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Calc-use-big-Unicode-brackets-in-Big-mode-when-avail.patch" Content-Transfer-Encoding: quoted-printable =46rom=2001a065dfb6047e0c0db7a89f6113723a1763bd2b=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Sat,=2016=20Jan=202021=2017:30:57=20+0100=0A= Subject:=20[PATCH]=20Calc:=20use=20big=20Unicode=20brackets=20in=20Big=20= mode=20when=20available=0A=0A*=20lisp/calc/calccomp.el=20= (math--big-bracket-alist)=0A(math--big-bracket,=20math--comp-bracket,=20= math--comp-round-bracket):=0ANew.=0A(math-compose-expr,=20= math-compose-log,=20math-compose-log10)=0A(math-compose-choose,=20= math-compose-integ,=20math-compose-sum)=0A(math-compose-prod):=20Use=20= big=20brackets=20when=20available.=0A---=0A=20lisp/calc/calccomp.el=20|=20= 247=20+++++++++++++++++++++++++++---------------=0A=201=20file=20= changed,=20162=20insertions(+),=2085=20deletions(-)=0A=0Adiff=20--git=20= a/lisp/calc/calccomp.el=20b/lisp/calc/calccomp.el=0Aindex=20= 07e70cad0a..5f38ee71c7=20100644=0A---=20a/lisp/calc/calccomp.el=0A+++=20= b/lisp/calc/calccomp.el=0A@@=20-138,19=20+138,19=20@@=20= math-compose-expr=0A=20=09=09=09=09=20=20=20=20=20=20(math-format-number=20= (nth=202=20aa))))))=0A=20=09=09=20=20(if=20(=3D=20calc-number-radix=20= 10)=0A=20=09=09=20=20=20=20=20=20c=0A-=09=09=20=20=20=20(list=20'horiz=20= "("=20c=0A-=09=09=09=20=20(list=20'subscr=20")"=0A-=09=09=09=09= (int-to-string=20calc-number-radix)))))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(list=20'subscr=20= (math--comp-round-bracket=20c)=0A+=09=09=09=20=20(int-to-string=20= calc-number-radix))))=0A=20=09=20=20=20=20=20=20(math-format-number=20= a)))=0A=20=09(if=20(not=20(eq=20calc-language=20'big))=0A=20=09=20=20=20=20= (math-format-number=20a=20prec)=0A=20=09=20=20(if=20(memq=20(car-safe=20= a)=20'(cplx=20polar))=0A=20=09=20=20=20=20=20=20(if=20(math-zerop=20(nth=20= 2=20a))=0A=20=09=09=20=20(math-compose-expr=20(nth=201=20a)=20prec)=0A-=09= =09(list=20'horiz=20"("=0A-=09=09=20=20=20=20=20=20(math-compose-expr=20= (nth=201=20a)=200)=0A-=09=09=20=20=20=20=20=20(if=20(eq=20(car=20a)=20= 'cplx)=20",=20"=20";=20")=0A-=09=09=20=20=20=20=20=20(math-compose-expr=20= (nth=202=20a)=200)=20")"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=0A+=09=09=20(list=20'horiz=0A+=09=09=20=20=20= =20=20=20=20(math-compose-expr=20(nth=201=20a)=200)=0A+=09=09=20=20=20=20= =20=20=20(if=20(eq=20(car=20a)=20'cplx)=20",=20"=20";=20")=0A+=09=09=20=20= =20=20=20=20=20(math-compose-expr=20(nth=202=20a)=200))))=0A=20=09=20=20=20= =20(if=20(or=20(=3D=20calc-number-radix=2010)=0A=20=09=09=20=20=20=20= (not=20(Math-realp=20a))=0A=20=09=09=20=20=20=20(and=20calc-group-digits=0A= @@=20-340,12=20+340,13=20@@=20math-compose-expr=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(funcall=20spfn=20a=20prec)=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20(math-compose-var=20a)))))=0A=20=20=20=20=20=20((eq=20= (car=20a)=20'intv)=0A-=20=20=20=20=20=20(list=20'horiz=0A-=20=20=20=20=20= =20=20=20=20=20=20=20(if=20(memq=20(nth=201=20a)=20'(0=201))=20"("=20= "[")=0A-=09=20=20=20=20(math-compose-expr=20(nth=202=20a)=200)=0A-=20=20=20= =20=20=20=20=20=20=20=20=20"=20..=20"=0A-=09=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200)=0A-=20=20=20=20=20=20=20=20=20=20= =20=20(if=20(memq=20(nth=201=20a)=20'(0=202))=20")"=20"]")))=0A+=20=20=20= =20=20=20(math--comp-bracket=0A+=20=20=20=20=20=20=20(if=20(memq=20(nth=20= 1=20a)=20'(0=201))=20?\(=20?\[)=0A+=20=20=20=20=20=20=20(if=20(memq=20= (nth=201=20a)=20'(0=202))=20?\)=20?\])=0A+=20=20=20=20=20=20=20(list=20= 'horiz=0A+=09=20=20=20=20=20(math-compose-expr=20(nth=202=20a)=200)=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20"=20..=20"=0A+=09=20=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200))))=0A=20=20=20=20=20=20((eq=20= (car=20a)=20'date)=0A=20=20=20=20=20=20=20(if=20(eq=20(car=20= calc-date-format)=20'X)=0A=20=09=20=20(math-format-date=20a)=0A@@=20= -377,7=20+378,7=20@@=20math-compose-expr=0A=20=09=09=20=20=20=20(and=20= (eq=20(car-safe=20(nth=201=20a))=20'cplx)=0A=20=09=09=09=20(math-negp=20= (nth=201=20(nth=201=20a)))=0A=20=09=09=09=20(eq=20(nth=202=20(nth=201=20= a))=200)))=0A-=09=09(list=20'horiz=20"("=20(math-compose-expr=20(nth=201=20= a)=200)=20")")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=200))=0A=20= =09=20=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=20201))=0A=20=09=20= =20=20=20(let=20((calc-language=20'flat)=0A=20=09=09=20=20= (calc-number-radix=2010)=0A@@=20-444,7=20+445,7=20@@=20math-compose-expr=0A= =20=09(if=20(>=20prec=20(nth=202=20a))=0A=20=20=20=20=20=20=20=20=20=20=20= =20=20(if=20(setq=20spfn=20(get=20calc-language=20'math-big-parens))=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20(car=20= spfn)=20c=20(cdr=20spfn))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20'horiz=20"("=20c=20")"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=20c))=0A=20=09=20=20c)))=0A=20=20=20=20=20=20= ((and=20(eq=20(car=20a)=20'calcFunc-choriz)=0A=20=09=20=20=20(not=20(eq=20= calc-language=20'unform))=0A@@=20-612,7=20+613,7=20@@=20= math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20(=20"=0A= =20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20"=20= right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(math--comp-round-bracket=20= (math-compose-expr=20a=200)))))=0A=20=09=09((and=20(memq=20calc-language=20= '(tex=20latex))=0A=20=09=09=20=20=20=20=20=20(memq=20(car=20a)=20'(/=20= calcFunc-choose=20calcFunc-evalto))=0A=20=09=09=20=20=20=20=20=20(>=3D=20= prec=200))=0A@@=20-638,7=20+639,7=20@@=20math-compose-expr=0A=20=09=09=09= (rhs=20(math-compose-expr=20(nth=202=20a)=20(nth=203=20op)=20(eq=20(nth=20= 1=20op)=20'/))))=0A=20=09=09=20=20=20(and=20(equal=20(car=20op)=20"^")=0A= =20=09=09=09(eq=20(math-comp-first-char=20lhs)=20?-)=0A-=09=09=09(setq=20= lhs=20(list=20'horiz=20"("=20lhs=20")")))=0A+=09=09=09(setq=20lhs=20= (math--comp-round-bracket=20lhs)))=0A=20=09=09=20=20=20(and=20(memq=20= calc-language=20'(tex=20latex))=0A=20=09=09=09(or=20(equal=20(car=20op)=20= "^")=20(equal=20(car=20op)=20"_"))=0A=20=09=09=09(not=20(and=20(stringp=20= rhs)=20(=3D=20(length=20rhs)=201)))=0A@@=20-721,7=20+722,7=20@@=20= math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20(=20"=0A= =20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20"=20= right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=09=09=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20a=200)))))=0A=20=09=09= (t=0A=20=09=09=20(let=20((lhs=20(math-compose-expr=20(nth=201=20a)=20= (nth=202=20op))))=0A=20=09=09=20(list=20'horiz=0A@@=20-759,7=20+760,7=20= @@=20math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20= (=20"=0A=20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20= "=20right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=09=09=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20a=200)))))=0A=20=09=09= (t=0A=20=09=09=20(let=20((rhs=20(math-compose-expr=20(nth=201=20a)=20= (nth=203=20op))))=0A=20=09=09=20=20=20(list=20'horiz=0A@@=20-966,6=20= +967,69=20@@=20math-tex-expr-is-flat=0A=20=20=20=20=20=20=20(and=20(memq=20= (car=20a)=20'(^=20calcFunc-subscr))=0A=20=09=20=20=20= (math-tex-expr-is-flat=20(nth=201=20a)))))=0A=20=0A+;;=20FIXME:=20maybe=20= try=20box=20drawing=20chars=20if=20big=20bracket=20chars=20are=20= unavailable,=0A+;;=20like=20=20=E2=94=8C=20=20=20=20=20=E2=94=90n=0A+;;=20= =20=20=20=20=20=20=E2=94=82a=20+=20b=E2=94=82=20=20=20=20=20=E2=94=8C=20= a=20+=20b=20=E2=94=90n=0A+;;=20=20=20=20=20=20=20=E2=94=82-----=E2=94=82=20= =20or=20=E2=94=82=20-----=20=E2=94=82=20=20=20=20?=0A+;;=20=20=20=20=20=20= =20=E2=94=82=20=20c=20=20=E2=94=82=20=20=20=20=20=E2=94=94=20=20=20c=20=20= =20=E2=94=98=0A+;;=20=20=20=20=20=20=20=E2=94=94=20=20=20=20=20=E2=94=98=0A= +;;=20They=20are=20more=20common=20than=20the=20chars=20below,=20but=20= look=20a=20bit=20square.=0A+;;=20Rounded=20corners=20exist=20but=20are=20= less=20commonly=20available.=0A+=0A+(defconst=20math--big-bracket-alist=0A= +=20=20'((?\(=20.=20(?=E2=8E=9B=20?=E2=8E=9D=20?=E2=8E=9C))=0A+=20=20=20=20= (?\)=20.=20(?=E2=8E=9E=20?=E2=8E=A0=20?=E2=8E=9F))=0A+=20=20=20=20(?\[=20= .=20(?=E2=8E=A1=20?=E2=8E=A3=20?=E2=8E=A2))=0A+=20=20=20=20(?\]=20.=20= (?=E2=8E=A4=20?=E2=8E=A6=20?=E2=8E=A5))=0A+=20=20=20=20(?\{=20.=20(?=E2=8E= =A7=20?=E2=8E=A9=20?=E2=8E=AA=20?=E2=8E=A8))=0A+=20=20=20=20(?\}=20.=20= (?=E2=8E=AB=20?=E2=8E=AD=20?=E2=8E=AA=20?=E2=8E=AC)))=0A+=20=20"Alist=20= mapping=20bracket=20chars=20to=20(UPPER=20LOWER=20EXTENSION=20MIDPIECE).=0A= +Not=20all=20brackets=20have=20midpieces.")=0A+=0A+(defun=20= math--big-bracket=20(bracket-char=20height=20baseline)=0A+=20=20= "Composition=20for=20BRACKET-CHAR=20of=20HEIGHT=20with=20BASELINE."=0A+=20= =20(if=20(<=3D=20height=201)=0A+=20=20=20=20=20=20(char-to-string=20= bracket-char)=0A+=20=20=20=20(let=20((pieces=20(cdr=20(assq=20= bracket-char=20math--big-bracket-alist))))=0A+=20=20=20=20=20=20(if=20= (memq=20nil=20(mapcar=20#'char-displayable-p=20pieces))=0A+=20=20=20=20=20= =20=20=20=20=20(char-to-string=20bracket-char)=0A+=20=20=20=20=20=20=20=20= (let*=20((upper=20(nth=200=20pieces))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(lower=20(nth=201=20pieces))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(extension=20(nth=202=20pieces))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(midpiece=20(nth=203=20pieces)))=0A+=20=20=20=20=20=20= =20=20=20=20(cons=20'vleft=20=20=20=20=20=20=20=20;=20alignment=20= doesn't=20matter;=20width=20is=201=20char=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(cons=20baseline=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(mapcar=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20#'char-to-string=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(append=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= upper)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(if=20midpiece=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(let=20((lower-ext=20(/=20(-=20= height=203)=202)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(append=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (make-list=20(-=20height=203=20lower-ext)=20extension)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(list=20midpiece)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(make-list=20lower-ext=20= extension)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(make-list=20(-=20height=202)=20extension))=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= lower))))))))))=0A+=0A+(defun=20math--comp-bracket=20(left-bracket=20= right-bracket=20comp)=0A+=20=20"Put=20the=20composition=20COMP=20inside=20= LEFT-BRACKET=20and=20RIGHT-BRACKET."=0A+=20=20(if=20(eq=20calc-language=20= 'big)=0A+=20=20=20=20=20=20(let=20((height=20(math-comp-height=20comp))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20(baseline=20(1-=20(math-comp-ascent=20= comp))))=0A+=20=20=20=20=20=20=20=20(list=20'horiz=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(math--big-bracket=20left-bracket=20height=20= baseline)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20comp=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(math--big-bracket=20right-bracket=20= height=20baseline)))=0A+=20=20=20=20(list=20'horiz=0A+=20=20=20=20=20=20=20= =20=20=20(char-to-string=20left-bracket)=0A+=20=20=20=20=20=20=20=20=20=20= comp=0A+=20=20=20=20=20=20=20=20=20=20(char-to-string=20= right-bracket))))=0A+=0A+(defun=20math--comp-round-bracket=20(comp)=0A+=20= =20"Put=20the=20composition=20COMP=20inside=20plain=20brackets."=0A+=20=20= (math--comp-bracket=20?\(=20?\)=20comp))=0A+=0A=20(put=20'calcFunc-log=20= 'math-compose-big=20#'math-compose-log)=0A=20(defun=20math-compose-log=20= (a=20_prec)=0A=20=20=20(and=20(=3D=20(length=20a)=203)=0A@@=20-973,18=20= +1037,14=20@@=20math-compose-log=0A=20=09=20=20=20=20=20(list=20'subscr=20= "log"=0A=20=09=09=20=20=20(let=20((calc-language=20'flat))=0A=20=09=09=20= =20=20=20=20(math-compose-expr=20(nth=202=20a)=201000)))=0A-=09=20=20=20=20= =20"("=0A-=09=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=201000)=0A= -=09=20=20=20=20=20")")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=20= 1000)))))=0A=20=0A=20(put=20'calcFunc-log10=20'math-compose-big=20= #'math-compose-log10)=0A=20(defun=20math-compose-log10=20(a=20_prec)=0A=20= =20=20(and=20(=3D=20(length=20a)=202)=0A=20=20=20=20=20=20=20=20(list=20= 'horiz=0A-=09=20=20=20=20=20(list=20'subscr=20"log"=20"10")=0A-=09=20=20=20= =20=20"("=0A-=09=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=20= 1000)=0A-=09=20=20=20=20=20")")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20(list=20'subscr=20"log"=20"10")=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=20= 1000)))))=0A=20=0A=20(put=20'calcFunc-deriv=20'math-compose-big=20= #'math-compose-deriv)=0A=20(put=20'calcFunc-tderiv=20'math-compose-big=20= #'math-compose-deriv)=0A@@=20-1027,12=20+1087,9=20@@=20math-compose-sqrt=0A= =20(defun=20math-compose-choose=20(a=20_prec)=0A=20=20=20(let=20((a1=20= (math-compose-expr=20(nth=201=20a)=200))=0A=20=09(a2=20= (math-compose-expr=20(nth=202=20a)=200)))=0A-=20=20=20=20(list=20'horiz=0A= -=09=20=20"("=0A-=09=20=20(list=20'vcent=0A-=09=09(math-comp-height=20= a1)=0A-=09=09a1=20"=20"=20a2)=0A-=09=20=20")")))=0A+=20=20=20=20= (math--comp-round-bracket=20(list=20'vcent=0A+=09=09=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(+=20(math-comp-height=20a1))=0A+=09= =09=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20a1=20"=20= "=20a2))))=0A=20=0A=20(put=20'calcFunc-integ=20'math-compose-big=20= #'math-compose-integ)=0A=20(defun=20math-compose-integ=20(a=20prec)=0A@@=20= -1052,9=20+1109,12=20@@=20math-compose-integ=0A=20=09=09=09=09=09=09=20=20= =20=20=20=20=20"d%s"=0A=20=09=09=09=09=09=09=20=20=20=20=20=20=20(nth=20= 1=20(nth=202=20a)))))=0A=20=09=09=09=09=09=20(nth=201=20a))=20185))=0A-=09= =20=20=20=20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-expr=20(nth=20= 4=20a)=200)))=0A+=09=20=20=20=20=20=20(low=20(and=20(nth=203=20a)=0A+=09=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(math-compose-expr=20(nth=203=20a)=200))))=0A+=09=20=20=20= =20=20=20(high=20(and=20(nth=204=20a)=0A+=09=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=204=20a)=200))))=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20;;=20Check=20if=20we=20have=20Unicode=20integral=20= top/bottom=20parts.=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (fancy=20(and=20(char-displayable-p=20?=E2=8C=A0)=0A=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (char-displayable-p=20?=E2=8C=A1)))=0A@@=20-1066,40=20+1126,47=20@@=20= math-compose-integ=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20((char-displayable-p=20= ?=E2=94=82)=20"=E2=94=82=20")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20U+007C=20= VERTICAL=20LINE=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(t=20"|=20"))))=0A-=09=20(list=20= 'horiz=0A-=09=20=20=20=20=20=20=20(if=20parens=20"("=20"")=0A-=09=20=20=20= =20=20=20=20(append=20(list=20'vcent=20(if=20fancy=0A-=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(if=20high=202=201)=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(if=20high=203=202)))=0A-=09=09=20=20=20=20=20=20=20(and=20= high=20(list=20(if=20fancy=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(list=20'horiz=20high=20"=20")=0A-=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(list=20'horiz=20"=20=20"=20high))))=0A-=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20fancy=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20"=E2=8C=A0=20"=20fancy-stem=20"=E2=8C=A1=20")=0A-=09=09=20=20=20=20= =20=20=20=20=20'("=20=20/"=0A-=09=09=09=20=20=20"=20|=20"=0A-=09=09=09=20= =20=20"=20|=20"=0A-=09=09=09=20=20=20"=20|=20"=0A-=09=09=09=20=20=20"/=20= =20"))=0A-=09=09=20=20=20=20=20=20=20(and=20low=20(list=20(if=20fancy=0A= -=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20= low=20"=20")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= 'horiz=20low=20"=20=20")))))=0A-=09=20=20=20=20=20=20=20expr=0A-=09=20=20= =20=20=20=20=20(if=20over=0A-=09=09=20=20=20""=0A-=09=09=20(list=20= 'horiz=20"=20d"=20var))=0A-=09=20=20=20=20=20=20=20(if=20parens=20")"=20= "")))))=0A+=20=20=20=20=20=20=20=20=20(let=20((comp=0A+=09=20=20=20=20=20= =20=20=20(list=20'horiz=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (append=20(list=20'vcent=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(if=20high=202=201)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20high=203=202)))=0A+=09=09= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(and=20high=20(list=20(if=20= fancy=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(list=20'horiz=20high=20"=20")=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20"=20=20"=20= high))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20"=E2=8C=A0=20"=20fancy-stem=20"=E2=8C=A1=20")=0A+=09=09=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20'("=20=20/"=0A+=09=09=09=20=20=20=20=20= =20=20=20=20=20"=20|=20"=0A+=09=09=09=20=20=20=20=20=20=20=20=20=20"=20|=20= "=0A+=09=09=09=20=20=20=20=20=20=20=20=20=20"=20|=20"=0A+=09=09=09=20=20=20= =20=20=20=20=20=20=20"/=20=20"))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(and=20low=20(list=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20low=20"=20")=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20'horiz=20low=20"=20=20")))))=0A+=09=20=20=20=20=20=20=20=20=20=20= =20=20=20=20expr=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20= over=0A+=09=09=20=20=20=20=20=20=20=20=20=20""=0A+=09=09=20=20=20=20=20=20= =20=20(list=20'horiz=20"=20d"=20var)))))=0A+=20=20=20=20=20=20=20=20=20=20= =20(if=20parens=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20comp)))))=0A=20=0A=20(put=20'calcFunc-sum=20'math-compose-big=20= #'math-compose-sum)=0A=20(defun=20math-compose-sum=20(a=20prec)=0A=20=20=20= (and=20(memq=20(length=20a)=20'(3=205=206))=0A=20=20=20=20=20=20=20=20= (let*=20((expr=20(math-compose-expr=20(nth=201=20a)=20185))=0A-=09=20=20=20= =20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(var=20= (math-compose-expr=20(nth=202=20a)=200))=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-vector=20= (nthcdr=204=20a)=20",=20"=200))))=0A-=09=20(list=20'horiz=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(180=20201))=20"("=20"")=0A+=09=20=20=20= =20=20=20(var=0A+=09=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=202=20a)=200)))=0A+=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (let=20((calc-language=20'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(math-compose-expr=20(nth=203=20= a)=200))))=0A+=09=20=20=20=20=20=20(high=20(and=20(nth=204=20a)=0A+=09=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(math-compose-vector=20(nthcdr=204=20a)=20",=20"=20= 0))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20(comp=0A+=09=20=20=20=20= =20=20=20(list=20'horiz=0A=20=09=20=20=20=20=20=20=20(append=20(list=20= 'vcent=20(if=20high=203=202))=0A=20=09=09=20=20=20=20=20=20=20(and=20= high=20(list=20high))=0A=20=09=09=20=20=20=20=20=20=20'("----=20"=0A@@=20= -1112,32=20+1179,42=20@@=20math-compose-sum=0A=20=09=09=09=20(list=20= var)))=0A=20=09=20=20=20=20=20=20=20(if=20(memq=20(car-safe=20(nth=201=20= a))=20'(calcFunc-sum=20calcFunc-prod))=0A=20=09=09=20=20=20"=20"=20"")=0A= -=09=20=20=20=20=20=20=20expr=0A-=09=20=20=20=20=20=20=20(if=20(memq=20= prec=20'(180=20201))=20")"=20"")))))=0A+=09=20=20=20=20=20=20=20expr)))=0A= +=09=20(if=20(memq=20prec=20'(180=20201))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20(math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20= =20=20comp))))=0A=20=0A=20(put=20'calcFunc-prod=20'math-compose-big=20= #'math-compose-prod)=0A=20(defun=20math-compose-prod=20(a=20prec)=0A=20=20= =20(and=20(memq=20(length=20a)=20'(3=205=206))=0A=20=20=20=20=20=20=20=20= (let*=20((expr=20(math-compose-expr=20(nth=201=20a)=20198))=0A-=09=20=20=20= =20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(var=20= (math-compose-expr=20(nth=202=20a)=200))=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-vector=20= (nthcdr=204=20a)=20",=20"=200))))=0A-=09=20(list=20'horiz=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(196=20201))=20"("=20"")=0A-=09=20=20=20= =20=20=20=20(append=20(list=20'vcent=20(if=20high=203=202))=0A-=09=09=20=20= =20=20=20=20=20(and=20high=20(list=20high))=0A-=09=09=20=20=20=20=20=20=20= '("-----=20"=0A-=09=09=09=20"=20|=20|=20=20"=0A-=09=09=09=20"=20|=20|=20=20= "=0A-=09=09=09=20"=20|=20|=20=20")=0A-=09=09=20=20=20=20=20=20=20(if=20= low=0A-=09=09=09=20=20=20(list=20(list=20'horiz=20var=20"=20=3D=20"=20= low))=0A-=09=09=09=20(list=20var)))=0A-=09=20=20=20=20=20=20=20(if=20= (memq=20(car-safe=20(nth=201=20a))=20'(calcFunc-sum=20calcFunc-prod))=0A= -=09=09=20=20=20"=20"=20"")=0A-=09=20=20=20=20=20=20=20expr=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(196=20201))=20")"=20"")))))=0A+=09=20=20= =20=20=20=20(var=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20= ((calc-language=20'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(math-compose-expr=20(nth=202=20a)=200)))=0A+=09=20=20=20=20=20=20= (low=20(and=20(nth=203=20a)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200))))=0A+=09=20=20=20=20=20=20(high=20= (and=20(nth=204=20a)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-vector=20(nthcdr=204=20a)=20",=20"=200))))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(comp=0A+=09=20=20=20=20=20=20=20(list=20= 'horiz=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20(append=20(list=20= 'vcent=20(if=20high=203=202))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20=20= =20(and=20high=20(list=20high))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20= =20=20'("-----=20"=0A+=09=09=09=20=20=20=20=20=20=20"=20|=20|=20=20"=0A+=09= =09=09=20=20=20=20=20=20=20"=20|=20|=20=20"=0A+=09=09=09=20=20=20=20=20=20= =20"=20|=20|=20=20")=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20= low=0A+=09=09=09=20=20=20=20=20=20=20=20=20(list=20(list=20'horiz=20var=20= "=20=3D=20"=20low))=0A+=09=09=09=20=20=20=20=20=20=20(list=20var)))=0A+=09= =20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(memq=20(car-safe=20(nth=20= 1=20a))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20'(calcFunc-sum=20calcFunc-prod))=0A+=09=09=20= =20=20=20=20=20=20=20=20"=20"=20"")=0A+=09=20=20=20=20=20=20=20=20=20=20=20= =20=20expr)))=0A+=20=20=20=20=20=20=20=20=20(if=20(memq=20prec=20'(196=20= 201))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20=20=20= comp))))=0A=20=0A=20;;=20The=20variables=20math-svo-c,=20math-svo-wid=20= and=20math-svo-off=20are=20local=0A=20;;=20to=20math-stack-value-offset=20= in=20calc.el,=20but=20are=20used=20by=0A--=20=0A2.21.1=20(Apple=20= Git-122.3)=0A=0A= --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E-- From unknown Fri Aug 15 18:49:53 2025 X-Loop: help-debbugs@gnu.org Subject: bug#45917: [PATCH] Use big brackets in Calc in big mode Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Jan 2021 05:38:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 45917 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Cc: 45917@debbugs.gnu.org Received: via spool by 45917-submit@debbugs.gnu.org id=B45917.161103465325448 (code B ref 45917); Tue, 19 Jan 2021 05:38:01 +0000 Received: (at 45917) by debbugs.gnu.org; 19 Jan 2021 05:37:33 +0000 Received: from localhost ([127.0.0.1]:49112 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1jhs-0006cO-Rr for submit@debbugs.gnu.org; Tue, 19 Jan 2021 00:37:33 -0500 Received: from quimby.gnus.org ([95.216.78.240]:54702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1jhr-0006c7-G4 for 45917@debbugs.gnu.org; Tue, 19 Jan 2021 00:37:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=yDzaiflo4jg6YA1kCLzAF61gyKeSCDz8zFZB9e/cFKY=; b=KLZkWdhLcawHifX55dR/IyrTbj OdQFh2c1OPb+iFzJP26tbBEBD3HEb77Y5ACzk9mOnbaik0jfSBhbyUjNcEgDFI65S68D0Ylf8hkrv zQgcCyqUuX7eczgmEnhC36JyiEmrcBPi6R2I2EB+L2oNzPlKo6E1sYUj1fEdtxR9qSbA=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l1jhg-0003yU-Mf; Tue, 19 Jan 2021 06:37:25 +0100 From: Lars Ingebrigtsen References: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> X-Now-Playing: Cocteau Twins's _Treasure Hiding (4): Sessions & Rarities_: "Violaine (Robert Elms BBC Session)" Date: Tue, 19 Jan 2021 06:37:19 +0100 In-Reply-To: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> ("Mattias =?UTF-8?Q?Engdeg=C3=A5rd?="'s message of "Sat, 16 Jan 2021 18:10:31 +0100") Message-ID: <87zh15o5bk.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= writes: > The attached patch makes Calc use big brackets in Big mode when the > Unicode characters are available. This makes for prettier display > which is sort of the point of using Big mode. It follows pre [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Mattias Engdeg=C3=A5rd writes: > The attached patch makes Calc use big brackets in Big mode when the > Unicode characters are available. This makes for prettier display > which is sort of the point of using Big mode. It follows previous use > of Unicode characters for square root and integral signs. Makes sense to me, but... > As far as I can tell the only reasons for not applying this would be > that it is common with fonts or terminals where this doesn't look > good, ... would it be possible to have a fallback if the display doesn't support these characters? > or that the resulting formula isn't recognised by the > embedded-mode parser (which is already the case with several other > constructs). Yeah. Or there could be a variable to allow the user to not use these fancy brackets if this is important for them? --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Fri Aug 15 18:49:53 2025 X-Loop: help-debbugs@gnu.org Subject: bug#45917: [PATCH] Use big brackets in Calc in big mode Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Jan 2021 10:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 45917 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Lars Ingebrigtsen Cc: 45917@debbugs.gnu.org Received: via spool by 45917-submit@debbugs.gnu.org id=B45917.16110511393171 (code B ref 45917); Tue, 19 Jan 2021 10:13:02 +0000 Received: (at 45917) by debbugs.gnu.org; 19 Jan 2021 10:12:19 +0000 Received: from localhost ([127.0.0.1]:49520 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1nzn-0000p0-5A for submit@debbugs.gnu.org; Tue, 19 Jan 2021 05:12:19 -0500 Received: from mail209c50.megamailservers.eu ([91.136.10.219]:49010 helo=mail194c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1nze-0000oi-Bq for 45917@debbugs.gnu.org; Tue, 19 Jan 2021 05:12:11 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1611051128; bh=GOjMwKvxmUyJYbPpYrY4h77dFXdR+/rXC2b172tN4X8=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=Zk89klLt8/LTvA4VLqi2ZaArZAbfM7D/xeNo8J5Nujftqjs4yk/B0lY5TGodIFNyp nwfevt+kdAXKhh+/CzW3P2bzQ4M9qjxzMPUd46pqu+y6pQVtVLv62pC/spS9V5qeLC IoPXZaCOrYsd6bjwL1PYiH3suOn9mzzvo7C0q2Kg= Feedback-ID: mattiase@acm.or Received: from stanniol.lan (c-b952e353.032-75-73746f71.bbcust.telenor.se [83.227.82.185]) (authenticated bits=0) by mail194c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 10JAC6gj030615; Tue, 19 Jan 2021 10:12:07 +0000 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\)) From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= In-Reply-To: <87zh15o5bk.fsf@gnus.org> Date: Tue, 19 Jan 2021 11:12:05 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> <87zh15o5bk.fsf@gnus.org> X-Mailer: Apple Mail (2.3445.104.17) X-CTCH-RefID: str=0001.0A742F22.6006B078.002C, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=AfXP4EfG c=1 sm=1 tr=0 a=von4qPfY+hyqc0zmWf0tYQ==:117 a=von4qPfY+hyqc0zmWf0tYQ==:17 a=kj9zAlcOel0A:10 a=M51BFTxLslgA:10 a=OocQHUDgAAAA:8 a=WEKe6O7_GN0VKdXAbA8A:9 a=CjuIK1q_8ugA:10 a=xUZTl98r3Qw_uB5NK3jt:22 X-Origin-Country: SE X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) 19 jan. 2021 kl. 06.37 skrev Lars Ingebrigtsen : > ... would it be possible to have a fallback if the display doesn't > support these characters? Yes, all Unicode characters are checked using char-displayable-p in the = patch. However, some characters may be technically displayable but not = very pretty, or have awkward metrics. That said, the brackets look fine where I've tested them so it's = probably not a serious concern. > Yeah. Or there could be a variable to allow the user to not use these > fancy brackets if this is important for them? Maybe, but Calc already has rather too many variables and should we have = separate variables for all non-ASCII features then, like the square root = sign? We are just speculating here. I'd hoped for concrete cheerful evidence = like 'looks terrible on my terminal', 'completely destroys embedded-mode = for me'... From unknown Fri Aug 15 18:49:53 2025 X-Loop: help-debbugs@gnu.org Subject: bug#45917: [PATCH] Use big brackets in Calc in big mode Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Jan 2021 15:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 45917 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Cc: 45917@debbugs.gnu.org Received: via spool by 45917-submit@debbugs.gnu.org id=B45917.161107112118472 (code B ref 45917); Tue, 19 Jan 2021 15:46:02 +0000 Received: (at 45917) by debbugs.gnu.org; 19 Jan 2021 15:45:21 +0000 Received: from localhost ([127.0.0.1]:51328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1tC5-0004ns-DM for submit@debbugs.gnu.org; Tue, 19 Jan 2021 10:45:21 -0500 Received: from quimby.gnus.org ([95.216.78.240]:32792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1tC3-0004na-3E for 45917@debbugs.gnu.org; Tue, 19 Jan 2021 10:45:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=97FxAPK1ubSaCCfmUb2yl++/EFjb59ZwEHubwq7xSGc=; b=tUNDG3xTvYPff2LMbH/qt2sS6w Kc4Ks18O3O8t1IML7URd+tJMWUON8Z8UWh6r5oklWlFS7IX8GFiznPQ7KpoqBVMIY9l2gphXCK4wc hpYHXD8YDh18+C9erFp8pP2SqmB14ZHvDD3pBqGYRx/fYAh1VrAh/zAIYO9eWHRuHpE8=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l1tBm-0001ig-U5; Tue, 19 Jan 2021 16:45:13 +0100 From: Lars Ingebrigtsen References: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> <87zh15o5bk.fsf@gnus.org> X-Now-Playing: Fennesz's _Agora_: "Agora" Date: Tue, 19 Jan 2021 16:45:01 +0100 In-Reply-To: ("Mattias =?UTF-8?Q?Engdeg=C3=A5rd?="'s message of "Tue, 19 Jan 2021 11:12:05 +0100") Message-ID: <87im7thqwy.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= writes: > 19 jan. 2021 kl. 06.37 skrev Lars Ingebrigtsen : > >> ... would it be possible to have a fallback if the display doesn't >> support these characters? > > Yes, all Unicode characters [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Mattias Engdeg=C3=A5rd writes: > 19 jan. 2021 kl. 06.37 skrev Lars Ingebrigtsen : > >> ... would it be possible to have a fallback if the display doesn't >> support these characters? > > Yes, all Unicode characters are checked using char-displayable-p in > the patch. Duh. I skimmed the patch, but I missed that bit... > However, some characters may be technically displayable but > not very pretty, or have awkward metrics. > > That said, the brackets look fine where I've tested them so it's > probably not a serious concern. Yup. >> Yeah. Or there could be a variable to allow the user to not use these >> fancy brackets if this is important for them? > > Maybe, but Calc already has rather too many variables and should we > have separate variables for all non-ASCII features then, like the > square root sign? Possibly? But I see you've just pushed a fix for parsing the root sign. :-) > We are just speculating here. I'd hoped for concrete cheerful evidence > like 'looks terrible on my terminal', 'completely destroys > embedded-mode for me'... I'm guessing you won't get feedback like that until you push this change. :-) --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Fri Aug 15 18:49:53 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Subject: bug#45917: closed (Re: bug#45917: [PATCH] Use big brackets in Calc in big mode) Message-ID: References: <5014EA86-B44E-462C-B626-879C1D2F8395@acm.org> <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> X-Gnu-PR-Message: they-closed 45917 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 45917@debbugs.gnu.org Date: Tue, 19 Jan 2021 18:00:05 +0000 Content-Type: multipart/mixed; boundary="----------=_1611079205-9981-1" This is a multi-part message in MIME format... ------------=_1611079205-9981-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #45917: [PATCH] Use big brackets in Calc in big mode which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 45917@debbugs.gnu.org. --=20 45917: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D45917 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1611079205-9981-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 45917-done) by debbugs.gnu.org; 19 Jan 2021 17:59:33 +0000 Received: from localhost ([127.0.0.1]:51601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1vHw-0002Xc-R3 for submit@debbugs.gnu.org; Tue, 19 Jan 2021 12:59:33 -0500 Received: from mail1450c50.megamailservers.eu ([91.136.14.50]:60774 helo=mail265c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l1vHu-0002XN-6r for 45917-done@debbugs.gnu.org; Tue, 19 Jan 2021 12:59:31 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1611079163; bh=LzCRS85dHyzWOv/lbFIFyxgKO+sIQDS6gWOlBG1o1Ng=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=hjqQD062qKuHldj3WlbBkNPFhYucJKhl2/Jx5+XvW44iv0jMQ6bEZqGwV/YjLd14o fn/Df3/cLsNf7+wK53oyDiE+Jesuhr37lhLJECZTKfoSntsefStHzesC/pRvesbJUQ ZiUqpUIAhzeyRp4YgkwMu7lHQTwhugkuwgoKxKnk= Feedback-ID: mattiase@acm.or Received: from stanniol.lan (c-b952e353.032-75-73746f71.bbcust.telenor.se [83.227.82.185]) (authenticated bits=0) by mail265c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 10JHxLpE024841; Tue, 19 Jan 2021 17:59:22 +0000 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\)) Subject: Re: bug#45917: [PATCH] Use big brackets in Calc in big mode From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= In-Reply-To: <87im7thqwy.fsf@gnus.org> Date: Tue, 19 Jan 2021 18:59:20 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <5014EA86-B44E-462C-B626-879C1D2F8395@acm.org> References: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> <87zh15o5bk.fsf@gnus.org> <87im7thqwy.fsf@gnus.org> To: Lars Ingebrigtsen X-Mailer: Apple Mail (2.3445.104.17) X-CTCH-RefID: str=0001.0A742F18.60071DFB.002C, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=QoAgIm6d c=1 sm=1 tr=0 a=von4qPfY+hyqc0zmWf0tYQ==:117 a=von4qPfY+hyqc0zmWf0tYQ==:17 a=kj9zAlcOel0A:10 a=M51BFTxLslgA:10 a=OocQHUDgAAAA:8 a=IXOI9S0_rbTbVTrxFhEA:9 a=CjuIK1q_8ugA:10 a=xUZTl98r3Qw_uB5NK3jt:22 X-Origin-Country: SE X-Spam-Score: 1.4 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 19 jan. 2021 kl. 16.45 skrev Lars Ingebrigtsen : >> Maybe, but Calc already has rather too many variables and should we >> have separate variables for all non-ASCII features then, like the >> square root sign? > > Possibly? But I see you've just pus [...] Content analysis details: (1.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.4 KHOP_HELO_FCRDNS Relay HELO differs from its IP's reverse DNS X-Debbugs-Envelope-To: 45917-done Cc: 45917-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) 19 jan. 2021 kl. 16.45 skrev Lars Ingebrigtsen : >> Maybe, but Calc already has rather too many variables and should we >> have separate variables for all non-ASCII features then, like the >> square root sign? >=20 > Possibly? But I see you've just pushed a fix for parsing the root > sign. :-) Yes, it turned out to be easy! Parsing big brackets is probably not = quite as easy; I'm not even going to try. >> We are just speculating here. I'd hoped for concrete cheerful = evidence >> like 'looks terrible on my terminal', 'completely destroys >> embedded-mode for me'... >=20 > I'm guessing you won't get feedback like that until you push this > change. :-) Right, now done. Let's see if anything turns up. ------------=_1611079205-9981-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 16 Jan 2021 17:10:46 +0000 Received: from localhost ([127.0.0.1]:43905 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l0p65-0000Fp-US for submit@debbugs.gnu.org; Sat, 16 Jan 2021 12:10:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:45950) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l0p64-0000Fh-2G for submit@debbugs.gnu.org; Sat, 16 Jan 2021 12:10:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l0p63-0003lO-9n for bug-gnu-emacs@gnu.org; Sat, 16 Jan 2021 12:10:43 -0500 Received: from mail1467c50.megamailservers.eu ([91.136.14.67]:55384 helo=mail268c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l0p5y-0001tl-JT for bug-gnu-emacs@gnu.org; Sat, 16 Jan 2021 12:10:43 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1610817034; bh=CJl1kz0EXjVw0W0rtyIBHlUWYynXzv5d6oTtOVD+RUM=; h=From:Subject:Date:To:From; b=Waz6ZRHk4t9bdHfIHN6vPDcEmw1v77wMfPGm1fMMO6c2/bZIS6hua2H/V4Q3sJAZ6 aPZfmRC2mfNOCp5IEuMKVZWfk5u7IM3L/q1RI7XdbNswV9afFN+lcdacdyDMcZq0ir zoHMIPSqO2DV8TqCxYm1nA3V1YQHGQ0lk25xIsik= Feedback-ID: mattiase@acm.or Received: from stanniol.lan (c-b952e353.032-75-73746f71.bbcust.telenor.se [83.227.82.185]) (authenticated bits=0) by mail268c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 10GHAWJZ001983 for ; Sat, 16 Jan 2021 17:10:33 +0000 From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= Content-Type: multipart/mixed; boundary="Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\)) Subject: [PATCH] Use big brackets in Calc in big mode Message-Id: <99D62C96-8FA8-4089-BB4C-9BA65F30B7E3@acm.org> Date: Sat, 16 Jan 2021 18:10:31 +0100 To: bug-gnu-emacs@gnu.org X-Mailer: Apple Mail (2.3445.104.17) X-CTCH-RefID: str=0001.0A742F17.60031E0A.0012, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=J+PUEzvS c=1 sm=1 tr=0 a=von4qPfY+hyqc0zmWf0tYQ==:117 a=von4qPfY+hyqc0zmWf0tYQ==:17 a=M51BFTxLslgA:10 a=hz4ZEoUbM58TYr4sGwoA:9 a=CjuIK1q_8ugA:10 a=FxUsVjK5u7_X8EQ_saYA:9 a=B2y7HmGcmWMA:10 a=tclcd6dtLQvEqt9_mmAA:9 X-Origin-Country: SE Received-SPF: softfail client-ip=91.136.14.67; envelope-from=mattiase@acm.org; helo=mail268c50.megamailservers.eu X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The attached patch makes Calc use big brackets in Big mode when the = Unicode characters are available. This makes for prettier display which = is sort of the point of using Big mode. It follows previous use of = Unicode characters for square root and integral signs. The code supports big versions of round, square and curly brackets. Big = square brackets are currently only used for intervals and curly ones not = at all (maybe they could be put to use for Stirling numbers of the = second kind). Matrices do not use big brackets but they probably should since it is = standard mathematical notation. As far as I can tell the only reasons for not applying this would be = that it is common with fonts or terminals where this doesn't look good, = or that the resulting formula isn't recognised by the embedded-mode = parser (which is already the case with several other constructs). --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Disposition: attachment; filename=0001-Calc-use-big-Unicode-brackets-in-Big-mode-when-avail.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Calc-use-big-Unicode-brackets-in-Big-mode-when-avail.patch" Content-Transfer-Encoding: quoted-printable =46rom=2001a065dfb6047e0c0db7a89f6113723a1763bd2b=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Sat,=2016=20Jan=202021=2017:30:57=20+0100=0A= Subject:=20[PATCH]=20Calc:=20use=20big=20Unicode=20brackets=20in=20Big=20= mode=20when=20available=0A=0A*=20lisp/calc/calccomp.el=20= (math--big-bracket-alist)=0A(math--big-bracket,=20math--comp-bracket,=20= math--comp-round-bracket):=0ANew.=0A(math-compose-expr,=20= math-compose-log,=20math-compose-log10)=0A(math-compose-choose,=20= math-compose-integ,=20math-compose-sum)=0A(math-compose-prod):=20Use=20= big=20brackets=20when=20available.=0A---=0A=20lisp/calc/calccomp.el=20|=20= 247=20+++++++++++++++++++++++++++---------------=0A=201=20file=20= changed,=20162=20insertions(+),=2085=20deletions(-)=0A=0Adiff=20--git=20= a/lisp/calc/calccomp.el=20b/lisp/calc/calccomp.el=0Aindex=20= 07e70cad0a..5f38ee71c7=20100644=0A---=20a/lisp/calc/calccomp.el=0A+++=20= b/lisp/calc/calccomp.el=0A@@=20-138,19=20+138,19=20@@=20= math-compose-expr=0A=20=09=09=09=09=20=20=20=20=20=20(math-format-number=20= (nth=202=20aa))))))=0A=20=09=09=20=20(if=20(=3D=20calc-number-radix=20= 10)=0A=20=09=09=20=20=20=20=20=20c=0A-=09=09=20=20=20=20(list=20'horiz=20= "("=20c=0A-=09=09=09=20=20(list=20'subscr=20")"=0A-=09=09=09=09= (int-to-string=20calc-number-radix)))))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(list=20'subscr=20= (math--comp-round-bracket=20c)=0A+=09=09=09=20=20(int-to-string=20= calc-number-radix))))=0A=20=09=20=20=20=20=20=20(math-format-number=20= a)))=0A=20=09(if=20(not=20(eq=20calc-language=20'big))=0A=20=09=20=20=20=20= (math-format-number=20a=20prec)=0A=20=09=20=20(if=20(memq=20(car-safe=20= a)=20'(cplx=20polar))=0A=20=09=20=20=20=20=20=20(if=20(math-zerop=20(nth=20= 2=20a))=0A=20=09=09=20=20(math-compose-expr=20(nth=201=20a)=20prec)=0A-=09= =09(list=20'horiz=20"("=0A-=09=09=20=20=20=20=20=20(math-compose-expr=20= (nth=201=20a)=200)=0A-=09=09=20=20=20=20=20=20(if=20(eq=20(car=20a)=20= 'cplx)=20",=20"=20";=20")=0A-=09=09=20=20=20=20=20=20(math-compose-expr=20= (nth=202=20a)=200)=20")"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=0A+=09=09=20(list=20'horiz=0A+=09=09=20=20=20= =20=20=20=20(math-compose-expr=20(nth=201=20a)=200)=0A+=09=09=20=20=20=20= =20=20=20(if=20(eq=20(car=20a)=20'cplx)=20",=20"=20";=20")=0A+=09=09=20=20= =20=20=20=20=20(math-compose-expr=20(nth=202=20a)=200))))=0A=20=09=20=20=20= =20(if=20(or=20(=3D=20calc-number-radix=2010)=0A=20=09=09=20=20=20=20= (not=20(Math-realp=20a))=0A=20=09=09=20=20=20=20(and=20calc-group-digits=0A= @@=20-340,12=20+340,13=20@@=20math-compose-expr=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(funcall=20spfn=20a=20prec)=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20(math-compose-var=20a)))))=0A=20=20=20=20=20=20((eq=20= (car=20a)=20'intv)=0A-=20=20=20=20=20=20(list=20'horiz=0A-=20=20=20=20=20= =20=20=20=20=20=20=20(if=20(memq=20(nth=201=20a)=20'(0=201))=20"("=20= "[")=0A-=09=20=20=20=20(math-compose-expr=20(nth=202=20a)=200)=0A-=20=20=20= =20=20=20=20=20=20=20=20=20"=20..=20"=0A-=09=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200)=0A-=20=20=20=20=20=20=20=20=20=20= =20=20(if=20(memq=20(nth=201=20a)=20'(0=202))=20")"=20"]")))=0A+=20=20=20= =20=20=20(math--comp-bracket=0A+=20=20=20=20=20=20=20(if=20(memq=20(nth=20= 1=20a)=20'(0=201))=20?\(=20?\[)=0A+=20=20=20=20=20=20=20(if=20(memq=20= (nth=201=20a)=20'(0=202))=20?\)=20?\])=0A+=20=20=20=20=20=20=20(list=20= 'horiz=0A+=09=20=20=20=20=20(math-compose-expr=20(nth=202=20a)=200)=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20"=20..=20"=0A+=09=20=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200))))=0A=20=20=20=20=20=20((eq=20= (car=20a)=20'date)=0A=20=20=20=20=20=20=20(if=20(eq=20(car=20= calc-date-format)=20'X)=0A=20=09=20=20(math-format-date=20a)=0A@@=20= -377,7=20+378,7=20@@=20math-compose-expr=0A=20=09=09=20=20=20=20(and=20= (eq=20(car-safe=20(nth=201=20a))=20'cplx)=0A=20=09=09=09=20(math-negp=20= (nth=201=20(nth=201=20a)))=0A=20=09=09=09=20(eq=20(nth=202=20(nth=201=20= a))=200)))=0A-=09=09(list=20'horiz=20"("=20(math-compose-expr=20(nth=201=20= a)=200)=20")")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=200))=0A=20= =09=20=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=20201))=0A=20=09=20= =20=20=20(let=20((calc-language=20'flat)=0A=20=09=09=20=20= (calc-number-radix=2010)=0A@@=20-444,7=20+445,7=20@@=20math-compose-expr=0A= =20=09(if=20(>=20prec=20(nth=202=20a))=0A=20=20=20=20=20=20=20=20=20=20=20= =20=20(if=20(setq=20spfn=20(get=20calc-language=20'math-big-parens))=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20(car=20= spfn)=20c=20(cdr=20spfn))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20'horiz=20"("=20c=20")"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=20c))=0A=20=09=20=20c)))=0A=20=20=20=20=20=20= ((and=20(eq=20(car=20a)=20'calcFunc-choriz)=0A=20=09=20=20=20(not=20(eq=20= calc-language=20'unform))=0A@@=20-612,7=20+613,7=20@@=20= math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20(=20"=0A= =20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20"=20= right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(math--comp-round-bracket=20= (math-compose-expr=20a=200)))))=0A=20=09=09((and=20(memq=20calc-language=20= '(tex=20latex))=0A=20=09=09=20=20=20=20=20=20(memq=20(car=20a)=20'(/=20= calcFunc-choose=20calcFunc-evalto))=0A=20=09=09=20=20=20=20=20=20(>=3D=20= prec=200))=0A@@=20-638,7=20+639,7=20@@=20math-compose-expr=0A=20=09=09=09= (rhs=20(math-compose-expr=20(nth=202=20a)=20(nth=203=20op)=20(eq=20(nth=20= 1=20op)=20'/))))=0A=20=09=09=20=20=20(and=20(equal=20(car=20op)=20"^")=0A= =20=09=09=09(eq=20(math-comp-first-char=20lhs)=20?-)=0A-=09=09=09(setq=20= lhs=20(list=20'horiz=20"("=20lhs=20")")))=0A+=09=09=09(setq=20lhs=20= (math--comp-round-bracket=20lhs)))=0A=20=09=09=20=20=20(and=20(memq=20= calc-language=20'(tex=20latex))=0A=20=09=09=09(or=20(equal=20(car=20op)=20= "^")=20(equal=20(car=20op)=20"_"))=0A=20=09=09=09(not=20(and=20(stringp=20= rhs)=20(=3D=20(length=20rhs)=201)))=0A@@=20-721,7=20+722,7=20@@=20= math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20(=20"=0A= =20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20"=20= right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=09=09=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20a=200)))))=0A=20=09=09= (t=0A=20=09=09=20(let=20((lhs=20(math-compose-expr=20(nth=201=20a)=20= (nth=202=20op))))=0A=20=09=09=20(list=20'horiz=0A@@=20-759,7=20+760,7=20= @@=20math-compose-expr=0A=20=09=09=09=20=20=20(list=20'horiz=20"{left=20= (=20"=0A=20=09=09=09=09=20(math-compose-expr=20a=20-1)=0A=20=09=09=09=09=20= "=20right=20)}")))=0A-=09=09=20=20=20=20=20(list=20'horiz=20"("=20= (math-compose-expr=20a=200)=20")"))))=0A+=09=09=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20a=200)))))=0A=20=09=09= (t=0A=20=09=09=20(let=20((rhs=20(math-compose-expr=20(nth=201=20a)=20= (nth=203=20op))))=0A=20=09=09=20=20=20(list=20'horiz=0A@@=20-966,6=20= +967,69=20@@=20math-tex-expr-is-flat=0A=20=20=20=20=20=20=20(and=20(memq=20= (car=20a)=20'(^=20calcFunc-subscr))=0A=20=09=20=20=20= (math-tex-expr-is-flat=20(nth=201=20a)))))=0A=20=0A+;;=20FIXME:=20maybe=20= try=20box=20drawing=20chars=20if=20big=20bracket=20chars=20are=20= unavailable,=0A+;;=20like=20=20=E2=94=8C=20=20=20=20=20=E2=94=90n=0A+;;=20= =20=20=20=20=20=20=E2=94=82a=20+=20b=E2=94=82=20=20=20=20=20=E2=94=8C=20= a=20+=20b=20=E2=94=90n=0A+;;=20=20=20=20=20=20=20=E2=94=82-----=E2=94=82=20= =20or=20=E2=94=82=20-----=20=E2=94=82=20=20=20=20?=0A+;;=20=20=20=20=20=20= =20=E2=94=82=20=20c=20=20=E2=94=82=20=20=20=20=20=E2=94=94=20=20=20c=20=20= =20=E2=94=98=0A+;;=20=20=20=20=20=20=20=E2=94=94=20=20=20=20=20=E2=94=98=0A= +;;=20They=20are=20more=20common=20than=20the=20chars=20below,=20but=20= look=20a=20bit=20square.=0A+;;=20Rounded=20corners=20exist=20but=20are=20= less=20commonly=20available.=0A+=0A+(defconst=20math--big-bracket-alist=0A= +=20=20'((?\(=20.=20(?=E2=8E=9B=20?=E2=8E=9D=20?=E2=8E=9C))=0A+=20=20=20=20= (?\)=20.=20(?=E2=8E=9E=20?=E2=8E=A0=20?=E2=8E=9F))=0A+=20=20=20=20(?\[=20= .=20(?=E2=8E=A1=20?=E2=8E=A3=20?=E2=8E=A2))=0A+=20=20=20=20(?\]=20.=20= (?=E2=8E=A4=20?=E2=8E=A6=20?=E2=8E=A5))=0A+=20=20=20=20(?\{=20.=20(?=E2=8E= =A7=20?=E2=8E=A9=20?=E2=8E=AA=20?=E2=8E=A8))=0A+=20=20=20=20(?\}=20.=20= (?=E2=8E=AB=20?=E2=8E=AD=20?=E2=8E=AA=20?=E2=8E=AC)))=0A+=20=20"Alist=20= mapping=20bracket=20chars=20to=20(UPPER=20LOWER=20EXTENSION=20MIDPIECE).=0A= +Not=20all=20brackets=20have=20midpieces.")=0A+=0A+(defun=20= math--big-bracket=20(bracket-char=20height=20baseline)=0A+=20=20= "Composition=20for=20BRACKET-CHAR=20of=20HEIGHT=20with=20BASELINE."=0A+=20= =20(if=20(<=3D=20height=201)=0A+=20=20=20=20=20=20(char-to-string=20= bracket-char)=0A+=20=20=20=20(let=20((pieces=20(cdr=20(assq=20= bracket-char=20math--big-bracket-alist))))=0A+=20=20=20=20=20=20(if=20= (memq=20nil=20(mapcar=20#'char-displayable-p=20pieces))=0A+=20=20=20=20=20= =20=20=20=20=20(char-to-string=20bracket-char)=0A+=20=20=20=20=20=20=20=20= (let*=20((upper=20(nth=200=20pieces))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(lower=20(nth=201=20pieces))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(extension=20(nth=202=20pieces))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(midpiece=20(nth=203=20pieces)))=0A+=20=20=20=20=20=20= =20=20=20=20(cons=20'vleft=20=20=20=20=20=20=20=20;=20alignment=20= doesn't=20matter;=20width=20is=201=20char=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(cons=20baseline=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(mapcar=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20#'char-to-string=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(append=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= upper)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(if=20midpiece=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(let=20((lower-ext=20(/=20(-=20= height=203)=202)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(append=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (make-list=20(-=20height=203=20lower-ext)=20extension)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(list=20midpiece)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(make-list=20lower-ext=20= extension)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(make-list=20(-=20height=202)=20extension))=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= lower))))))))))=0A+=0A+(defun=20math--comp-bracket=20(left-bracket=20= right-bracket=20comp)=0A+=20=20"Put=20the=20composition=20COMP=20inside=20= LEFT-BRACKET=20and=20RIGHT-BRACKET."=0A+=20=20(if=20(eq=20calc-language=20= 'big)=0A+=20=20=20=20=20=20(let=20((height=20(math-comp-height=20comp))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20(baseline=20(1-=20(math-comp-ascent=20= comp))))=0A+=20=20=20=20=20=20=20=20(list=20'horiz=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(math--big-bracket=20left-bracket=20height=20= baseline)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20comp=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(math--big-bracket=20right-bracket=20= height=20baseline)))=0A+=20=20=20=20(list=20'horiz=0A+=20=20=20=20=20=20=20= =20=20=20(char-to-string=20left-bracket)=0A+=20=20=20=20=20=20=20=20=20=20= comp=0A+=20=20=20=20=20=20=20=20=20=20(char-to-string=20= right-bracket))))=0A+=0A+(defun=20math--comp-round-bracket=20(comp)=0A+=20= =20"Put=20the=20composition=20COMP=20inside=20plain=20brackets."=0A+=20=20= (math--comp-bracket=20?\(=20?\)=20comp))=0A+=0A=20(put=20'calcFunc-log=20= 'math-compose-big=20#'math-compose-log)=0A=20(defun=20math-compose-log=20= (a=20_prec)=0A=20=20=20(and=20(=3D=20(length=20a)=203)=0A@@=20-973,18=20= +1037,14=20@@=20math-compose-log=0A=20=09=20=20=20=20=20(list=20'subscr=20= "log"=0A=20=09=09=20=20=20(let=20((calc-language=20'flat))=0A=20=09=09=20= =20=20=20=20(math-compose-expr=20(nth=202=20a)=201000)))=0A-=09=20=20=20=20= =20"("=0A-=09=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=201000)=0A= -=09=20=20=20=20=20")")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=20= 1000)))))=0A=20=0A=20(put=20'calcFunc-log10=20'math-compose-big=20= #'math-compose-log10)=0A=20(defun=20math-compose-log10=20(a=20_prec)=0A=20= =20=20(and=20(=3D=20(length=20a)=202)=0A=20=20=20=20=20=20=20=20(list=20= 'horiz=0A-=09=20=20=20=20=20(list=20'subscr=20"log"=20"10")=0A-=09=20=20=20= =20=20"("=0A-=09=20=20=20=20=20(math-compose-expr=20(nth=201=20a)=20= 1000)=0A-=09=20=20=20=20=20")")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20(list=20'subscr=20"log"=20"10")=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20(math--comp-round-bracket=20(math-compose-expr=20(nth=201=20a)=20= 1000)))))=0A=20=0A=20(put=20'calcFunc-deriv=20'math-compose-big=20= #'math-compose-deriv)=0A=20(put=20'calcFunc-tderiv=20'math-compose-big=20= #'math-compose-deriv)=0A@@=20-1027,12=20+1087,9=20@@=20math-compose-sqrt=0A= =20(defun=20math-compose-choose=20(a=20_prec)=0A=20=20=20(let=20((a1=20= (math-compose-expr=20(nth=201=20a)=200))=0A=20=09(a2=20= (math-compose-expr=20(nth=202=20a)=200)))=0A-=20=20=20=20(list=20'horiz=0A= -=09=20=20"("=0A-=09=20=20(list=20'vcent=0A-=09=09(math-comp-height=20= a1)=0A-=09=09a1=20"=20"=20a2)=0A-=09=20=20")")))=0A+=20=20=20=20= (math--comp-round-bracket=20(list=20'vcent=0A+=09=09=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(+=20(math-comp-height=20a1))=0A+=09= =09=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20a1=20"=20= "=20a2))))=0A=20=0A=20(put=20'calcFunc-integ=20'math-compose-big=20= #'math-compose-integ)=0A=20(defun=20math-compose-integ=20(a=20prec)=0A@@=20= -1052,9=20+1109,12=20@@=20math-compose-integ=0A=20=09=09=09=09=09=09=20=20= =20=20=20=20=20"d%s"=0A=20=09=09=09=09=09=09=20=20=20=20=20=20=20(nth=20= 1=20(nth=202=20a)))))=0A=20=09=09=09=09=09=20(nth=201=20a))=20185))=0A-=09= =20=20=20=20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-expr=20(nth=20= 4=20a)=200)))=0A+=09=20=20=20=20=20=20(low=20(and=20(nth=203=20a)=0A+=09=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(math-compose-expr=20(nth=203=20a)=200))))=0A+=09=20=20=20= =20=20=20(high=20(and=20(nth=204=20a)=0A+=09=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=204=20a)=200))))=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20;;=20Check=20if=20we=20have=20Unicode=20integral=20= top/bottom=20parts.=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (fancy=20(and=20(char-displayable-p=20?=E2=8C=A0)=0A=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (char-displayable-p=20?=E2=8C=A1)))=0A@@=20-1066,40=20+1126,47=20@@=20= math-compose-integ=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20((char-displayable-p=20= ?=E2=94=82)=20"=E2=94=82=20")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20U+007C=20= VERTICAL=20LINE=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(t=20"|=20"))))=0A-=09=20(list=20= 'horiz=0A-=09=20=20=20=20=20=20=20(if=20parens=20"("=20"")=0A-=09=20=20=20= =20=20=20=20(append=20(list=20'vcent=20(if=20fancy=0A-=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(if=20high=202=201)=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(if=20high=203=202)))=0A-=09=09=20=20=20=20=20=20=20(and=20= high=20(list=20(if=20fancy=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(list=20'horiz=20high=20"=20")=0A-=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(list=20'horiz=20"=20=20"=20high))))=0A-=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20fancy=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20"=E2=8C=A0=20"=20fancy-stem=20"=E2=8C=A1=20")=0A-=09=09=20=20=20=20= =20=20=20=20=20'("=20=20/"=0A-=09=09=09=20=20=20"=20|=20"=0A-=09=09=09=20= =20=20"=20|=20"=0A-=09=09=09=20=20=20"=20|=20"=0A-=09=09=09=20=20=20"/=20= =20"))=0A-=09=09=20=20=20=20=20=20=20(and=20low=20(list=20(if=20fancy=0A= -=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20= low=20"=20")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20= 'horiz=20low=20"=20=20")))))=0A-=09=20=20=20=20=20=20=20expr=0A-=09=20=20= =20=20=20=20=20(if=20over=0A-=09=09=20=20=20""=0A-=09=09=20(list=20= 'horiz=20"=20d"=20var))=0A-=09=20=20=20=20=20=20=20(if=20parens=20")"=20= "")))))=0A+=20=20=20=20=20=20=20=20=20(let=20((comp=0A+=09=20=20=20=20=20= =20=20=20(list=20'horiz=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (append=20(list=20'vcent=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(if=20high=202=201)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20high=203=202)))=0A+=09=09= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(and=20high=20(list=20(if=20= fancy=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(list=20'horiz=20high=20"=20")=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20"=20=20"=20= high))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20"=E2=8C=A0=20"=20fancy-stem=20"=E2=8C=A1=20")=0A+=09=09=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20'("=20=20/"=0A+=09=09=09=20=20=20=20=20= =20=20=20=20=20"=20|=20"=0A+=09=09=09=20=20=20=20=20=20=20=20=20=20"=20|=20= "=0A+=09=09=09=20=20=20=20=20=20=20=20=20=20"=20|=20"=0A+=09=09=09=20=20=20= =20=20=20=20=20=20=20"/=20=20"))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(and=20low=20(list=20(if=20fancy=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20'horiz=20low=20"=20")=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (list=20'horiz=20low=20"=20=20")))))=0A+=09=20=20=20=20=20=20=20=20=20=20= =20=20=20=20expr=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20= over=0A+=09=09=20=20=20=20=20=20=20=20=20=20""=0A+=09=09=20=20=20=20=20=20= =20=20(list=20'horiz=20"=20d"=20var)))))=0A+=20=20=20=20=20=20=20=20=20=20= =20(if=20parens=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20comp)))))=0A=20=0A=20(put=20'calcFunc-sum=20'math-compose-big=20= #'math-compose-sum)=0A=20(defun=20math-compose-sum=20(a=20prec)=0A=20=20=20= (and=20(memq=20(length=20a)=20'(3=205=206))=0A=20=20=20=20=20=20=20=20= (let*=20((expr=20(math-compose-expr=20(nth=201=20a)=20185))=0A-=09=20=20=20= =20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(var=20= (math-compose-expr=20(nth=202=20a)=200))=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-vector=20= (nthcdr=204=20a)=20",=20"=200))))=0A-=09=20(list=20'horiz=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(180=20201))=20"("=20"")=0A+=09=20=20=20= =20=20=20(var=0A+=09=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=202=20a)=200)))=0A+=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (let=20((calc-language=20'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(math-compose-expr=20(nth=203=20= a)=200))))=0A+=09=20=20=20=20=20=20(high=20(and=20(nth=204=20a)=0A+=09=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20= 'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(math-compose-vector=20(nthcdr=204=20a)=20",=20"=20= 0))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20(comp=0A+=09=20=20=20=20= =20=20=20(list=20'horiz=0A=20=09=20=20=20=20=20=20=20(append=20(list=20= 'vcent=20(if=20high=203=202))=0A=20=09=09=20=20=20=20=20=20=20(and=20= high=20(list=20high))=0A=20=09=09=20=20=20=20=20=20=20'("----=20"=0A@@=20= -1112,32=20+1179,42=20@@=20math-compose-sum=0A=20=09=09=09=20(list=20= var)))=0A=20=09=20=20=20=20=20=20=20(if=20(memq=20(car-safe=20(nth=201=20= a))=20'(calcFunc-sum=20calcFunc-prod))=0A=20=09=09=20=20=20"=20"=20"")=0A= -=09=20=20=20=20=20=20=20expr=0A-=09=20=20=20=20=20=20=20(if=20(memq=20= prec=20'(180=20201))=20")"=20"")))))=0A+=09=20=20=20=20=20=20=20expr)))=0A= +=09=20(if=20(memq=20prec=20'(180=20201))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20(math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20= =20=20comp))))=0A=20=0A=20(put=20'calcFunc-prod=20'math-compose-big=20= #'math-compose-prod)=0A=20(defun=20math-compose-prod=20(a=20prec)=0A=20=20= =20(and=20(memq=20(length=20a)=20'(3=205=206))=0A=20=20=20=20=20=20=20=20= (let*=20((expr=20(math-compose-expr=20(nth=201=20a)=20198))=0A-=09=20=20=20= =20=20=20(calc-language=20'flat)=0A-=09=20=20=20=20=20=20(var=20= (math-compose-expr=20(nth=202=20a)=200))=0A-=09=20=20=20=20=20=20(low=20= (and=20(nth=203=20a)=20(math-compose-expr=20(nth=203=20a)=200)))=0A-=09=20= =20=20=20=20=20(high=20(and=20(nth=204=20a)=20(math-compose-vector=20= (nthcdr=204=20a)=20",=20"=200))))=0A-=09=20(list=20'horiz=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(196=20201))=20"("=20"")=0A-=09=20=20=20= =20=20=20=20(append=20(list=20'vcent=20(if=20high=203=202))=0A-=09=09=20=20= =20=20=20=20=20(and=20high=20(list=20high))=0A-=09=09=20=20=20=20=20=20=20= '("-----=20"=0A-=09=09=09=20"=20|=20|=20=20"=0A-=09=09=09=20"=20|=20|=20=20= "=0A-=09=09=09=20"=20|=20|=20=20")=0A-=09=09=20=20=20=20=20=20=20(if=20= low=0A-=09=09=09=20=20=20(list=20(list=20'horiz=20var=20"=20=3D=20"=20= low))=0A-=09=09=09=20(list=20var)))=0A-=09=20=20=20=20=20=20=20(if=20= (memq=20(car-safe=20(nth=201=20a))=20'(calcFunc-sum=20calcFunc-prod))=0A= -=09=09=20=20=20"=20"=20"")=0A-=09=20=20=20=20=20=20=20expr=0A-=09=20=20=20= =20=20=20=20(if=20(memq=20prec=20'(196=20201))=20")"=20"")))))=0A+=09=20=20= =20=20=20=20(var=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20= ((calc-language=20'flat))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(math-compose-expr=20(nth=202=20a)=200)))=0A+=09=20=20=20=20=20=20= (low=20(and=20(nth=203=20a)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-expr=20(nth=203=20a)=200))))=0A+=09=20=20=20=20=20=20(high=20= (and=20(nth=204=20a)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(let=20((calc-language=20'flat))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (math-compose-vector=20(nthcdr=204=20a)=20",=20"=200))))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(comp=0A+=09=20=20=20=20=20=20=20(list=20= 'horiz=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20(append=20(list=20= 'vcent=20(if=20high=203=202))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20=20= =20(and=20high=20(list=20high))=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20= =20=20'("-----=20"=0A+=09=09=09=20=20=20=20=20=20=20"=20|=20|=20=20"=0A+=09= =09=09=20=20=20=20=20=20=20"=20|=20|=20=20"=0A+=09=09=09=20=20=20=20=20=20= =20"=20|=20|=20=20")=0A+=09=09=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20= low=0A+=09=09=09=20=20=20=20=20=20=20=20=20(list=20(list=20'horiz=20var=20= "=20=3D=20"=20low))=0A+=09=09=09=20=20=20=20=20=20=20(list=20var)))=0A+=09= =20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(memq=20(car-safe=20(nth=20= 1=20a))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20'(calcFunc-sum=20calcFunc-prod))=0A+=09=09=20= =20=20=20=20=20=20=20=20"=20"=20"")=0A+=09=20=20=20=20=20=20=20=20=20=20=20= =20=20expr)))=0A+=20=20=20=20=20=20=20=20=20(if=20(memq=20prec=20'(196=20= 201))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= (math--comp-round-bracket=20comp)=0A+=20=20=20=20=20=20=20=20=20=20=20= comp))))=0A=20=0A=20;;=20The=20variables=20math-svo-c,=20math-svo-wid=20= and=20math-svo-off=20are=20local=0A=20;;=20to=20math-stack-value-offset=20= in=20calc.el,=20but=20are=20used=20by=0A--=20=0A2.21.1=20(Apple=20= Git-122.3)=0A=0A= --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_1629750A-F015-4A05-9F94-904D47744B8E-- ------------=_1611079205-9981-1--