[PATCH] Emacsy buffer.scm: remove other-buffer, rename next-buffer to other-buffer --text follows this line-

2019-06-23 Thread Amar Singh
---
 emacsy/buffer.scm | 8 ++--
 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/emacsy/buffer.scm b/emacsy/buffer.scm
index 804a929..f998ed2 100644
--- a/emacsy/buffer.scm
+++ b/emacsy/buffer.scm
@@ -174,13 +174,13 @@
   (mru-remove! buffer-stack buffer))
 ;;.
-(define-interactive (next-buffer #:optional (incr 1))
+(define-interactive (other-buffer #:optional (incr 1))
   (mru-next! buffer-stack incr)
   (switch-to-buffer (mru-ref buffer-stack)))
 ;;.
 (define-interactive (prev-buffer #:optional (incr 1))
-  (next-buffer (- incr)))
+  (other-buffer (- incr)))
 ;;.
 (define-public (set-buffer! buffer)
@@ -194,10 +194,6 @@
 (define-interactive (kill-buffer #:optional (buffer (current-buffer)))
   (remove-buffer! buffer))
-;;.
-(define-interactive (other-buffer #:optional (count 1))
-  (next-buffer count))
-
 ;;; This is our primitive procedure for switching buffers.  It does not
 ;;; handle any user interaction.
 (define (primitive-switch-to-buffer buffer)
-- 
2.22.0

Re: [PATCH] Emacsy buffer.scm: remove other-buffer, rename next-buffer to other-buffer --text follows this line-

2019-06-23 Thread Jan Nieuwenhuizen
Amar Singh writes:

Hi!

Thank for the patch.

> -(define-interactive (next-buffer #:optional (incr 1))
> +(define-interactive (other-buffer #:optional (incr 1))
>(mru-next! buffer-stack incr)
>(switch-to-buffer (mru-ref buffer-stack)))

This needs more thought.  Although I observed this behaviour, I had a
look at test/mru-stack.scm; that seems to assert `next-buffer' is OK.
So, hmm?  I'm guessing that something else is going on and this function
is fine after all.  In any case, let's write a failing test first.

> -;;.
> -(define-interactive (other-buffer #:optional (count 1))
> -  (next-buffer count))
> -

Also, we really want to provide other-buffer *and* next buffer; they
need to work of course.

janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | AvatarĀ® http://AvatarAcademy.com



[PATCH 1-3/3] Emacsy, mru-next and next-buffer have opp semantics

2019-06-23 Thread Amar Singh

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))
 
 ;;.
@@ -

Re: [PATCH 1-3/3] Emacsy, mru-next and next-buffer have opp semantics

2019-06-23 Thread Jan Nieuwenhuizen
Amar Singh writes:

> 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

That's nice, we may consider adding this into a test -- this email will
be forgotten.

Applied, thank!

> prev-buffer has next-buffer semantics and vice versa, due to what
> mru-next! considers next.

Good.

> 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.

Nice, applied.

> C. Patch: use #:export form instead of define*-public forms
> Have the API in one place at the top of the file

Applied, thank.

Greetings,
janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | AvatarĀ® http://AvatarAcademy.com