A. Patch: swap prev-buffer <--> next-buffer
Steps to reproduce issue:
;; 1. load emacsy buffers without the fix.
(load "buffer.scm")
;; 2. imagine these are tabs opened in order
(map add-buffer! '(peace satan hell))
;; 3. manually verify that we have these buffers
(buffer-list) ;; (hell satan peace)
;; 4. current buffer should be 'hell
(current-buffer) ;; -> hell
(prev-buffer) ;; -> peace
(next-buffer) ;; -> satan
prev-buffer has next-buffer semantics and vice versa, due to what
mru-next! considers next.
B. Patch: add procedures buffer-next! buffer-prev!
Also, the procedures buffer-next! and buffer-previous! have been added
so that these can be used from a repl without the emacsy gui running.
C. Patch: use #:export form instead of define*-public forms
Have the API in one place at the top of the file
>From dbc53ceba04573678c211035b1a8df82d58a0f52 Mon Sep 17 00:00:00 2001
From: Amar Singh
Date: Sun, 23 Jun 2019 23:45:06 +0530
Subject: [PATCH 1/3] cleanup buffer.scm: export using #:export keyword
---
emacsy/buffer.scm | 69 +++
1 file changed, 46 insertions(+), 23 deletions(-)
diff --git a/emacsy/buffer.scm b/emacsy/buffer.scm
index 804a929..beeddf1 100644
--- a/emacsy/buffer.scm
+++ b/emacsy/buffer.scm
@@ -28,7 +28,30 @@
#:use-module (emacsy keymap)
#:use-module (emacsy command)
#:use-module (emacsy klecl)
- #:use-module (emacsy mode))
+ #:use-module (emacsy mode)
+ #:export (next-buffer
+prev-buffer
+with-buffer
+save-excursion
+
+buffer-stack
+last-buffer
+aux-buffer
+buffer-name
+buffer-name
+set-buffer-name!
+buffer-modified?
+buffer-modified-tick
+current-local-map
+use-local-map
+buffer-list
+current-buffer
+add-buffer!
+remove-buffer!
+set-buffer!
+switch-to-buffer
+local-var
+emacsy-mode-line))
;;; Commentary:
@@ -52,7 +75,7 @@
;; A convenience macro to work with a given buffer.
;; @end defmac
;;.
-(define-syntax-public with-buffer
+(define-syntax with-buffer
(syntax-rules ()
((with-buffer buffer e ...)
(let ((old-buffer (current-buffer))
@@ -66,7 +89,7 @@
;; A convenience macro to do some work
;; @end defmac
;;.
-(define-syntax-public save-excursion
+(define-syntax save-excursion
(syntax-rules ()
((save-excursion body ...)
(let ((old-buffer (current-buffer))
@@ -82,7 +105,7 @@
(goto-char old-point)))
;;.
-(define-class-public ()
+(define-class ()
(name #:init-keyword #:name)
(file-name #:accessor buffer-file-name #:init-form #f #:init-keyword #:buffer-file-name)
(keymap #:accessor local-keymap #:init-keyword #:keymap #:init-form (make-keymap))
@@ -104,39 +127,39 @@
;;; one.
;;.
-(define-public buffer-stack (make ))
+(define buffer-stack (make ))
;;.
-(define-public last-buffer #f)
+(define last-buffer #f)
;;.
-(define-public aux-buffer #f)
+(define aux-buffer #f)
;; Buffer's have a name, and there is always a current buffer or it's
;; false. Note that methods do not work as easily with optional
;; arguments. It seems best to define each method with a different
;; number of arguments as shown below.
-(define-method-public (buffer-name)
+(define-method (buffer-name)
(buffer-name (current-buffer)))
;;.
-(define-method-public (buffer-name (buffer ))
+(define-method (buffer-name (buffer ))
(slot-ref buffer 'name))
;;.
-(define-method-public (set-buffer-name! name)
+(define-method (set-buffer-name! name)
(set-buffer-name! name (current-buffer)))
;;.
-(define-method-public (set-buffer-name! name (buffer ))
+(define-method (set-buffer-name! name (buffer ))
(slot-set! buffer 'name name))
;;.
-(define-method-public (buffer-modified?)
+(define-method (buffer-modified?)
(buffer-modified? (current-buffer)))
;;.
-(define-method-public (buffer-modified-tick)
+(define-method (buffer-modified-tick)
(buffer-modified-tick (current-buffer)))
;;.
@@ -147,30 +170,30 @@
;; @subsection Emacs Compatibility
;;.
-(define-public (current-local-map)
+(define (current-local-map)
(local-keymap (current-buffer)))
;;.
-(define-public (use-local-map keymap)
+(define (use-local-map keymap)
(set! (local-keymap (current-buffer)) keymap))
;;.
-(define-public (buffer-list)
+(define (buffer-list)
(mru-list buffer-stack))
;;.
-(define-public (current-buffer)
+(define (current-buffer)
;; Perhaps instead of returning #f for no buffer there should be an
;; immutable void-buffer class.
(or aux-buffer
(mru-ref buffer-stack)))
;;.
-(define-public (add-buffer! buffer)
+(define (add-buffer! buffer)
(mru-add! buffer-stack buffer))
;;.
-(define-public (remove-buffer! buffer)
+(define (remove-buffer! buffer)
(mru-remove! buffer-stack buffer))
;;.
@@ -