📄 internal.el
字号:
;;; internal.el --- support for PC internal terminal -*- coding: raw-text; -*-;; Copyright (C) 1993, 1994, 1998, 1999, 2001 Free Software Foundation, Inc.;; Author: Morten Welinder <terra@diku.dk>;; This file is part of GNU Emacs.;; GNU Emacs 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 2, or (at your option);; any later version.;; GNU Emacs 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; see the file COPYING. If not, write to the;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,;; Boston, MA 02111-1307, USA.;;; Commentary:;;; Code:;; ---------------------------------------------------------------------------;; keyboard setup -- that's simple!(set-input-mode nil nil 0)(define-key function-key-map [backspace] "\177") ; Normal behaviour for BS(define-key function-key-map [delete] "\C-d") ; ... and Delete(define-key function-key-map [tab] [?\t])(define-key function-key-map [linefeed] [?\n])(define-key function-key-map [clear] [11])(define-key function-key-map [return] [13])(define-key function-key-map [escape] [?\e])(define-key function-key-map [M-backspace] [?\M-\d])(define-key function-key-map [M-delete] [?\M-d])(define-key function-key-map [M-tab] [?\M-\t])(define-key function-key-map [M-linefeed] [?\M-\n])(define-key function-key-map [M-clear] [?\M-\013])(define-key function-key-map [M-return] [?\M-\015])(define-key function-key-map [M-escape] [?\M-\e])(put 'backspace 'ascii-character 127)(put 'delete 'ascii-character 127)(put 'tab 'ascii-character ?\t)(put 'linefeed 'ascii-character ?\n)(put 'clear 'ascii-character 12)(put 'return 'ascii-character 13)(put 'escape 'ascii-character ?\e);; ----------------------------------------------------------------------;; DOS display setup;; =================;;;; DOS can only support a single font. On most systems (with the;; possible exception of Far Eastern DOS versions), this means that;; two character sets are available at any given time: the ASCII;; charset, and a single national charset, usually mapped to codes;; above 128 (i.e., with 8th bit set). Which national charset is;; supported depends on the codepage loaded by the system when it;; boots; usually, this codepage cannot be changed without;; rebooting.;;;; Since each codepage can usually display character of a single;; MULE charset, Emacs can display a single MULE charset with the;; glyphs of the current codepage. The mapping from DOS codepages;; to MULE charsets is established by the charset property of the;; cpNNN-decode-table variables in codepage.el, which also;; defines translation tables for each such pair, and a bunch of;; functions to generate coding systems that use those translation;; tables to convert codepage-encoded text to the appropriate MULE;; charset and back. When Emacs starts on DOS, it automatically;; sets its default coding systems for file I/O and terminal output;; according to the currend DOS codepage, given by the;; `dos-codepage' variable.;;;; This leaves us with the problem of displaying character sets;; other than the one which maps directly into the current codepage.;; The following functions and variables handle this nuisance by;; defining a display table where each character that doesn't have a;; glyph in some codepage is mapped to a string which represents it.;; For example, a small c with cedilla is mapped to the string;; "{,c}" (the braces serve as a sign that this is a single;; character). A nice feature of the display tables is that Emacs;; knows that the string represents a single character, and thus;; cursor motion works as you'd expect: a single `C-f' moves past;; the entire string which represents a single character.;; ----------------------------------------------------------------------(defvar IT-character-translations '( (latin-iso8859-1 . [255 "!I" "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)" "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3" "'" "u" ".P" "^." "'," "^1" "_o" ">>" "1/4" "1/2" "3/4" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C" "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "-D" "~N" "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^" "\"U" "Y'" "-P" "ss" "`a" "a'" "a^" "~a" "\"a" "ao" "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i" "-d" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u" "u'" "u^" "\"u" "y'" "-p" "\"y"] ) (latin-iso8859-2 . [255 "A;" "'(" "/L" "$$" "L<" "S'" "SE" "\"" "S<" ",S" "T<" "Z'" "--" "Z<" "Z^." "^o" "a;" "';" "/l" "'" "l<" "s'" "'<" "'," "s<" ",s" "t<" "z'" "'" "z<" "z^." "R'" "A'" "A^" "A(" "\"A" "L'" "C'" ",C" "C<" "E'" "E;" "E:" "E<" "I'" "I^" "D<" "/D" "N'" "N<" "O'" "O^" "O''" "\"O" "*x" "R<" "U^0" "U'" "U''" "\"U" "Y'" ",T" "ss" "r'" "a'" "a^" "a(" "\"a" "l'" "c'" ",c" "c<" "e'" "e;" "\"e" "e<" "i'" "i^" "d<" "/d" "n'" "n<" "o'" "o^" "o''" "\"o" "-:" "r<" "u^0" "u'" "u''" "\"u" "y'" ",t" "'."] ) (latin-iso8859-3 . [255 "/H" "'(" "Pd" "$$" " " "H^" "SE" "\"" "I^." ",S" "G(" "J^" "--" " " "Z^." "^o" "/h" "^2" "^3" "'" "u" "h^" "." "'," "i^." ",s" "g(" "j^" "1/2" " " "z^." "`A" "A'" "A^" " " "\"A" "C^." "C^" ",C" "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" " " "~N" "`O" "O'" "O^" "G^." "\"O" "*x" "G^" "`U" "U'" "U^" "\"U" "U(" "S^" "ss" "`a" "a'" "a^" " " "\"a" "c^." "c^" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i" " " "~n" "`o" "o'" "o^" "g^." "\"o" "-:" "g^" "`u" "u'" "u^" "\"u" "u(" "s^" "^."] ) (latin-iso8859-4 . [255 "A;" "kk" ",R" "$$" "?I" ",L" "SE" "\"" "S<" "E-" ",G" "/T" "--" "Z<" "'-" "^o" "a;" "';" ",r" "'" "~i" ",l" "'<" "'," "s<" "e-" ",g" "/t" "NG" "z<" "ng" "A-" "A'" "A^" "~A" "\"A" "Ao" "AE" "I;" "C<" "E'" "E;" "\"E" "E^." "I'" "I^" "I-" "/D" ",N" "O-" ",K" "O^" "~O" "\"O" "*x" "/O" "U;" "U'" "U^" "\"U" "~U" "U-" "ss" "a-" "a'" "a^" "~a" "\"a" "ao" "ae" "i;" "c<" "e'" "e;" "\"e" "e^." "i'" "i^" "i-" "/d" ",n" "o-" ",k" "o^" "~o" "\"o" "-:" "/o" "u;" "u'" "u^" "\"u" "~u" "u-" "^."] ) (cyrillic-iso8859-5 . [255 "\"E" "Dj" "Gj" "IE" "Dz" "Ii" "Ji" "JE" "Lj" "Nj" "Ts" "Kj" 240 "V%" "Dzh" 65 "B=" 66 226 68 69 "Z%" 51 85 "J=" 75 "L=" 77 72 79 "P=" 80 67 84 89 232 88 "C=" "C%" "S%" "Sc" "=\"" "Y=" "%\"" "Ee" "Yu" "Ya" 97 98 "v=" "g=" 103 101 "z%" "z=" 117 "j=" 107 "l=" "m=" "n=" 111 110 112 99 "t=" 121 "f=" 120 "c=" "c%" "s%" "sc" "='" "y=" "%'" "ee" "yu" "ya" "N0" "\"e" "dj" "gj" "ie" "dz" "ii" "ji" "je" "lj" "nj" "ts" "kj" 21 "v%" "dzh"] ) (arabic-iso8859-6 . [255 nil nil nil "$$" nil nil nil nil nil nil nil ",+" "--" nil nil nil nil nil nil nil nil nil nil nil nil nil ";+" nil nil nil "?+" nil "H'" "aM" "aH" "wH" "ah" "yH" "a+" "b+" "tm" "t+" "tk" "g+" "hk" "x+" "d+" "dk" "r+" "z+" "s+" "sn" "c+" "dd" "tj" "zH" "e+" "i+" nil nil nil nil nil "++" "f+" "q+" "k+" "l+" "m+" "n+" "h+" "w+" "j+" "y+" ":+" "\"+" "=+" "/+" "'+" "1+" "3+" "0+" nil nil nil nil nil nil nil nil nil nil nil nil nil] ) (greek-iso8859-7 . [255 "9'" "'9" "Pd" nil nil "|" "SE" "\"" "(c)" nil "<<" "~" "--" nil "-M" "^o" "+-" "^2" "^3" "'" "'%" "'A" "^." "'E" "'H" "'I" ">>" "'O" "1/2" "'Y" "W%" "i3" 65 66 "G*" "D*" 69 90 72 "TH" 73 74 "L*" 77 78 "C*" 79 "P*" 80 nil "S*" 84 89 "F*" 88 "Q*" "W*" "\"I" "\"Y" "a%" "e%" "y%" "i%" "u3" "a*" "b*" "g*" "d*" "e*" "z*" "y*" "h*" "i*" 107 "l*" "m*" "n*" "c*" 111 "p*" "r*" "*s" "s*" "t*" 117 "f*" "x*" "q*" "w*" "\"i" "\"u" "'o" "'u" "'w" nil] ) ;; Note: some of the characters undefined according to ISO 8859-8 ;; in the ranges 190..220 and 250..255 are replaced with SI 1311-1 ;; points (Niqud) and bidi formatting characters (hebrew-iso8859-8 . [255 nil "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)" "*x" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3" "'" "u" ".P" "^." "'," "^1" "-:" ">>" "1/4" "1/2" "3/4" nil ":'" "v:" "-:" "-':" ".'" ".." "v'" "-'" "-," "`." nil "\\." "(.)" "|'" "`-" nil "||" nil nil "::" nil nil nil nil nil nil nil "LRO" "RLO" "PDF" nil "=2" "A+" "B+" "G+" "D+" "H+" "W+" "Z+" "X+" "Tj" "J+" "K%" "K+" "L+" "M%" "M+" "N%" "N+" "S+" "E+" "P%" "P+" "Zj" "ZJ" "Q+" "R+" "Sh" "T+" "LRE" "RLE" "LRM" "RLM" nil] ) (latin-iso8859-9 . [255 "!I" "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)" "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3" "'" "u" ".P" "^." "'," "^1" "_o" ">>" "1/4" "1/2" "3/4" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C" "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "G(" "~N" "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^" "\"U" "I^." ",S" "ss" "`a" "a'" "a^" "~a" "\"a" "ao" "ae" ",c" "`e" "e'" "e<" "\"e" "e^." "i'" "i^" "i-" "g(" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u" "u'" "u^" "\"u" "i." ",s" "\"y"] ) (latin-iso8859-14 . [255 "B`" "b`" "Pd" "C`" "c`" "D`" "SE" "`W" "(c)" "W'" "d`" "`Y" "--" "(R)" "\"Y" "F`" "f`" "G`" "g`" "M`" "m`" ".P" "P`" "`w" "p`" "w'" "S`" "`y" "\"W" "\"w" "s`" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C" "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "W^" "~N" "`O" "O'" "O^" "~O" "\"O" "T`" "/O" "`U" "U'" "U^" "\"U" "Y'" "Y^" "ss" "`a" "a'" "a^" "~a" "\"a" "ao" "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i" "w^" "~n" "`o" "o'" "o^" "~o" "\"o" "t`" "/o" "`u" "u'" "u^" "\"u" "y'" "y^" "\"y"] ) (latin-iso8859-15 . [255 "!I" "|c" "Pd" "E=" "Ye" "S<" "SE" "s<" "(c)" "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3" "Z<" "u" ".P" "^." "z<" "^1" "_o" ">>" "OE" "oe" "\"Y" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C" "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "-D" "~N" "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^" "\"U" "Y'" "|P" "ss" "`a" "a'" "a^" "~a" "\"a" "ao" "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i" "-d" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u" "u'" "u^" "\"u" "y'" "|p" "\"y"] ) ) "An alist of MULE ISO-8859 character sets and the strings thatshould be used to represent the characters from each set on a DOSterminal which does not have corresponding glyphs built into theinstalled codepage.")(defun IT-display-table-setup (codepage &optional table) "Set up display table TABLE for a DOS terminal which supportsglyphs built into the codepage CODEPAGE.If TABLE is nil or omitted, `standard-display-table' is used." (let* ((surrogates IT-character-translations) (disp-tab (or table standard-display-table)) (built-in-set (cp-charset-for-codepage codepage)) (offset (cp-offset-for-codepage codepage)) (cp-decoder (symbol-value (intern-soft (format "%s-decode-table" codepage)))) (cp-decoder-len (length cp-decoder)) (c offset) association chset) ;; Undo the effects of previous call (where they may have used ;; a different codepage) by reverting the display table for the ;; built-in charset to its pristine shape. (while (< c 256) (aset disp-tab (make-char built-in-set c) nil) (setq c (1+ c))) (while surrogates (setq association (car surrogates)) (setq chset (car association)) (let* ((vector (cdr association)) (veclen (length vector)) (i 0) glyph) (while (< i veclen) (setq glyph (aref vector i)) (or glyph (setq glyph dos-unsupported-char-glyph)) (if (or (not (equal chset built-in-set)) (>= i cp-decoder-len) (null (aref cp-decoder i))) (aset disp-tab (make-char chset (+ i (logand offset 127))) (vconcat (if (numberp glyph) (char-to-string glyph) (if (> (length glyph) 1) (concat "{" glyph "}") glyph))))) (setq i (1+ i)))) (setq surrogates (cdr surrogates)))))(defvar IT-unicode-translations '( (mule-unicode-0100-24ff ; charset 256 ; base 256 563 ; first, last [ "A-" "a-" "A(" "a(" "A;" "a;" "C'" "c'" "C>" "c>" ; Latin Extended-A "C." "c." "C<" "c<" "D<" "d<" "D/" "d/" "E-" "e-" "E(" "e(" "E." "e." "E;" "e;" "E<" "e<" "G>" "g>" "G(" "g(" "G." "g." "G," "g," "H>" "h>" "H/" "h/" "I~" "i~" "I-" "i-" "I(" "i(" "I;" "i;" "I." "i." "IJ" "ij" "J>" "j>" "K," "k," "kk" "L'" "l'" "L," "l," "L<" "l<" "L." "l." "L/" "l/" "N'" "n'" "N," "n," "N<" "n<" "'n" "NG" "ng" "O-" "o-" "O(" "o(" "O\"" "o\"" "OE" "oe" "R'" "r'" "R," "r," "R<" "r<" "S'" "s'" "S>" "s>" "S," "s," "S<" "s<" "T," "t," "T<" "t<" "T/" "t/" "U~" "u~" "U-" "u-" "U(" "u(" "U0" "u0" "U\"" "u\"" "U;" "u;" "W>" "w>" "Y>" "y>" "Y:" "Z'" "z'" "Z." "z." "Z<" "z<" "s1" ; 017f "b/" "B2" "=B" "=b" "B6" "b6" "!C" "C2" "c2" "-D" ;Lat. Extended-B "D2" "=D" "=d" "!d" "!E" "-E" "Eps" "F2" "f2" "G2" "V0" "hv" "io" "-I" "K2" "k2" "-l" "la-" "!M" "2N" "n_" "-O" "O9" "o9" "OI" "oi" "P2" "p2" "'R" "!S" "!s" "Esh" "!esh" "t~" "T2" "t2" "T~" "U9" "u9" "Ups" "V2" "Y2" "y2" "Z/" "z/" "ED" "!ED" "!ed" "ed;" "2/" "5-" "_5-" "ts" "wn" "|_" "||" "|=" "!_" "DZ<" "Dz<" "dz<" "LJ3" "Lj3" "lj3" "NJ3" "Nj3" "nj3" "A<" "a<" "I<" "i<" "O<" "o<" "U<" "u<" "U:-" "u:-" "U:'" "u:'" "U:<" "u:<" "U:!" "u:!" "e1" "A:-" "a:-" "A.-" "a.-" "AE-" "ae-" "G/" "g/" "G<" "g<" "K<" "k<" "O;" "o;" "O1" "o1" "EZ" "ez" "j<" "DZ3" "Dz3" "dz3" "G'" "g'" "Hv" "Wn" "N`" "n`" "AA'" "aa'" "AE'" "ae'" "O/'" "o/'" "A!!" "a!!" "A)" "a)" "E!!" "e!!" "E)" "e)" "I!!" "i!!" "I)" "i)" "O!!" "o!!" "O)" "o)" "R!!" "r!!" "R)" "r)" "U!!" "u!!" "U)" "u)" ",S" ",s" ",T" ",t" "'3" "'3_" "H<" "h<" nil nil "8" "8_" "Z2" "z2" "A." "a." "E," "e," "O:-" "o:-" "O~-" "o~-" "O." "o." "O.-" "o.-" "Y-" "y-"] ; 0x233 ) (mule-unicode-0100-24ff ; charset 256 ; base 884 1123 ; first, last [ "'" "," nil nil nil nil "j3" nil nil nil ; Greek "?;" nil nil nil nil nil "'*" "'%" "A%" ".*" "E%" "Y%" "I%" nil "O%" nil "U%" "W%" "i3" "A*"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -