view lisp/term/linux.el @ 5607:1a507c4c6c42

Refactor out sequence-oriented builtins from fns.c to the new sequence.c. src/ChangeLog addition: 2011-12-04 Aidan Kehoe <kehoea@parhasard.net> * Makefile.in.in (objs): * depend: Add sequence.o to the list of objects and dependencies. * alloc.c: * alloc.c (mark_bit_vector): * alloc.c (print_bit_vector): * alloc.c (bit_vector_equal): * alloc.c (internal_bit_vector_equalp_hash): * alloc.c (bit_vector_hash): * alloc.c (init_alloc_once_early): Move the implementation of the bit vector type here from fns.c. * emacs.c (main_1): Call syms_of_sequence() here, now sequence.c is included. * fns.c (Fold_rassq): Move this together with the rest of the Fold_* functions. * fns.c: * fns.c (syms_of_fns): Move most functions dealing with sequences generally, and especially those taking key arguments, to a separate file, sequence.c. * general-slots.h: Qyes_or_no_p belong here, not fns.c. * lisp.h: Make Flist_length available here, it's used by sequence.c * sequence.c: * sequence.c (check_sequence_range): * sequence.c (Flength): * sequence.c (check_other_nokey): * sequence.c (check_other_key): * sequence.c (check_if_key): * sequence.c (check_match_eq_key): * sequence.c (check_match_eql_key): * sequence.c (check_match_equal_key): * sequence.c (check_match_equalp_key): * sequence.c (check_match_other_key): * sequence.c (check_lss_key): * sequence.c (check_lss_key_car): * sequence.c (check_string_lessp_key): * sequence.c (check_string_lessp_key_car): * sequence.c (get_check_match_function_1): * sequence.c (get_merge_predicate): * sequence.c (count_with_tail): * sequence.c (list_count_from_end): * sequence.c (string_count_from_end): * sequence.c (Fcount): * sequence.c (Fsubseq): * sequence.c (list_position_cons_before): * sequence.c (FmemberX): * sequence.c (Fadjoin): * sequence.c (FassocX): * sequence.c (FrassocX): * sequence.c (position): * sequence.c (Fposition): * sequence.c (Ffind): * sequence.c (delq_no_quit_and_free_cons): * sequence.c (FdeleteX): * sequence.c (FremoveX): * sequence.c (list_delete_duplicates_from_end): * sequence.c (Fdelete_duplicates): * sequence.c (Fremove_duplicates): * sequence.c (Fnreverse): * sequence.c (Freverse): * sequence.c (list_merge): * sequence.c (array_merge): * sequence.c (list_array_merge_into_list): * sequence.c (list_list_merge_into_array): * sequence.c (list_array_merge_into_array): * sequence.c (Fmerge): * sequence.c (list_sort): * sequence.c (array_sort): * sequence.c (FsortX): * sequence.c (Ffill): * sequence.c (mapcarX): * sequence.c (shortest_length_among_sequences): * sequence.c (Fmapconcat): * sequence.c (FmapcarX): * sequence.c (Fmapvector): * sequence.c (Fmapcan): * sequence.c (Fmap): * sequence.c (Fmap_into): * sequence.c (Fsome): * sequence.c (Fevery): * sequence.c (Freduce): * sequence.c (replace_string_range_1): * sequence.c (Freplace): * sequence.c (Fnsubstitute): * sequence.c (Fsubstitute): * sequence.c (subst): * sequence.c (sublis): * sequence.c (Fsublis): * sequence.c (nsublis): * sequence.c (Fnsublis): * sequence.c (Fsubst): * sequence.c (Fnsubst): * sequence.c (tree_equal): * sequence.c (Ftree_equal): * sequence.c (mismatch_from_end): * sequence.c (mismatch_list_list): * sequence.c (mismatch_list_string): * sequence.c (mismatch_list_array): * sequence.c (mismatch_string_array): * sequence.c (mismatch_string_string): * sequence.c (mismatch_array_array): * sequence.c (get_mismatch_func): * sequence.c (Fmismatch): * sequence.c (Fsearch): * sequence.c (venn): * sequence.c (nvenn): * sequence.c (Funion): * sequence.c (Fset_exclusive_or): * sequence.c (Fnset_exclusive_or): * sequence.c (syms_of_sequence): Add this file, containing those general functions that dealt with sequences that were in fns.c. * symsinit.h: Make syms_of_sequence() available here. man/ChangeLog addition: 2011-12-04 Aidan Kehoe <kehoea@parhasard.net> * internals/internals.texi (Basic Lisp Modules): Document sequence.c here too.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 04 Dec 2011 18:42:50 +0000
parents 308d34e9f07d
children
line wrap: on
line source

;;; linux.el --- define function key sequences for the Linux console

;; Author: Ben Wing
;; Keywords: terminals

;; Copyright (C) 1996 Ben Wing.
;; This file is part of XEmacs.

