emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@posteo.net>
To: "Fraga, Eric" <e.fraga@ucl.ac.uk>
Cc: Emacs Org mode mailing list <emacs-orgmode@gnu.org>
Subject: [PATCH] Re: [feature request] startup variable for link display
Date: Fri, 22 Dec 2023 12:07:29 +0000	[thread overview]
Message-ID: <87a5q2l9tq.fsf@localhost> (raw)
In-Reply-To: <87bkst1nfl.fsf@ucl.ac.uk>

[-- Attachment #1: Type: text/plain, Size: 569 bytes --]

"Fraga, Eric" <e.fraga@ucl.ac.uk> writes:

> Assuming I have not missed something, is there a variable I can set on
> visiting an org buffer/file that ensures that links are displayed fully?
>
> Once I've loaded an org file, I can
>
>    M-x org-toggle-link-display RET.
>
> but I would like certain files to start up with links displayed.
>
> If not already possible, it would be nice to either set a file local
> variable or have, say:
>
> #+startup: displaylinks

I went with

#+startup: showlinks
and
#+startup: compresslinks

See the attached patch.
Please test.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Allow-per-buffer-setting-of-org-link-descriptive-via.patch --]
[-- Type: text/x-patch, Size: 5542 bytes --]

From f180be291a81062a5c6344876c172282969d4c66 Mon Sep 17 00:00:00 2001
Message-ID: <f180be291a81062a5c6344876c172282969d4c66.1703246765.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Fri, 22 Dec 2023 13:04:04 +0100
Subject: [PATCH] Allow per-buffer setting of org-link-descriptive via
 #+STARTUP options

