From: Robert Girault <robert@dev.null>
To: help-gnu-emacs@gnu.org
Subject: Re: emacs-"distribution" for windows?
Date: Fri, 27 Jul 2018 14:14:16 -0300 [thread overview]
Message-ID: <pjfjta$5ep$1@gioia.aioe.org> (raw)
In-Reply-To: mailman.4128.1532430814.1292.help-gnu-emacs@gnu.org
On 24/07/2018 08:13, emacs-list-18@pgxml.net wrote:
> Hi,
>
> i need a bit input from emacs users on the windows platform.
>
> What "distribution" do you use? Is the windows emacs from gnu suitable
> for day to day work, or are there more windows-optimized emacs-dists
> out there?
>
> Just tell me a bit about your setup, and what the main tasks you with
> emacs are.
I have to tell you my story. (Like the others, I also use no
distribution. I haven't heard of one yet. I would have loved to have
begun with a distribution, but I never knew of one.)
I was working on a really bad job and my girlfriend was working on her
dissertation. She used a terrible editor called TeXworks and was
suffering dearly. She works in a highly technical area, so I was sure
she would like the GNU EMACS. So I put together the editor plus many
other software that she used. I also wrote code to set it up in a more
personal way. When it was ready, I thought the result was so good that
I began to use it myself every day and realized that Windows happens to
be more adequate than GNU systems for her type (and my type) of work.
I took the binary GNU EMACS from gnu.org.
It had to be portable. She would put it on a USB drive and take it to
other systems and continue to work. So when she'd run the GNU EMACS, it
should know how to find the start-up code without environment variables.
I eventually convinced myself that
site-lisp/site-start.el
is the solution. I'm not a site of various users. It's fine to
consider that my dot-emacs.
But EMACS does need the HOME variable sometimes. So I wrote some code
to discover each time where is the EMACS binary running from. I
eventually convinced myself the variable
command-line-default-directory
is ideal for that.
(if (string= system-type "windows-nt")
(progn
(let ((my-path
(split-string
(expand-file-name command-line-default-directory) "/")))
(setq *my-home-dir*
(mapconcat 'identity
(subseq my-path 0 (- (length my-path) 2))
"/")))
(setq command-line-default-directory *my-home-dir*)
(setenv "HOME" *my-home-dir*)))
(cd *my-home-dir*)
(if (string= system-type "windows-nt")
(setenv "TMPDIR" (concat (file-name-as-directory *my-home-dir*)
(file-name-as-directory "tmp"))))
Having installed MinGW inside the EMACS directory, I also stay away from
Windows command prompt as I think it's mostly useless.
(if (string= system-type "windows-nt")
(setq shell-file-name "~/mingw/msys/1.0/bin/sh.exe"
explicit-shell-file-name "~/mingw/msys/1.0/bin/bash.exe"))
I add various of my programs to the PATH, so I can access them from the
EMACS shell --- ESHELL ---, which is my favorite.
(setq my-list-of-paths
(mapcar (lambda (e)
(concat (file-name-as-directory *my-home-dir*)
(file-name-as-directory e)))
(if (string= system-type "windows-nt")
;; Windows
'(
"miktex/texmfs/install/miktex/bin"
"git" "git/bin" "git/usr/bin"
"bin" ; the emacs bin directory
"ezwinports/bin"
"Racket"
"R/App/R-Portable/bin/i386"
"mingw/bin"
"lua/bin")
;; Other systems
'())))
(if (string= system-type "windows-nt")
(dolist (e my-list-of-paths)
(setenv "PATH" (concat e ";" (getenv "PATH")))))
As it turns out, it's not just PATH that we need. If we use
call-process, for example, we need exec-path too.
(setq exec-path
(append (mapcar 'file-name-as-directory my-list-of-paths)
exec-path))
On Windows, you're on your own, so you must bring your own team.
;; Use this GNU debugger
(when (string= system-type "windows-nt")
(setq gdb-command-name "~/mingw/bin/gdb.exe"))
;; Use this spell checker
(when (string= system-type "windows-nt")
(setq ispell-program-name "~/aspell/bin/aspell.exe"))
;; Use this locate program
(when (string= system-type "windows-nt")
(setq locate-command "~/locate/locate.exe"))
;; Use this diff program
(when (string= system-type "windows-nt")
(setq ediff-diff-program "~/git/usr/bin/diff.exe"))
;; Use this hexl program
(when (string= system-type "windows-nt")
(setq hexl-program "~/bin/hexl.exe"))
;; Use this latex program
(when (string= system-type "windows-nt")
(setq tex-command "~/miktex/miktex/bin/latex.exe"))
Obviously this isn't all the code I run on start up, but it's the one
that's Windows related, so I stop there. I think most of the work is in
finding all the programs that you need. I already mentioned MinGW, but
I also took many programs from ezwinports --- special thanks to Eli
Zaretskii --- and others from other places.
next prev parent reply other threads:[~2018-07-27 17:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.4128.1532430814.1292.help-gnu-emacs@gnu.org>
2018-07-25 6:28 ` emacs-"distribution" for windows? Anssi Saari
2018-07-27 17:14 ` Robert Girault [this message]
2018-07-24 11:13 emacs-list-18
2018-07-24 11:46 ` Tim Visher
2018-07-25 0:43 ` Robert Thorpe
2018-07-25 14:37 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='pjfjta$5ep$1@gioia.aioe.org' \
--to=robert@dev.null \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.