
Tamgucalc: A spreadsheet in character mode with Lisp formulas - clauderoux
https://github.com/naver/tamgu/wiki/tamgucalc-(en)
======
joseph8th
Cool project for sure, but it does provoke the obligatory Emacs org-mode as a
spreadsheet plug. [1]

I use it often, mostly for my D&D character sheet, but occasionally for work.

Works the same in terminal or GUI, with elisp formula evaluation (including
Emacs calc functions), column types, table relationships, and, with org-babel,
access to other languages and their libraries (for plotting, etc.) Can even
read from DB into an org table and then manipulate data and write back.

[1] [https://orgmode.org/worg/org-tutorials/org-spreadsheet-
intro...](https://orgmode.org/worg/org-tutorials/org-spreadsheet-intro.html)

~~~
clauderoux
Of course, you are right. However, tamgucalc launches instantly in your
terminal, which is not always the case for emacs, which is sometimes a bit to
slow.

~~~
joseph8th
Not so. Emacsen run server-client. Instantaneous.

------
smabie
At first glance, it seems like Lisp is inappropriate for spreadsheets: the
syntax is simply too verbose and heavy. But cool project, I've always wanted
to make a terminal spreadsheet app. Maybe with some custom APL-like language.
Now that would be cool!

~~~
artsyca
I may disagree with what you have to say, but I shall defend, to the death,
your right to say it.

\--

Ok all drama aside I can't help feeling like LISP is the best language you
could have in this context because it's verbose, unambiguous, highly
encapsulated and old school not to mention hardcore.

Anyone using a spreadsheet in emacs would be well versed in this sort of
paradigm and I personally love lisp because it's how we cut our teeth in
functional programming in university.

Not to mention it's perfectly suited to list processing..

~~~
clauderoux
I fully agree with you. When you see how cumbersome Excel formulas can be when
you want to mix different operators together, with their "(",";" and so on and
so forth. I wonder how you can say that Lisp is too verbose for this task.

------
ComputerGuru
Seems interesting. I was curious about how mouse support was retrofitted into
the app but discovered that the commit messages are unfortunately absolutely
useless for seeing recent changes. They’re all “update xxx.cpp” or just “bug”
[sic].

~~~
clauderoux
please accept my apologies, I should be more verbose in my comments. The whole
implementation is in tamgusys.cxx. See inmouse and outmouse for more details.
Basically, inmouse activates the mouse catching events, which are sent through
getchar. Once, the mouse has been activated, you can use some primitives
mouedown1 our mouseup, which takes as input the string returned by getchar and
returns the x,y coordinates

~~~
ComputerGuru
No worries, thanks for taking the time to explain! I find commit messages help
“future me” more than anyone else, I never regret the time it takes to flesh
them out (and tend to regret when I don’t).

~~~
clauderoux
Actually, I have another private GitHub, where I do most of my experiments and
which is bit more informative. When my code executes, I then push it on the
official one, hence the lack of comments.

~~~
clauderoux
By the way, I have updated tamgusys.h to integrate mouse support in Windows
consoles...

------
e12e
Interesting. On a somewhat related note, I wonder how much work it would be to
port scheme in a grid to racket, or somehow get it working on modern
distros/os' (it's been abandoned for a while, and uses a ui toolkit that's
been abandoned too):

[http://siag.nu/siag/](http://siag.nu/siag/)

~~~
inetsee
The ftp link on the front page for the sources is unresponsive (at least on
Firefox). The sources can be found at
[http://siag.nu/pub/siag/](http://siag.nu/pub/siag/)

~~~
e12e
Right, for the adventurous - I did manage to build it at one time or another -
possibly on Debian 4 or 5 or so.

Part of the problem is libXawM (Athena widgets):

[http://siag.nu/pub/siag/binaries/linux/siag-
ldd](http://siag.nu/pub/siag/binaries/linux/siag-ldd)

I'm not sure if libXawM is a variant of libXaw or an extension... But
apparently libXaw lives at:

[https://gitlab.freedesktop.org/xorg/lib/libxaw](https://gitlab.freedesktop.org/xorg/lib/libxaw)

