Add new command 'eat-compile-terminfo'
* eat.el (eat-compile-terminfo): New command. * eat.texi (Hello Terminal): Refer to 'Common Problems'. * eat.texi (Common Problems): Add instructions to compile Terminfo databases with 'eat-compile-terminfo'.
This commit is contained in:
parent
26d83d04c1
commit
eab01e693b
3 changed files with 56 additions and 10 deletions
2
Makefile
2
Makefile
|
@ -38,7 +38,7 @@ pdf: eat.pdf
|
||||||
terminfo: eat.ti
|
terminfo: eat.ti
|
||||||
test -d terminfo || mkdir terminfo
|
test -d terminfo || mkdir terminfo
|
||||||
env TERMINFO=./terminfo $(TIC) -x eat.ti
|
env TERMINFO=./terminfo $(TIC) -x eat.ti
|
||||||
# We don't know which directory was created, it depend on the
|
# We don't know which directory was created, it depends on the
|
||||||
# case-sensitivity of the file-system. So make sure both are created.
|
# case-sensitivity of the file-system. So make sure both are created.
|
||||||
test -d terminfo/e || mkdir terminfo/e
|
test -d terminfo/e || mkdir terminfo/e
|
||||||
test -d terminfo/65 || mkdir terminfo/65
|
test -d terminfo/65 || mkdir terminfo/65
|
||||||
|
|
34
eat.el
34
eat.el
|
@ -6636,6 +6636,40 @@ N defaults to 1. Interactively, N is the prefix argument."
|
||||||
"]"))
|
"]"))
|
||||||
(add-hook 'kill-buffer-hook #'eat-trace--cleanup nil t))
|
(add-hook 'kill-buffer-hook #'eat-trace--cleanup nil t))
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Miscellaneous.
|
||||||
|
|
||||||
|
(defun eat-compile-terminfo ()
|
||||||
|
"Compile terminfo databases of Eat."
|
||||||
|
(interactive)
|
||||||
|
;; Check for required files and programs.
|
||||||
|
(let ((source-path (expand-file-name "eat.ti" eat--install-path))
|
||||||
|
(tic-path (executable-find "tic")))
|
||||||
|
(unless (file-exists-p source-path)
|
||||||
|
(error "Eat not installed properly: %s"
|
||||||
|
"Terminfo source file not found"))
|
||||||
|
(unless tic-path
|
||||||
|
(error "Terminfo compiler `tic' not found"))
|
||||||
|
(message "Compiling terminfo databases...")
|
||||||
|
;; Compile.
|
||||||
|
(let* ((command (format "env TERMINFO=\"%s\" %s -x %s"
|
||||||
|
eat-term-terminfo-directory tic-path
|
||||||
|
source-path))
|
||||||
|
(status
|
||||||
|
(with-temp-buffer
|
||||||
|
(make-directory eat-term-terminfo-directory 'parents)
|
||||||
|
(let ((proc (start-process-shell-command
|
||||||
|
"eat-terminfo-compile"
|
||||||
|
(current-buffer) command)))
|
||||||
|
(while (process-live-p proc)
|
||||||
|
(sleep-for 0.02))
|
||||||
|
(process-exit-status proc)))))
|
||||||
|
(if (= status 0)
|
||||||
|
(message "Compiling terminfo databases...done")
|
||||||
|
(message "Compiling terminfo databases...error")
|
||||||
|
(error "Command `%s' exited with non-zero exit code %i"
|
||||||
|
command status)))))
|
||||||
|
|
||||||
|
|
||||||
;;;; Footer.
|
;;;; Footer.
|
||||||
|
|
||||||
|
|
30
eat.texi
30
eat.texi
|
@ -121,7 +121,8 @@ terminal and run the default shell
|
||||||
(@pxref{Interactive Shell,,, emacs, GNU Emacs Manual}) in it. You
|
(@pxref{Interactive Shell,,, emacs, GNU Emacs Manual}) in it. You
|
||||||
should get a shell prompt and be able to write shell commands and
|
should get a shell prompt and be able to write shell commands and
|
||||||
execute them. Full screen programs like @samp{htop}, @samp{lynx} and
|
execute them. Full screen programs like @samp{htop}, @samp{lynx} and
|
||||||
Emacs will work inside it, just like other any other terminal.
|
Emacs will work inside it, just like other any other terminal. (If
|
||||||
|
the terminal doesn't work as expected, @pxref{Common Problems}.)
|
||||||
|
|
||||||
If an Eat terminal already exists, @kbd{M-x eat} will switch to it.
|
If an Eat terminal already exists, @kbd{M-x eat} will switch to it.
|
||||||
To create a new terminal, call it with a prefix argument like this,
|
To create a new terminal, call it with a prefix argument like this,
|
||||||
|
@ -939,22 +940,33 @@ Eat does something unexpected, such as hangs, garbled text, etc.
|
||||||
@section Terminal Not Recognized
|
@section Terminal Not Recognized
|
||||||
|
|
||||||
If your program says that it can't recognize the terminal, probably
|
If your program says that it can't recognize the terminal, probably
|
||||||
the @env{TERM} environment has a wrong value.
|
the @env{TERM} environment variable has a wrong value.
|
||||||
|
|
||||||
|
@vindex eat-term-name
|
||||||
Check the value of @env{TERM}, if it's not set to something like
|
Check the value of @env{TERM}, if it's not set to something like
|
||||||
@samp{eat-...}, check the user option @code{eat-term-name}. If that's
|
@samp{eat-...}, check the user option @code{eat-term-name}. If that's
|
||||||
correct that your shell might be changing the @env{TERM} environment
|
correct that your shell might be changing the @env{TERM} environment
|
||||||
variable. If @code{eat-term-name} isn't correct, customize to a
|
variable. If @code{eat-term-name} isn't correct, customize to a
|
||||||
suitable value and try again, your problem should be fixed.
|
suitable value and try again, your problem should be fixed.
|
||||||
|
|
||||||
|
@vindex eat-term-terminfo-directory
|
||||||
If @env{TERM} has the correct value, then probably the Terminfo
|
If @env{TERM} has the correct value, then probably the Terminfo
|
||||||
entries of Eat are missing. This can happen if you manually install
|
databases of Eat are missing. This can happen if you have installed
|
||||||
Eat. Check that whether the values of the environment value
|
Eat without using the package from NonGNU ELPA
|
||||||
@env{TERM} and the user option @code{eat-term-terminfo-directory}
|
(@pxref{Packages,,, emacs, GNU Emacs Manual}). Check that whether
|
||||||
match. If they match, customize @code{eat-term-terminfo-directory} to
|
the values of the environment variable @env{TERMINFO} and the user
|
||||||
the directory that contains the Terminfo database, the program should
|
option @code{eat-term-terminfo-directory} match. If they match,
|
||||||
now recognize Eat. If they don't match, then your shell is probably
|
customize @code{eat-term-terminfo-directory} to the directory
|
||||||
responsible for the problem.
|
containing the Terminfo databases, the program should now recognize
|
||||||
|
Eat. If they don't match, then your shell is probably responsible for
|
||||||
|
the problem.
|
||||||
|
|
||||||
|
@findex eat-compile-terminfo
|
||||||
|
If you can't find the directory containing Terminfo databases, you can
|
||||||
|
compile it yourself. First, set @code{eat-term-terminfo-directory} to
|
||||||
|
the directory where to put the Terminfo databases. Then invoke the
|
||||||
|
command @command{eat-compile-terminfo} to compile the Terminfo
|
||||||
|
databases.
|
||||||
|
|
||||||
@node Garbled Text
|
@node Garbled Text
|
||||||
@cindex garbled text
|
@cindex garbled text
|
||||||
|
|
Loading…
Add table
Reference in a new issue