From a9ea489f7ba457906ba10875a0bc580c03cf3a53 Mon Sep 17 00:00:00 2001
From: gabrielhdt <gabrielhondet@gmail.com>
Date: Wed, 4 Mar 2020 14:32:41 +0100
Subject: [PATCH] notes on abbreviations and ignoring log-lsp

---
 .gitignore |  2 ++
 README.md  | 42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/.gitignore b/.gitignore
index 50f8e6f..ee3593b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 # Ignore generated top files
 top.lp
+log-lp.txt
+log-lsp.txt
diff --git a/README.md b/README.md
index 6582caf..c28a43b 100644
--- a/README.md
+++ b/README.md
@@ -7,3 +7,45 @@ Use with `lambdapi`.
 - `prelude` contains parts of the PVS prelude
 - `adlib` contains additional libraries not in the prelude
 - `sandbox` contains miscellaneous experiments
+- `tools` contains some additional scripts and utilities
+
+## Emacs abbreviations
+The `.dir-locals.el` activates the `abbrev-mode` when opening a Dedukti file,
+and calls a `set-local-abbrevs` function.
+
+The
+[`abbrev-mode`](https://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html)
+is used to expand some defined character sequences into longer words.
+The typical example is to expand `btw` to `by the way`.
+The function `set-local-abbrevs` is not built in emacs and 
+allows to define abbreviation locally to a loaded file, 
+otherwise, abbreviations would be saved and activated for all
+Dedukti buffers. The function takes as argument a list of abbreviations.
+
+The code of `set-local-abbrevs` comes from
+<https://stackoverflow.com/questions/21836527/abbrev-local-to-document-in-emacs>
+``` emacs-lisp
+(defun set-local-abbrevs (abbrevs)
+    "Add ABBREVS to `local-abbrev-table' and make it buffer local.
+     ABBREVS should be a list of abbrevs as passed to `define-abbrev-table'.
+     The `local-abbrev-table' will be replaced by a copy with the new 
+     abbrevs added, so that it is not the same as the abbrev table used
+     in other buffers with the same `major-mode'."
+    (let* ((bufname (buffer-name))
+           (prefix (substring (md5 bufname) 0 (length bufname)))
+           (tblsym (intern (concat prefix "-abbrev-table"))))
+      (set tblsym (copy-abbrev-table local-abbrev-table))
+      (dolist (abbrev abbrevs)
+          (define-abbrev (eval tblsym)
+            (car abbrev)
+            (cadr abbrev)
+            (caddr abbrev)))
+    (setq-local local-abbrev-table (eval tblsym))))
+```
+
+And we define the following abbreviations,
+|----------|---|
+| subtype  | ⊑ |
+| upcast   | ↑ |
+| downcast | ↓ |
+|----------|---|
-- 
GitLab