;; XEmacs 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.

;; XEmacs 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 XEmacs.  If not, see <http://www.gnu.org/licenses/>.

;;; Synched up with: FSF 21.0.103.
;;; (All the define-keys are our own.)

;;; Commentary:

;;; Code:

;; The Linux console handles Latin-1 by default.

(if-fboundp 'set-terminal-coding-system
    (unless (declare-fboundp (terminal-coding-system))
      (set-terminal-coding-system 'iso-8859-1)))

;; Make Latin-1 input characters work, too.
;; Meta will continue to work, because the kernel
;; turns that into Escape.

(let ((value (current-input-mode)))
  ;; The third arg only matters in that it is not t or nil.
  (set-input-mode (nth 0 value) (nth 1 value) 'iso-8859-1 (nth 3 value)))

;; The defines below seem to get automatically set in recent Termcaps.
;; It was probably the case that in 1996, there was no good Linux termcap,
;; which is why such a file was needed.

; ;; Termcap or terminfo should set these next four?
; (define-key function-key-map "\e[A" [up])
; (define-key function-key-map "\e[B" [down])
; (define-key function-key-map "\e[C" [right])
; (define-key function-key-map "\e[D" [left])

; (define-key function-key-map "\e[[A" [f1])
; (define-key function-key-map "\e[[B" [f2])
; (define-key function-key-map "\e[[C" [f3])
; (define-key function-key-map "\e[[D" [f4])
; (define-key function-key-map "\e[[E" [f5])
; (define-key function-key-map "\e[17~" [f6])
; (define-key function-key-map "\e[18~" [f7])
; (define-key function-key-map "\e[19~" [f8])
; (define-key function-key-map "\e[20~" [f9])
; (define-key function-key-map "\e[21~" [f10])
; (define-key function-key-map "\e[23~" [f11])
; (define-key function-key-map "\e[24~" [f12])
; (define-key function-key-map "\e[25~" [f13])
; (define-key function-key-map "\e[26~" [f14])
; (define-key function-key-map "\e[28~" [f15])
; (define-key function-key-map "\e[29~" [f16])
; (define-key function-key-map "\e[31~" [f17])
; (define-key function-key-map "\e[32~" [f18])
; (define-key function-key-map "\e[33~" [f19])
; (define-key function-key-map "\e[34~" [f20])

;; But they come out f13-f20 (see above), which are not what we
;; normally call the shifted function keys.  F11 = Shift-F1, F2 =
;; Shift-F2.  What a mess, see below.
(define-key function-key-map "\e[25~" [(shift f3)])
(define-key function-key-map "\e[26~" [(shift f4)])
(define-key function-key-map "\e[28~" [(shift f5)])
(define-key function-key-map "\e[29~" [(shift f6)])
(define-key function-key-map "\e[31~" [(shift f7)])
(define-key function-key-map "\e[32~" [(shift f8)])
(define-key function-key-map "\e[33~" [(shift f9)])
(define-key function-key-map "\e[34~" [(shift f10)])

;; I potentially considered these.  They would make people's Shift-F1 and
;; Shift-F2 bindings work -- but of course they would fail to work if the
;; person also put F11 and F12 bindings.  It might also be confusing because
;; the person with no bindings who hits f11 gets "error shift-f1 unbound".
;; #### If only there were a proper way around this.
;(define-key global-map 'f11 [(shift f1)])
;(define-key global-map 'f12 [(shift f2)])

; (define-key function-key-map "\e[1~" [home])
 ;; seems to not get handled correctly automatically
 (define-key function-key-map "\e[2~" [insert])
; (define-key function-key-map "\e[3~" [delete])
; (define-key function-key-map "\e[4~" [end])
; (define-key function-key-map "\e[5~" [prior])
; (define-key function-key-map "\e[6~" [next])
; (define-key function-key-map "\e[G" [kp-5])

; (define-key function-key-map "\eOp" [kp-0])
; (define-key function-key-map "\eOq" [kp-1])
; (define-key function-key-map "\eOr" [kp-2])
; (define-key function-key-map "\eOs" [kp-3])
; (define-key function-key-map "\eOt" [kp-4])
; (define-key function-key-map "\eOu" [kp-5])
; (define-key function-key-map "\eOv" [kp-6])
; (define-key function-key-map "\eOw" [kp-7])
; (define-key function-key-map "\eOx" [kp-8])
; (define-key function-key-map "\eOy" [kp-9])

; (define-key function-key-map "\eOl" [kp-add])
; (define-key function-key-map "\eOS" [kp-subtract])
; (define-key function-key-map "\eOM" [kp-enter])
; (define-key function-key-map "\eOR" [kp-multiply])
; (define-key function-key-map "\eOQ" [kp-divide])
; (define-key function-key-map "\eOn" [kp-decimal])
; (define-key function-key-map "\eOP" [kp-numlock])

;;; linux.el ends here