* lisp/org.el (org-startup-options): Add new startup options to set
`org-link-descriptive'.
(org-mode): Move #+startup keyword parsing before setting up link
visibility.
* doc/org-manual.org (Link Format):
(Summary of In-Buffer Settings): Document the new startup option.
* etc/ORG-NEWS (~org-link-descriptive~ can now be set per-buffer via
=#+STARTUP= options): Announce the new feature.

Link: https://orgmode.org/list/87bkst1nfl.fsf@ucl.ac.uk
---
 doc/org-manual.org | 14 +++++++++++++-
 etc/ORG-NEWS       |  8 ++++++++
 lisp/org.el        | 24 +++++++++++++-----------
 3 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/doc/org-manual.org b/doc/org-manual.org
index cfa59ec37..da9d8c837 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -3172,7 +3172,8 @@ ** Link Format
 incomplete and the internals are again displayed as plain text.
 Inserting the missing bracket hides the link internals again.  To show
 the internal structure of all links, use the menu: Org \rarr
-Hyperlinks \rarr Literal links.
+Hyperlinks \rarr Literal links, customize ~org-link-descriptive~, or use
+=showlinks= [[*Summary of In-Buffer Settings][startup option]].
 
 ** Internal Links
 :PROPERTIES:
@@ -20229,6 +20230,17 @@ ** Summary of In-Buffer Settings
   | =inlineimages=   | Show inline images.                   |
   | =noinlineimages= | Do not show inline images on startup. |
 
+  #+vindex: org-link-descriptive
+  Bracket links in Org buffers are displayed hiding the link path and
+  brackets.  For example, =[[https://orgmode.org][Org Website]]= is,
+  by default, displayed as "Org Website", hiding the link itself and
+  just displaying its description.  Alternatively, the links can be
+  displayed in full.  The corresponding variable is
+  ~org-link-descriptive~.
+
+  | =compresslinks= | Hide path and brackets in links. |
+  | =showlinks=     | Do not hide anything.            |
+
   #+vindex: org-log-done
   #+vindex: org-log-note-clock-out
   #+vindex: org-log-repeat
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 6c81221c1..9b3f83705 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -362,6 +362,14 @@ The change is breaking when ~org-use-property-inheritance~ is set to ~t~.
 
 The =TEST= parameter is better served by Emacs debugging tools.
 ** New and changed options
+*** ~org-link-descriptive~ can now be set per-buffer via =#+STARTUP= options
+
+In addition to ~org-link-descriptive~ custom option, link display can
+now be controlled per-buffer as:
+
+: #+STARTUP: showlinks
+: #+STARTUP: compresslinks
+
 *** New variable ~org-clock-out-removed-last-clock~
 
 The variable is intended to be used by ~org-clock-out-hook~.  It is a
diff --git a/lisp/org.el b/lisp/org.el
index 6e6e075b4..7f7bc3000 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4061,6 +4061,8 @@ (defconst org-startup-options
     ("align" org-startup-align-all-tables t)
     ("noalign" org-startup-align-all-tables nil)
     ("shrink" org-startup-shrink-all-tables t)
+    ("compresslinks" org-link-descriptive t)
+    ("showlinks" org-link-descriptive nil)
     ("inlineimages" org-startup-with-inline-images t)
     ("noinlineimages" org-startup-with-inline-images nil)
     ("latexpreview" org-startup-with-latex-preview t)
@@ -4847,6 +4849,17 @@ (define-derived-mode org-mode outline-mode "Org"
   (org-load-modules-maybe)
   (when org-agenda-file-menu-enabled
     (org-install-agenda-files-menu))
+  (setq-local outline-regexp org-outline-regexp)
+  (setq-local outline-level 'org-outline-level)
+  ;; Initialize cache.
+  (org-element-cache-reset)
+  (when (and org-element-cache-persistent
+             org-element-use-cache)
+    (org-persist-load
+     `((elisp org-element--cache) (version ,org-element-cache-version))
+     (current-buffer)
+     'match-hash :read-related t))
+  (org-set-regexps-and-options)
   (when (and org-link-descriptive
              (eq org-fold-core-style 'overlays))
     (add-to-invisibility-spec '(org-link)))
@@ -4857,8 +4870,6 @@ (define-derived-mode org-mode outline-mode "Org"
   (if org-link-descriptive
       (org-fold-core-set-folding-spec-property (car org-link--link-folding-spec) :visible nil)
     (org-fold-core-set-folding-spec-property (car org-link--link-folding-spec) :visible t))
-  (setq-local outline-regexp org-outline-regexp)
-  (setq-local outline-level 'org-outline-level)
   (when (and (stringp org-ellipsis) (not (equal "" org-ellipsis)))
     (unless org-display-table
       (setq org-display-table (make-display-table)))
@@ -4867,15 +4878,6 @@ (define-derived-mode org-mode outline-mode "Org"
      (vconcat (mapcar (lambda (c) (make-glyph-code c 'org-ellipsis))
 		      org-ellipsis)))
     (setq buffer-display-table org-display-table))
-  ;; Initialize cache.
-  (org-element-cache-reset)
-  (when (and org-element-cache-persistent
-             org-element-use-cache)
-    (org-persist-load
-     `((elisp org-element--cache) (version ,org-element-cache-version))
-     (current-buffer)
-     'match-hash :read-related t))
-  (org-set-regexps-and-options)
   (org-set-font-lock-defaults)
   (when (and org-tag-faces (not org-tags-special-faces-re))
     ;; tag faces set outside customize.... force initialization.
-- 
2.42.0


[-- Attachment #3: Type: text/plain, Size: 224 bytes --]


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

  parent reply	other threads:[~2023-12-22 12:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-09 14:50 [feature request] startup variable for link display Fraga, Eric
2022-08-09 15:21 ` Max Nikulin
2022-08-09 15:46   ` Fraga, Eric
2022-08-09 16:31     ` Max Nikulin
2022-08-09 17:03       ` Fraga, Eric
2023-12-22 12:07 ` Ihor Radchenko [this message]
2023-12-22 16:06   ` [PATCH] " Rudolf Adamkovič
2023-12-22 16:14     ` Ihor Radchenko
2024-01-22 13:03   ` Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a5q2l9tq.fsf@localhost \
    --to=yantar92@posteo.net \
    --cc=e.fraga@ucl.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).