From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Arthur Miller Newsgroups: gmane.emacs.devel Subject: Re: Q: Invisible text spec + define minor mode macro Date: Wed, 21 Apr 2021 19:19:25 +0200 Message-ID: References: <83eef4q9or.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24698"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (windows-nt) Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Apr 21 19:21:18 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lZGXM-0006Fw-SE for ged-emacs-devel@m.gmane-mx.org; Wed, 21 Apr 2021 19:21:16 +0200 Original-Received: from localhost ([::1]:52830 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lZGXL-00063j-UT for ged-emacs-devel@m.gmane-mx.org; Wed, 21 Apr 2021 13:21:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46078) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lZGVn-0005Jm-9L for emacs-devel@gnu.org; Wed, 21 Apr 2021 13:19:39 -0400 Original-Received: from mail-oln040092066061.outbound.protection.outlook.com ([40.92.66.61]:6151 helo=EUR01-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lZGVk-0003K8-9E; Wed, 21 Apr 2021 13:19:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IlxOEj36vzzOKA2cOOXlhYPXXB7g/reHsLpNiaCks7p2+M2FTpatRaE2beyg+1l0Vqh+qFmo2Lc8jSzqX9tkETUGIlM+PQrMymK9CSA5UTJqdFAeFdTqVGL/rKZVE6blTsWmTh4DArEJHIw0ziqbPCLF6V57dJD9jm16sGF3rR4wG6GWMeJD6GGjS5D+nQNL9Zkp6rTykPnXvKd27BXGdZyLT2JG1KCLx89lKbZL9wbGQigtrAMkny9pyuHtnT3F9tvid1HYf26Y8kE5Ij+oC/90hEAGh+f7foiwh6aylrKzBqpHnCVWHiNcu/vjCp3w/k18QY4dx8cKkuEKKuWcBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DmwXwYJUWGdb+Q6BRy6zzcGgDDoKtE0RurGtzukM5RA=; b=lFJphPyLUMHjD3CCCMJuy/kx/r7s7VlA3l6hTLXkdJ4ULNsFDDGJuylZZ2nmxX6hFCn7iA70FQaqlM9ULXna63uAfquJ/wqiGlCQJ76bTbLK8iEhRXknODvTgxKUTJMq/bPOoFzNW2r3f+PCvZ6vAGyIREKVOXkVV9odozR+Ux8wEnKw1KOpn+6r3FkBF6rDM1N1Uzd9bUjj+QJ1PmM/kPqKylvRQufOKdrWFjcJ4w7zX1xIgCWd8NQZm3E9ig8Sx/Nr31ekqCuPCGNTsUEAMsPzvbZkN6CgoLE4JoBU/8GddjUx7CYrwodrJm71aR/TeomJ+9VSfYiq5+5zwAHsJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DmwXwYJUWGdb+Q6BRy6zzcGgDDoKtE0RurGtzukM5RA=; b=fzs+dhRk6+IRQJQiNQvMgBG7FE/l7WR3qy51gXVYNTQag3j5W7/j0x9cWYaYqO9hDpbI0fPzLvt7UqsUqUxI4OscR73CrACuzlwL9Xgt8vLdU4zehXAPWcDo/EOmECPweucLqjuujWeV29tUSB5Lz/QXv0elaWyoHIfFhdCq7yYnn0BO2k0AAuYL4pUS1p6qK6mGcEA5zdWC7nmBBve3umWso+yC96UCJ07yjBPXzeoVd/SrIgGVeWniAXBkTGFmmTJ+dSDXIONn8tPRxMGjlrE6pWfyHNE0XIQVJ6kIkyn0bntwxBpuXNNncSW85IZho+MiZRkIRyQE0/Pc7fu7Iw== Original-Received: from HE1EUR01FT043.eop-EUR01.prod.protection.outlook.com (2a01:111:e400:7e18::46) by HE1EUR01HT136.eop-EUR01.prod.protection.outlook.com (2a01:111:e400:7e18::260) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 21 Apr 2021 17:19:28 +0000 Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com (2a01:111:e400:7e18::42) by HE1EUR01FT043.mail.protection.outlook.com (2a01:111:e400:7e18::207) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Wed, 21 Apr 2021 17:19:28 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:8B2E3DF019B2FD86F4414C454729850A057D1C4703F771A92465F617DCA59C86; UpperCasedChecksum:744E82B80E5B26B8D3BA3F63DAF8997829700E96EB9B4190960B708725257316; SizeAsReceived:8621; Count:46 Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::2103:e705:bc0c:5a8b]) by AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::2103:e705:bc0c:5a8b%6]) with mapi id 15.20.4042.024; Wed, 21 Apr 2021 17:19:28 +0000 In-Reply-To: <83eef4q9or.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 21 Apr 2021 12:16:36 +0300") X-TMN: [sk3Rq0jMssZcKw7KkwoNEVfgzQNL+Cc1] X-ClientProxiedBy: AM5PR0601CA0032.eurprd06.prod.outlook.com (2603:10a6:203:68::18) To AM9PR09MB4977.eurprd09.prod.outlook.com (2603:10a6:20b:304::20) X-Microsoft-Original-Message-ID: <82v98fwo6a.fsf@live.com> X-MS-Exchange-MessageSentRepresentingType: 1 Original-Received: from HP-Laptop.homepc (81.232.177.30) by AM5PR0601CA0032.eurprd06.prod.outlook.com (2603:10a6:203:68::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Wed, 21 Apr 2021 17:19:27 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: fe918022-238a-417c-94d5-08d904e99e2f X-MS-TrafficTypeDiagnostic: HE1EUR01HT136: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EP4YfNOnGoxMOjTmXR2IhNawzp8mLW41i4U30XXhZ/UhnFgpPE+VHWBV0Q9cJ8mBHnG1uBIb68ZbSjwPVZq1VqqCc/HeCk91cUpmgD4dFeexDeTA1XHm1A6l2JgiiFHyy41ZQYP1chnmqiB37bBiqL3bTBiPuq0ml4a1B5/gHCpiI30f+Dj9XdwMVayQtZEiNqdXJBV9CcTKsMucUPHepKEPybnmOuN48KN2gTe9sMP2LlMcf1aIsY+kJEAAUF9KftNq9UnSeirupJJOZTZ/G7bH7dc5LTKKAEEnWJytO390QW591+TbnQQM9bXijpvCY/iinyiCERDUvOYm1Ysy07mHmkBVYiJPxxzALHaLL7EqWDLuo6yJLLgDA2NA6/UysOlry4+sr45BqaXdKB7baw== X-MS-Exchange-AntiSpam-MessageData: /RxNzDOyw4/xqK5mI+2jQ3fCVROHEIW4QX9O4oPOtwNTo2SjTUFQWRPvZsgp4nRk1GAuiWgd6spnnoXnKvrVTlvbdPhEwOOnTSqxClZmvOczgYyGdMta8x7sci6stwltEDlmbJtSx/PwCeoogoz9nQ== X-OriginatorOrg: live.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe918022-238a-417c-94d5-08d904e99e2f X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2021 17:19:28.4076 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: HE1EUR01FT043.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR01HT136 Received-SPF: pass client-ip=40.92.66.61; envelope-from=arthur.miller@live.com; helo=EUR01-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:268241 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii writes: >> From: Arthur Miller >> Date: Wed, 21 Apr 2021 10:04:17 +0200 >>=20 >> I am not sure what is going on here. I have this minor mode defined, >> as shown yesterday, where I just iterate through a buffer and try to >> make certain lines invisible. >>=20 >> It seems that visibility property updates only for about 2 ~ 3 pages of >> text. When I bring text into visible portion of screen and re-run the >> mode, it is updated as it should. Does it have to do something with how >> invisible text is rendered? > > In general, text being invisible or not has nothing to do with > rendering it, it only has to do with the exact form of the invisible > property and buffer's invisibility spec. After playing a bit more: if I scroll through entire file before I enable my mode, then entire file is processed correctly. But if file is not scrolled through, then only 3=C2=BD screen pages are processed. Has nothing to do with regex I use, just with text being shown on screen or not. I don't find anything in docs about that. A bug? Or undocumented behaviour? Or something else I am missing here?=20 --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=ob-hide-markers.el Content-Transfer-Encoding: quoted-printable ;;; ob-hide-markers.el --- Hide or-babel source code markers. -*- lexical-= binding: t; -*-=0D =0D ;; Copyright (C) 2021 Arthur Miller=0D =0D ;; Author: Arthur Miller =0D ;; Keywords: convenience, outlines, tools=0D =0D ;; This program is free software; you can redistribute it and/or modify=0D ;; it under the terms of the GNU General Public License as published by=0D ;; the Free Software Foundation, either version 3 of the License, or=0D ;; (at your option) any later version.=0D =0D ;; This program is distributed in the hope that it will be useful,=0D ;; but WITHOUT ANY WARRANTY; without even the implied warranty of=0D ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the=0D ;; GNU General Public License for more details.=0D =0D ;; You should have received a copy of the GNU General Public License=0D ;; along with this program. If not, see .= =0D =0D ;;; Commentary:=0D =0D ;; A minor mode to help reduce clutter in org-babel code blocks by=0D ;; hiding/unhiding markers for source code blocks in org-mode.=0D ;;=0D ;; To hide all markers turn on org-hbm-mode by=0D ;;=0D ;; `M-x org-hbm-mode.'=0D ;;=0D ;; To turn it off execute same command.=0D ;;=0D ;; The mode provides two additional interactive commands.=0D ;;=0D ;; Use `hbm-refresh' if you add new code blocks, copy-paste etc.=0D ;;=0D ;; Alternatively it is possible to turn on/off markers for an individual so= urce=0D ;; code by executing `M-x hbm-toggle-current-block'. It does not require=0D ;; org-hbm-mode to be on, but you will have to call it again to make marker= s=0D ;; visible again.=0D ;;=0D ;; It is possible to somewhat control the appereance of org-file by customi= zing=0D ;; the `orh-hbm-hide-marker-line' variable. When this variable is nil, mark= ers=0D ;; will be invisible but the newline character will be left visible resulti= ng in=0D ;; somewhat "fluffier" appereance. Whan the value is set to `t' even newlin= e=0D ;; character will be hidden resulting in more dense and compact code. That = might=0D ;; not be for everyone, so sett it to your own preference. It is `nil' by= =0D ;; default.=0D =0D ;;; Code:=0D (defcustom org-babel-hide-markers-line nil=0D "If value of this variable is `t', org-hbm mode vill hide also line on wh= ich=0D source code block markers are, otherwise only markers are hidden leaving = an=0D empty line."=0D :group 'org-babel=0D :tag "Org Babel Hide Source Block Markers Line")=0D =0D (defvar hbm--mode-on nil)=0D (defvar hbm--src-end-re "^[ \t]*#\\+end_src")=0D (defvar hbm--src-beg-re "^[ \t]*#\\+begin_src")=0D =0D (defun hbm--update-line (visible)=0D (let ((beg (if org-babel-hide-markers-line=0D (1- (line-beginning-position))=0D (line-beginning-position)))=0D (end (line-end-position)))=0D (put-text-property beg end 'invisible visible)))=0D =0D (defun hbm--update-markers (visible)=0D (save-excursion=0D (goto-char (point-min))=0D (with-silent-modifications=0D (while (not (eobp))=0D (beginning-of-line)=0D (if (re-search-forward hbm--src-beg-re (line-end-position) t)=0D (hbm--update-line visible)=0D (progn=0D (beginning-of-line)=0D (if (re-search-forward hbm--src-end-re (line-end-position) t)= =0D (hbm--update-line visible))))=0D (forward-line))=0D (setq hbm--mode-on visible))))=0D =0D ;;;###autoload=0D (define-minor-mode org-babel-hide-markers-mode=0D "Hide/show babel source code blocks on demand."=0D :lighter " OB Hmm"=0D (unless (derived-mode-p 'org-mode)=0D (error "Not in org-mode."))=0D (cond (org-babel-hide-markers-mode=0D (unless hbm--mode-on=0D (hbm--update-markers t)))=0D (t=0D (when hbm--mode-on=0D (hbm--update-markers nil)))))=0D =0D (provide 'ob-hide-markers)=0D =0D ;;; ob-hide-markers.el ends here=0D --=-=-= Content-Type: text/x-org Content-Disposition: attachment; filename=test.org * Test ** Block 1 #+begin_src emacs-lisp #+end_src ** Block 2 #+begin_src emacs-lisp #+end_src ** Block 3 #+begin_src emacs-lisp #+end_src ** Block 4 #+begin_src emacs-lisp #+end_src ** Block 5 #+begin_src emacs-lisp #+end_src ** Block 6 #+begin_src emacs-lisp #+end_src ** Block 7 #+begin_src emacs-lisp #+end_src ** Block 8 #+begin_src emacs-lisp #+end_src ** Block 9 #+begin_src emacs-lisp #+end_src ** Block 10 #+begin_src emacs-lisp #+end_src ** Block 11 #+begin_src emacs-lisp #+end_src ** Block 12 #+begin_src emacs-lisp #+end_src ** Block 13 #+begin_src emacs-lisp #+end_src ** Block 14 #+begin_src emacs-lisp #+end_src ** Block 15 #+begin_src emacs-lisp #+end_src ** Block 16 #+begin_src emacs-lisp #+end_src ** Block 17 #+begin_src emacs-lisp #+end_src ** Block 18 #+begin_src emacs-lisp #+end_src ** Block 19 #+begin_src emacs-lisp #+end_src ** Block 20 #+begin_src emacs-lisp #+end_src ** Block 21 #+begin_src emacs-lisp #+end_src ** Block 22 #+begin_src emacs-lisp #+end_src ** Block 23 #+begin_src emacs-lisp #+end_src ** Block 24 #+begin_src emacs-lisp #+end_src ** Block 25 #+begin_src emacs-lisp #+end_src ** Block 26 #+begin_src emacs-lisp #+end_src ** Block 27 #+begin_src emacs-lisp #+end_src ** Block 28 #+begin_src emacs-lisp #+end_src ** Block 29 #+begin_src emacs-lisp #+end_src ** Block 30 #+begin_src emacs-lisp #+end_src ** Block 31 #+begin_src emacs-lisp #+end_src ** Block 32 #+begin_src emacs-lisp #+end_src ** Block 33 #+begin_src emacs-lisp #+end_src ** Block 34 #+begin_src emacs-lisp #+end_src ** Block 35 #+begin_src emacs-lisp #+end_src ** Block 36 #+begin_src emacs-lisp #+end_src ** Block 37 #+begin_src emacs-lisp #+end_src ** Block 38 #+begin_src emacs-lisp #+end_src ** Block 39 #+begin_src emacs-lisp #+end_src ** Block 40 #+begin_src emacs-lisp #+end_src ** Block 41 #+begin_src emacs-lisp #+end_src ** Block 42 #+begin_src emacs-lisp #+end_src ** Block 43 #+begin_src emacs-lisp #+end_src ** Block 44 #+begin_src emacs-lisp #+end_src ** Block 45 #+begin_src emacs-lisp #+end_src ** Block 46 #+begin_src emacs-lisp #+end_src ** Block 47 #+begin_src emacs-lisp #+end_src ** Block 48 #+begin_src emacs-lisp #+end_src ** Block 49 #+begin_src emacs-lisp #+end_src ** Block 50 #+begin_src emacs-lisp #+end_src ** Block 51 #+begin_src emacs-lisp #+end_src ** Block 52 #+begin_src emacs-lisp #+end_src ** Block 53 #+begin_src emacs-lisp #+end_src ** Block 54 #+begin_src emacs-lisp #+end_src ** Block 55 #+begin_src emacs-lisp #+end_src ** Block 56 #+begin_src emacs-lisp #+end_src ** Block 57 #+begin_src emacs-lisp #+end_src ** Block 58 #+begin_src emacs-lisp #+end_src ** Block 59 #+begin_src emacs-lisp #+end_src ** Block 60 #+begin_src emacs-lisp #+end_src ** Block 61 #+begin_src emacs-lisp #+end_src ** Block 62 #+begin_src emacs-lisp #+end_src ** Block 63 #+begin_src emacs-lisp #+end_src ** Block 64 #+begin_src emacs-lisp #+end_src ** Block 65 #+begin_src emacs-lisp #+end_src ** Block 66 #+begin_src emacs-lisp #+end_src ** Block 67 #+begin_src emacs-lisp #+end_src ** Block 68 #+begin_src emacs-lisp #+end_src ** Block 69 #+begin_src emacs-lisp #+end_src ** Block 70 #+begin_src emacs-lisp #+end_src ** Block 71 #+begin_src emacs-lisp #+end_src ** Block 72 #+begin_src emacs-lisp #+end_src ** Block 73 #+begin_src emacs-lisp #+end_src ** Block 74 #+begin_src emacs-lisp #+end_src ** Block 75 #+begin_src emacs-lisp #+end_src ** Block 76 #+begin_src emacs-lisp #+end_src ** Block 77 #+begin_src emacs-lisp #+end_src ** Block 78 #+begin_src emacs-lisp #+end_src ** Block 79 #+begin_src emacs-lisp #+end_src ** Block 80 #+begin_src emacs-lisp #+end_src ** Block 81 #+begin_src emacs-lisp #+end_src ** Block 82 #+begin_src emacs-lisp #+end_src ** Block 83 #+begin_src emacs-lisp #+end_src ** Block 84 #+begin_src emacs-lisp #+end_src ** Block 85 #+begin_src emacs-lisp #+end_src ** Block 86 #+begin_src emacs-lisp #+end_src ** Block 87 #+begin_src emacs-lisp #+end_src ** Block 88 #+begin_src emacs-lisp #+end_src ** Block 89 #+begin_src emacs-lisp #+end_src ** Block 90 #+begin_src emacs-lisp #+end_src ** Block 91 #+begin_src emacs-lisp #+end_src ** Block 92 #+begin_src emacs-lisp #+end_src ** Block 93 #+begin_src emacs-lisp #+end_src ** Block 94 #+begin_src emacs-lisp #+end_src ** Block 95 #+begin_src emacs-lisp #+end_src ** Block 96 #+begin_src emacs-lisp #+end_src ** Block 97 #+begin_src emacs-lisp #+end_src ** Block 98 #+begin_src emacs-lisp #+end_src ** Block 99 #+begin_src emacs-lisp #+end_src ** Block 100 #+begin_src emacs-lisp #+end_src ** Block 101 #+begin_src emacs-lisp #+end_src ** Block 102 #+begin_src emacs-lisp #+end_src ** Block 103 #+begin_src emacs-lisp #+end_src ** Block 104 #+begin_src emacs-lisp #+end_src ** Block 105 #+begin_src emacs-lisp #+end_src ** Block 106 #+begin_src emacs-lisp #+end_src ** Block 107 #+begin_src emacs-lisp #+end_src ** Block 108 #+begin_src emacs-lisp #+end_src ** Block 109 #+begin_src emacs-lisp #+end_src ** Block 110 #+begin_src emacs-lisp #+end_src ** Block 111 #+begin_src emacs-lisp #+end_src ** Block 112 #+begin_src emacs-lisp #+end_src ** Block 113 #+begin_src emacs-lisp #+end_src ** Block 114 #+begin_src emacs-lisp #+end_src ** Block 115 #+begin_src emacs-lisp #+end_src ** Block 116 #+begin_src emacs-lisp #+end_src ** Block 117 #+begin_src emacs-lisp #+end_src ** Block 118 #+begin_src emacs-lisp #+end_src ** Block 119 #+begin_src emacs-lisp #+end_src ** Block 120 #+begin_src emacs-lisp #+end_src ** Block 121 #+begin_src emacs-lisp #+end_src ** Block 122 #+begin_src emacs-lisp #+end_src ** Block 123 #+begin_src emacs-lisp #+end_src ** Block 124 #+begin_src emacs-lisp #+end_src ** Block 125 #+begin_src emacs-lisp #+end_src ** Block 126 #+begin_src emacs-lisp #+end_src ** Block 127 #+begin_src emacs-lisp #+end_src ** Block 128 #+begin_src emacs-lisp #+end_src ** Block 129 #+begin_src emacs-lisp #+end_src ** Block 130 #+begin_src emacs-lisp #+end_src ** Block 131 #+begin_src emacs-lisp #+end_src ** Block 132 #+begin_src emacs-lisp #+end_src ** Block 133 #+begin_src emacs-lisp #+end_src ** Block 134 #+begin_src emacs-lisp #+end_src ** Block 135 #+begin_src emacs-lisp #+end_src ** Block 136 #+begin_src emacs-lisp #+end_src ** Block 137 #+begin_src emacs-lisp #+end_src ** Block 138 #+begin_src emacs-lisp #+end_src ** Block 139 #+begin_src emacs-lisp #+end_src ** Block 140 #+begin_src emacs-lisp #+end_src ** Block 141 #+begin_src emacs-lisp #+end_src ** Block 142 #+begin_src emacs-lisp #+end_src ** Block 143 #+begin_src emacs-lisp #+end_src ** Block 144 #+begin_src emacs-lisp #+end_src ** Block 145 #+begin_src emacs-lisp #+end_src ** Block 146 #+begin_src emacs-lisp #+end_src ** Block 147 #+begin_src emacs-lisp #+end_src ** Block 148 #+begin_src emacs-lisp #+end_src ** Block 149 #+begin_src emacs-lisp #+end_src ** Block 150 #+begin_src emacs-lisp #+end_src ** Block 151 #+begin_src emacs-lisp #+end_src ** Block 152 #+begin_src emacs-lisp #+end_src ** Block 153 #+begin_src emacs-lisp #+end_src ** Block 154 #+begin_src emacs-lisp #+end_src ** Block 155 #+begin_src emacs-lisp #+end_src ** Block 156 #+begin_src emacs-lisp #+end_src ** Block 157 #+begin_src emacs-lisp #+end_src ** Block 158 #+begin_src emacs-lisp #+end_src ** Block 159 #+begin_src emacs-lisp #+end_src ** Block 160 #+begin_src emacs-lisp #+end_src ** Block 161 #+begin_src emacs-lisp #+end_src ** Block 162 #+begin_src emacs-lisp #+end_src ** Block 163 #+begin_src emacs-lisp #+end_src ** Block 164 #+begin_src emacs-lisp #+end_src ** Block 165 #+begin_src emacs-lisp #+end_src ** Block 166 #+begin_src emacs-lisp #+end_src ** Block 167 #+begin_src emacs-lisp #+end_src ** Block 168 #+begin_src emacs-lisp #+end_src ** Block 169 #+begin_src emacs-lisp #+end_src ** Block 170 #+begin_src emacs-lisp #+end_src ** Block 171 #+begin_src emacs-lisp #+end_src ** Block 172 #+begin_src emacs-lisp #+end_src ** Block 173 #+begin_src emacs-lisp #+end_src ** Block 174 #+begin_src emacs-lisp #+end_src ** Block 175 #+begin_src emacs-lisp #+end_src ** Block 176 #+begin_src emacs-lisp #+end_src ** Block 177 #+begin_src emacs-lisp #+end_src ** Block 178 #+begin_src emacs-lisp #+end_src ** Block 179 #+begin_src emacs-lisp #+end_src ** Block 180 #+begin_src emacs-lisp #+end_src ** Block 181 #+begin_src emacs-lisp #+end_src ** Block 182 #+begin_src emacs-lisp #+end_src ** Block 183 #+begin_src emacs-lisp #+end_src ** Block 184 #+begin_src emacs-lisp #+end_src ** Block 185 #+begin_src emacs-lisp #+end_src ** Block 186 #+begin_src emacs-lisp #+end_src ** Block 187 #+begin_src emacs-lisp #+end_src ** Block 188 #+begin_src emacs-lisp #+end_src ** Block 189 #+begin_src emacs-lisp #+end_src ** Block 190 #+begin_src emacs-lisp #+end_src ** Block 191 #+begin_src emacs-lisp #+end_src ** Block 192 #+begin_src emacs-lisp #+end_src ** Block 193 #+begin_src emacs-lisp #+end_src ** Block 194 #+begin_src emacs-lisp #+end_src ** Block 195 #+begin_src emacs-lisp #+end_src ** Block 196 #+begin_src emacs-lisp #+end_src ** Block 197 #+begin_src emacs-lisp #+end_src ** Block 198 #+begin_src emacs-lisp #+end_src ** Block 199 #+begin_src emacs-lisp #+end_src ** Block 200 #+begin_src emacs-lisp #+end_src --=-=-=--