* Under development (as of 2024-12-31)

  - Fixes ::

    fix: #177 Infinite loop when saving buffer with transclusions

         Fixing a long-lasting (issue open since March 2023, but it had been an
         known issue before it) issue that was difficult to reproduce.

         The fix is to stop using the text-properties of the transclusion that
         hold markers of beginning and ending points of itself, which is meant
         to remember and indicate its own the location; or the range of "this"
         transclusion at point. The text-properties are named
         `org-transclusion-beg-mkr' and `org-transclusion-end-mkr'. They are
         replaced with use of a new text-property `org-transclusion-id' and
         function `org-transclusion-at-point'. This new function uses
         `prop-match' with `org-transclusion-id' to identify the range of "this"
         transclusion at point only when it is needed, thus eliminating the need
         for memorizing it as a pair of markers.

         Stable reproduction was achieved and recorded in a comment to the GitHub
         issue at
         https://github.com/nobiot/org-transclusion/issues/177#issuecomment-2108453402.

         A quick summary of the design hitherto and how the infinite loop occurs
         is as follows:

         [Fact / design of org-transclusion]

         - Each transclusion has text-properties org-transclusion-beg-mkr and
           org-transclusion-end-mkr.

         - They hold markers to keep track of where the transclusion begins and
           ends.

         [Now what happens]

         - In some combination of undo and buffer-save with transclusions, the
           markers can temporarily point to non-existing locations in the
           buffer.

         - If the garbage collection happens to run at this moment, it will
           sweep these pointers. Now they end up pointing to start of the buffer
           (point 1).

* 1.4.0 (2024-05-20)

  - Features ::

    Transclude content over network protocols like http:// (with
    org-transclusion-http: https://git.sr.ht/ushin/org-transclusion-http) and
    hyper:// (with hyperdrive-org-transclusion:
    https://git.sr.ht/~ushin/hyperdrive-org-transclusion).  Splitting
    org-transclusion-add into two parts enables functions in
    org-transclusion-add-functions to be asynchronous.

    - chg: #213 Allow making transclusion links from any protocol link
    - refactor: #209 Split -add-payload from -add to enable async transclusion

    add :things-at-point (or :thingatpt) property for transcluding
    source and other non-org text files. Both property names are synonym
    with each other and work in the same way.

    add org-block-live-sync

    - Command 'org-transclusion-live-sync-start' now can start live sync
      when

      1) transcluding a source code text file
      2) into org src block with the ':src' property in #+transclude

      Example: #+transclude: [[python-1.py]]  :src python

    add org-transclusion-detach

    - New command 'org-transclusion-detach' can be used on the
      transclusion at point. It turns it into a normal, edtitable text
      content.

      You can undo this operation.

      In addition, you can press 'C-d' directly on the transclusion at
      point to detach it. This is because the command is bound to 'C-d'
      by default in 'org-transclusion-map'.

    - 'org-transclusion-refresh' now accepts universal argument such as
      'C-u M-x org-transclusion-refresh' and detaches the transclusion
      at point.

      You can undo this operation.

    - 'org-transclusion-add' now accepts universal argument such as 'C-u
      M-x org-transclusion-add' and copies the source content rather
      than transclude it.

      You can undo this operation.

    - Limitation: Undo detach does not add the overlay back on the
      source. This should not break any feature. You can safely refresh
      the transclusion and recover the source overlay. You can also
      safely open or moved to the source.

  - Fixes

    fix: #212 org-transclusion-make-from-link should not add
         transclusion link in next org heading

    fix: #211 Don't ever prompt to create a headline when transcluding

    docs: #210 Update docstring for org-transclusion-with-inhibit-read-only

    fix(src-lines): #219 Use end-pos in org-transclusion-content-range-of-lines

    fix(src-lines): #192 error when :thing-at-point nil

    fix: #174 add faces back org-transclusion and org-transclusion-source

* 1.3.2

  - fix: Delete superfluous trailing space on remove

    Before the fix, function 'org-transclusion-keyword-plist-to-string'
    would add a superfluous trailing space when converting #+transclude
    keyword's properties back to the string. This does not cause any
    harm in normal circumstances.

    The issue would occur with a rare combination of the case where:

    + You have a buffer with a large number of transclusions activated,
      around 50 or more

    + You set a 'whitespace-cleanup' in 'before-save' hook

    + You have 'auto-save-visited-mode' or similar that automatically
      saves a buffer

    If you had combination, and then saved the buffer with the
    transclusions, you might get an error mid-way of the save operation.
    You would not lose any data in the buffer, but the buffer would not
    re-activate all the transclusions that had been active before
    buffer-save.

    This was because of the superfluous trailing spaces and automatic
    removal of them, which caused the mismatch of the point of each
    transclusion that Org-transclusion remembered during the save
    operation.

* Version 1.3.1

  - build: fix #154 missing org-transclusion-pkg.el

    Nix requires -pkg.el. It was in ‘.elpaignore’. No functional change.

* Version 1.3.0

  - Feature ::

    - add: #145 a new property and filter to expand links to absolute
      file names (Org only) use :expand-links per transclusion

  - Fix ::

    - fix: #131. For non-Org files, now the transcluded text respects
      the indent level of the #+transclude keyword. This does not affect
      Org files.

* Version 1.2.0

  - Feature ::

    - add: org-transclusion-after-add-hook

  - Fix ::

    - fix: org-transclusion-map now inherits org-mode-map (thanks to
      ag91 [1])

    - fix: reverting 252ec675; shouldn't remove the extra space at the
           end of transclusions from Org

    - fix: #115 allow adding #+name, etc. before #+transclude keyword
           (don't remove affiliated keywords when
           org-transclusoin-remove)

* Version 1.1.1

  - Fix ::

    - Fix rare but destructive issue where buffer text content could be
      deleted by removing a transclusion. This could happen by killing a
      second Emacs instance (batch or online) or buffer, while the first
      Emacs keeps transclusions added

  - Other:

    - User Manual now refers to v1.1.x

* Version 1.1.0

  - Change ::

    - add:inhibit-read-only: fix:Org export errors with read-only With
      this, noweb expansion works now (limitation removed)

  - Fix ::

    - fix:#105 org-element--cache issue for Org v9.6 Remove use of
      silent-modificaiton & inhibit-modification-hook - fix:add-all not
      to stop with error in one trasclusion - fix:Remove extra
      space/line added to Org elements transcluded

  - Other ::
    - README, Info doc user manual, online user manual

* Version 1.0.1

  - Add .elpaignore
  - Bump up version only to enable ELPA; no functional changes

* Version 1.0.0

  - Initial version available on ELPA (https://elpa.gnu.org/)

  - Feature ::

    - =:end= property and a search term to dynamically define a range of
      lines to transclude for text and source code block

  - Change ::

    - Now user option =org-transclusion-include-first-section='s default value
      is changed to =t=. This seems to be more intuitive for more users

  - Fix ::

    - =org-transclusion-before-kill= now checks if the buffer to be
      killed contains any transclusion AND it is visting a file before
      saving. This fixes some issues related to temp buffers, etc.

    - fix: search options for src-lines extension for =:lines=, =:src=,
      and =:end= properties

† Changes before Version 1.0.0 are in CHANGELOG file.
