emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: aplus mode


From: Rustom Mody
Subject: Re: aplus mode
Date: Tue, 14 Aug 2012 13:01:04 +0530



On Sat, Aug 11, 2012 at 3:27 AM, Stefan Monnier <address@hidden> wrote:
> Aplus (a gnu/linux APL variant) has been one of the languages that
> runs only on XEmacs but not GNU-Emacs.  Recently XEmacs has been
> giving some trouble compiling under Debian (it seems).
> I have hacked up something which makes Aplus run with GNU-Emacs:
> http://www.emacswiki.org/emacs/AplInDebian
> Is this a suitable forum for discussions towards cleaning up that code?

Sure.  Especially if you intend to include it in GNU ELPA.
Since Markus has already signed the needed copyright paperwork,
and it doesn't look like the code has seen many external contributions,
inclusion in GNU ELPA should be fairly easy.

As for cleaning up the code, I suggest you start by defining a major
mode for APL code.  See sample-mode.el for an example.
This mode would most likely enable the apl input method by default.

Ive defined inferior-apl-mode by copying from cmu-scheme like this:

(define-derived-mode inferior-apl-mode comint-mode "Inferior APL" ....

and then removing most of the stuff to keep it still working.

The current version at http://www.emacswiki.org/emacs/inferior-apl.el
is a still further cleaned up and cut-down version.
Of course the mode-ly stuff should be cleaned up -- I dont understand the scoping rules for buffer-local variables.

I think however that there are more immediate questions before that.

The code was up there on the wiki and working as best as I knew until someone informed me that it was not.  The immediate hack I found was that starting emacs with
LANG=C makes it again work.  Evidently when the OS moved from defaulting to latin-1 to utf-8 this broke.

Trying to make an 'inside-emacs' version of the same hack I discovered that the following does the trick of removing the need for LANG=C.

(setq coding-system-for-write 'iso-latin-1)
(setq coding-system-for-read 'iso-latin-1)

Obviously this is not a proper solution.
Firstly these variables should not be globally assigned.  Whats the best way of scoping these assignments or should some other variables be used I am not sure.

The second point is that iso-latin-1 just works by saying so-to-speak "Not-UTF" but it is obviously wrong.

So in short: How do I say "latinish" without saying latin-1.  And where (scope) to say it?

Perhaps the best solution would be to define a new Aplus charset. 
The tables are already there in Markus code.  Maybe just some tying some ends together required?  Any pointers/docs on how one goes about converting a restricted-charset-to-unicode data-table into an emacs charset?

Thanks

Rusi



reply via email to

[Prev in Thread] Current Thread [Next in Thread]