git clone 'git://github.com/phillord/lentic.git'

Tawny Logo

Lentic allows two buffers to share the same or similar content but otherwise operate independently. This can be used for several different purposes. Different buffers can be in the same mode, with different locations of point, even different text sizes – in effect, providing multiple persistent views.

It is also possible to have the different lentic buffers in different modes, giving a form of multi-modal editing. Switching buffers effectively switches modes as well.

While the content of two lentic buffers must be related, it does not need to be syntactically identical. This allows it to be used for a form of literate programming – for example, one buffer may contain valid LaTeX source with blocks of Lisp, while in the other the LaTeX source is commented out, giving an entirely valid Lisp file. The lentic documentation is self-hosting – the source code contains all of the documentation written in Org-mode. It can be generated and viewed using the menu items (Edit→Lentic→Read Doc), or it can be viewed at http://homepages.cs.ncl.ac.uk/phillip.lord/lentic/lenticular.html. Getting Started documentation is available.

As well as the core library, this package also contains various syntactic transformations, and a minor-mode for manipulating lentic buffers from a user perspective.

Previously, lentic was known as linked-buffer.


I welcome contributions to lentic. I would like to contribute lentic to ELPA or the Emacs core in the future, so would prefer that contributors has completed the relevant paperwork with the FSF.



This release is large a bug fix release, including a missing require, handling of delimiters in strings, and more consistent widening.

This also includes one significant breaking change, which is that “lentic-block” has been renamed “lentic-chunk”. The latter is more consistent with other peoples usage (polymode for instance), but also because “block” is better used in the context of block vs line comments.


This release introduces one new feature: unmatched-block buffers. These are forms of buffer where the start and end of blocks are not matched. They have been introduced mainly to support org-mode files which can support multiple embedded source languages, all of which share the same close tag.


This release introduces two new features. First, it is now possible to have multiple lentic buffers. This is important because lentic has more than one use – both for maintaining two syntactic views (for example for literate programming) and for maintaining two identical persistent views (for example, for editing a file in two places at once). It's now possible to do both of these at the same time. Specific support has been added for views in lentic-mode. This necessitates a change to the return value of lentic-clone to enable the percolation of changes between several buffers. In this default usage of two lentic buffers this will have no effect.

Second, the documentation system introduced in 0.7 has been made generic and can be used to generate and display documentation for any package which supports it. The m-buffer package (which is a dependency) is an example of this.

New Features

Known Issues

Breaking Changes


New Features

Breaking Changes

lentic-start-mode has now gone, and been combined with lentic-mode. A new global-lentic-mode has been introduced which you should use instead.

Bug Fix


Bug Fix


The main feature of this release is that changes percolation now happens incrementally, so only those parts of the buffer are updated. As a result, lentic now cope with long files with little noticable delay.

The files in the package have been re-organised. All the user interaction code is now in lentic-mode.el, meaning that lentic can be used as a library if required. Development code is now in lentic-dev.el.

This package has now been renamed from linked-buffer to lentic.

Finally, the documentation in this package is now self-hosting, using orgel comments. See lentic-org.el for further details.



Bug Fix


Some bug fixes and asciidoc→clojure support added.


This release is mainly a bug fix of 0.2, but also includes support for delayed cloning.


First addition of linked-buffer-delayed.el enabling buffer cloning in the idle thread.

Bug Fixes

A typo in linked-buffer-block.el prevented it from working. This has now been fixed.


The configuration system has been totally written using EIEIO objects which should scale better into the future.