;; eev-on-windows.el - some support for M$ Windows.
;; Copyright (C) 2019 Free Software Foundation, Inc.
;;
;; This file is part of GNU eev.
;;
;; GNU eev is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; GNU eev is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see .
;;
;; Author: Eduardo Ochs
;; Maintainer: Eduardo Ochs
;; Version: 20190627
;; Keywords: e-scripts
;;
;; Latest version:
;; htmlized:
;; See also:
;;
;; (find-eev-intro)
;;; Commentary:
;;
;; Experimental, undocumented, and messy. This is being used in a
;; course on LaTeX and Emacs in which the students are trying to run
;; everything on Windows and I am trying to help them even though I
;; know next to nothing about Windows.
;; «.eev-tar» (to "eev-tar")
;; «.add-to-PATH» (to "add-to-PATH")
;; (find-eev "eev-plinks.el" "find-urlretrieve")
;; (find-es "emacs" "package-untar")
;; (find-es "emacs" "load-path")
;; (find-angg ".emacs.local.w32")
;; (find-angg ".emacs.local.w32" "PATH")
;; «eev-tar» (to ".eev-tar")
;; Use this - with `M-e' in each line - to download a very recent
;; version of eev using only Lisp.
;;
;; (setq eev-tar-dir "~/eev-tar/")
;; (setq eev-tar-fname "~/eev-tar/eev2.tar")
;; (setq eev-tar-url "http://angg.twu.net/eev-current/eev2.tar")
;; (mkdir eev-tar-dir t)
;; (setq eev-tar-contents nil)
;; (setq eev-tar-contents (find-urlretrieve0 eev-tar-url))
;; (length (setq eev-tar-contents (find-urlretrieve0 eev-tar-url)))
;; (write-region eev-tar-contents nil eev-tar-fname)
;;
;; (find-2a nil '(find-fline eev-tar-fname 1 '(tar-untar-buffer)))
;; (eek "C-x o C-x 4 0")
;; (find-2a nil '(find-fline eev-tar-dir nil '(eek "g")))
;;
;; Add something like this to your .emacs:
;;
;; (add-to-list 'load-path "~/eev-tar/")
;;
;; Use these sexps to check if everything is alright:
;;
;; (find-epp load-path)
;; (find-estring (mapconcat 'identity load-path "\n"))
;; (locate-library "eejump")
;; (find-estring (list-load-path-shadows t))
;; «add-to-PATH» (to ".add-to-PATH")
;; (setq mylist '(22 33 44))
;; (add-to-list 'mylist 44)
;;
;; (ee-dospath-add "A;B;C" "B")
;; (ee-dospath-add "A;B;C" "c:/B")
;;
;; (let* ((a 2) (a (* 10 a)) (a (+ 3 a))) a)
;;
;; (find-elnode "Index" "* delete:")
(defun ee-dospath-to-unix (str)
(replace-regexp-in-string "\\\\" "/" str))
(defun ee-dospath-to-dos (str)
(replace-regexp-in-string "/" "\\\\" str))
(defun ee-dospath-split (str)
(split-string str ";"))
(defun ee-dospath-unsplit (list)
(mapconcat 'identity list ";"))
(defun ee-dospath-add (path dir)
(setq dir (ee-dospath-to-dos dir))
(setq path (ee-dospath-to-dos path))
(let* ((list (ee-dospath-split path))
(newlist (cons dir (delete dir list))))
(ee-dospath-unsplit newlist)))
(defun add-to-PATH (dir)
(setenv "PATH" (ee-dospath-add (getenv "PATH") dir)))
;; TODO: Rewrite some of this using:
;; (find-efunctiondescr 'parse-colon-path)
;; (find-efunction 'parse-colon-path)
;; (find-elnode "System Environment" "Variable: path-separator")
;; (find-elnode "System Environment" "Function: parse-colon-path path")
(provide 'eev-on-windows)
;; Local Variables:
;; coding: utf-8-unix
;; no-byte-compile: t
;; End: