|
Installing Emacs and eev on M$ Windows
0. Introduction
I work in a big federal university in Brazil, but in a small campus in
the countryside that has just six courses - two STEM and four non-STEM.
I usually teach Calculus 2 and 3 to the students of Computer Science and
Production Engineering, but surprisingly, and depressingly, we can count
on the fingers of one hand the students that have enough interest in
programming to be willing to try GNU/Linux and "exotic" languages.
In the first semester of 2024 I started to repeat many many times in my
classes that learning even the basics of Maxima could give them - the
students - lots of important insights and save them a lot of time, and
three students (out of 60) became somewhat interested in trying Emacs,
eev and Maxima. One of them suggested using WSL - "Windows Subsystem
for Linux" - instead of my previous method, that used this:
(find-wconfig-links)
(find-1stclassvideo-links "2022eevwconfig")
(find-1stclassvideo-links "2022eevwconfigpt1")
(find-1stclassvideo-links "2022eevwconfigpt2")
and we are now testing this new set of instructions.
Note: _This is a work in progress!!!_
1. Install WSL, Debian, and Emacs
The complete instructions are here:
https://learn.microsoft.com/en-us/windows/wsl/install
https://learn.microsoft.com/en-us/windows/wsl/basic-commands
Here is the short version. Run PowerShell as an administrator with:
Start -> W -> Windows PowerShell [right click] -> Run as administrator
and inside the PowerShell window run these commands:
wsl -l -v
wsl --install Debian
I usually run this instead, with an extra "wsl --unregister Debian" in
the middle to delete the Debian image that I created in a previous test:
wsl -l -v
wsl --unregister Debian
wsl --install Debian
After the command "wsl --install Debian" finishes it will ask you for
a username and a password; people usually choose short usernames in
lowercase letters, like "edrx", "caiop" or "gabriel".
After setting the user and password you will get a Unix prompt. Then you
need to run this
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y emacs
to install Emacs; what you will see, including the prompts and messages,
will be something like this:
edrx@Acer-PC: $ sudo apt-get update
[Password for edrx]:
(...)
edrx@Acer-PC: $ sudo apt-get upgrade -y
(...)
edrx@Acer-PC: $ sudo apt-get install -y emacs
(...)
edrx@Acer-PC: $
Note that sometimes sudo asks for a password, and sometimes it doesn't.
Then run "emacs &" to start Emacs - i.e.:
edrx@Acer-PC: $ emacs &
If you don't mind typing a bit more, run this instead of "emacs &":
emacs -fg bisque -bg black -fn 6x13 &
Here are the meaning of the extra options:
"-fg bisque": use bisque as the foreground color
"-bg black": use black as the background color
"-fn 6x13": use "6x13", a font that is small but very readable
Bisque is a kind of beige.
2. Install eev
The instructions - in Portuguese - are here:
http://anggtwu.net/2024-emacs-windows.html#eev
Type `M-x find-windows-beginner-intro' to open this intro.
3. Use eepitch to add a Debian repository
Eepitch is explained here:
http://anggtwu.net/eepitch.html
Run the eepitch block below by typing <f8> on each line, starting by the
first line with a red star. The line with the "sudo" will ask for a
password in the minibuffer (at the bottom of the screen).
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
echo '
# Edrx:
deb http://deb.debian.org/debian/ bookworm contrib non-free
' | sudo tee -a /etc/apt/sources.list
**
** Lines with two red stars are comments.
** If you need to edit /etc/apt/sources.list by hand, use:
** (find-fline "/sudo:root@localhost:/etc/apt/sources.list")
4. Use eepitch to install Debian packages
Run the eepitch block below:
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y emacs-el emacs-common-non-dfsg
sudo apt-get install -y wget curl
sudo apt-get install -y mpv
sudo apt-get install -y xterm xpdf poppler-utils
sudo apt-get install -y gcl gcl-doc
sudo apt-get install -y sbcl sbcl-doc sbcl-source
sudo apt-get install -y maxima maxima-doc maxima-share gnuplot
sudo apt-get install -y lua5.1 lua5.1-dev lua5.1-doc
sudo apt-get install -y lua5.2 lua5.2-dev lua5.2-doc
sudo apt-get install -y lua5.3 lua5.3-dev
sudo apt-get install -y lua5.4 lua5.4-dev
sudo apt-get install -y lua-lpeg lua-lpeg-dev
sudo apt-get install -y dict dictd dict-foldoc dict-gcide dict-jargon dict-vera dict-wn
sudo apt-get install -y unicode-data
sudo apt-get install -y python3 python3-doc
sudo apt-get install -y tkdiff
sudo apt-get install -y yt-dlp
sudo apt-get install -y dctrl-tools
sudo apt-get install -y lynx
sudo apt-get install -y git
5. Use eepitch to install Google Chrome
Run the eepitch block below by typing <f8> on each line.
Note the comments about errors...
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
wget -N https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
#
# The "dpkg -i" below will give lots of errors:
sudo dpkg -i google-chrome-stable_current_amd64.deb
#
# The "apt-get install -y -f" below will fix the errors:
sudo apt-get install -y -f
6. Learn the basics of Emacs and eev
The best way to learn the basics is to start by copying this
section to your ~/TODO file. This is explained in these pages:
http://anggtwu.net/2024-first-executable-notes.html
http://anggtwu.net/2024-restructuring.html
The "basics" are these sections of the main tutorial,
(find-eev-quick-intro "2. Evaluating Lisp")
(find-eev-quick-intro "3. Elisp hyperlinks")
(find-eev-quick-intro "3.1. Non-elisp hyperlinks")
the two main keys of eev, that are `M-e' and `M-j',
the hints in the header of `M-j',
copying and pasting, that is explained here:
Menu bar -> Edit -> Cut (C-w)
Menu bar -> Edit -> Copy (M-w)
Menu bar -> Edit -> Paste (C-y)
(find-eev-quick-intro "5.2. Cutting and pasting")
(find-emacs-keys-intro "3. Cutting & pasting")
this method for saving elisp hyperlinks to intros and info pages,
(find-kl-here-intro "2. Try it!")
(find-kl-here-intro "3. Info")
(find-eev-quick-intro "5. Links to Emacs documentation")
(find-eev-quick-intro "5.1. Navigating the Emacs manuals")
the Emacs keys that are explained in these sections,
(find-emacs-keys-intro "4. Moving point")
(find-emacs-keys-intro "5. Undoing")
(find-emacs-keys-intro "6. Windows")
(find-emacs-keys-intro "7. Files and buffers")
these sections with more on eepitch,
(find-eev-quick-intro "6.1. The main key: <F8>")
(find-eev-quick-intro "6.2. Other targets")
(find-eev-quick-intro "6.3. Creating eepitch blocks: `M-T'")
and these sections on anchors and short hyperlinks:
(find-eev-quick-intro "8.1. Introduction: `to'")
(find-eev-quick-intro "9. Shorter hyperlinks")
(find-eev-quick-intro "9.1. `code-c-d'")
(find-eev-quick-intro "9.2. Extra arguments to `code-c-d'")
(find-pdf-like-intro)
(find-psne-intro)
7. Test Maxima
Here is a basic test of Maxima. The eepitch block below will define
three functions in Maxima and then plot two of them using an external
program - GnuPlot - that uses an external window. Type `q' on the
GnuPlot window to close it.
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
max(2, 4);
min(2, 4);
q(t) := max(0, t-2);
r(t) := min(q(t), 2);
S(x,y) := max(r(x), r(y));
plot2d (r(t), [t, 0, 6]);
plot3d (S(x,y), [x, 0, 6], [y, 0, 6]);
8. Test Maxima with find-wget
This sexp
(find-angg-es-links)
displays a temporary buffer with instructions for configuring certain
elisp hyperlinks functions to make them use `find-wget'. Run the second
progn block in it with `M-e', run this `code-c-d' to define
`find-maximanode',
(code-c-d "maxima" "/usr/share/maxima/5.47.0/" "maxima")
and then try:
(find-es "maxima" "eev-demo")
Compare with:
(find-2022findeevangghsubs "15:14" "run this eepitch-maxima (again)")
(find-2022findeevanggvideo "15:14" "run this eepitch-maxima (again)")
9. Videos
This sexp
(1c)
displays a list of all the "first-class videos" of eev. For example,
this video
(find-1stclassvideo-links "2022findeevangg")
explains the trick with `(find-angg-es-links)' of the previous section.
Try to understand what each of the elisp hyperlinks below does:
Play: (find-2022findeevanggvideo "10:54")
HSubs: (find-2022findeevangghsubs "10:54")
Index: (find-1stclassvideo-index "2022findeevangg")
Info: (find-1stclassvideo-links "2022findeevangg")
This sexp
(find-2022findeevanggvideo "10:54" "Let me now show something else.")
plays the local copy of the video if we have a local copy, or shows us a
temporary buffer with a script that lets us download a local copy. But
sometimes we just want to read the subtitles of the video; read this
(find-strange-functions-intro "1. Introduction: videos")
to see a way to convert:
(find-2022findeevanggvideo "10:54" "Let me now show something else.")
to: (find-2022findeevangghsubs "10:54" "Let me now show something else.")
10. Learn Lisp
See:
(find-elisp-intro)
(find-elisp-intro "M-7 M-j")
(find-eev-quick-intro "4. Creating Elisp Hyperlinks")
(find-eev-quick-intro "4.2. `find-ekey-links' and friends")
11. Edit your init file
See:
http://anggtwu.net/2024-find-dot-emacs-links.html
(find-dot-emacs-links)
12. Install qdraw
Qdraw is an extension of the default drawing functions
that come with Maxima. It is explained here:
https://home.csulb.edu/~woollett/
https://home.csulb.edu/~woollett/mbe13.html
https://home.csulb.edu/~woollett/mbe13qdraw.pdf
The easiest way to install qdraw is by running this
eepitch block,
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
wget -N http://anggtwu.net/tmp/edrx-maxima.tgz
tar -C ~/ -xvzf /tmp/edrx-maxima.tgz
that also installs my init file for Maxima and lots of
small programs that I wrote. Note that the "tar -xvzf"
above extracts the files from this .tgz file
(find-fline "/tmp/edrx-maxima.tgz")
into these three directories:
(find-fline "~/.maxima/")
(find-fline "~/MAXIMA/")
(find-fline "~/luatree/")
Here are some tests for qdraw:
(find-qdraw-links "x,x^2,x^3,x^4" "-2,2" "-2,2")
(find-es "maxima" "2024.1-intro-complex")
13. An editable HELP
Run this sexp:
(defun h () (interactive) (find-2a nil '(find-fline "~/HELP")))
It defines a function called `h', that displays the file ~/HELP in the
window at the right, and makes that function a command, in this sense:
(find-elnode "Using Interactive")
HOMEWORK: try to understand each part of the `defun' above.
Here are some hints.
1. You will need to learn how to use `M-h M-f' well:
(find-eev-quick-intro "4.2. `find-ekey-links' and friends" "M-h M-f")
2. You will need to understand several sections of this intro:
(find-elisp-intro)
3. The "'" is the hardest part. It is explained here:
(find-elisp-intro "3. `quote'")
4. `M-x h' is similar to `M-2 M-1 M-j' and `M-3 M-1 M-j' - but the
`(defun h ...)' above needs an `(interactive)', and these defuns
(find-eejumps "eejump-21")
(find-eejumps "eejump-31")
do not. Why?
[Unfinished!]
|