Mercurial > emacs
view lisp/case-table.el @ 42829:07bd6e693cb6
(easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
"Finish Function" menu map entries for jdb mode.
(gud-jdb-use-classpath): New customization variable.
(gud-jdb-command-name): Add customization.
(gud-jdb-classpath, gud-marker-acc-max-length): New variables.
(gud-jdb-classpath-string): New variable.
(gud-jdb-source-files, gud-jdb-class-source-alist): Add doc strings.
(gud-jdb-build-source-files-list): Likewise.
(gud-jdb-massage-args): Record any command argument classpath
string in `gud-jdb-classpath-string'.
(gud-jdb-lowest-stack-level): New function, finds bottom of current
java call stack in jdb output.
(gud-jdb-find-source-using-classpath, gud-jdb-find-source)
(gud-jdb-parse-classpath-string): New functions.
(gud-jdb-marker-filter): Search/detect classpath information in
jdb's output. marker regexp updated to match oldjdb and jdb output
formats. Expand search for source files to include new/old methods
using new functions above. Do not allow `gud-marker-acc' to grow
without bound.
(jdb): Set classpath information (if available) as jdb is started.
Change `gud-break' and `gud-remove'
to use new %c ("class") escape in format strings. Add
`gud-finish', `gud-up', `gud-down' command string functions, and
add them to the local menu map. Update `comint-prompt-regexp' for
jdb and oldjdb. If attaching to an already running java VM and
configured to use classpath, send command to query for classpath,
else use previous method for finding and parsing java
sources. Set `gud-jdb-find-source' function accordingly.
(gud-mode): Doc fix.
(gud-format-command): Add support for new %c ("class") escape.
(gud-find-class): New function in support of %c escape.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 18 Jan 2002 18:57:20 +0000 |
parents | 6254fdd1bbb7 |
children | 695cf19ef79e d7ddb3e565de 40dcdefd77b0 |
line wrap: on
line source
;;; case-table.el --- code to extend the character set and support case tables ;; Copyright (C) 1988, 1994 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Maintainer: FSF ;; Keywords: i18n ;; 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: ;; Written by: ;; TN/ETX/TX/UMG Howard Gayle UUCP : seismo!enea!erix!howard ;; Telefonaktiebolaget L M Ericsson Phone: +46 8 719 55 65 ;; Ericsson Telecom Telex: 14910 ERIC S ;; S-126 25 Stockholm FAX : +46 8 719 64 82 ;; Sweden ;;; Code: (defvar set-case-syntax-offset 0) (defvar set-case-syntax-set-multibyte nil) (defun describe-buffer-case-table () "Describe the case table of the current buffer." (interactive) (let ((description (make-char-table 'case-table))) (map-char-table (function (lambda (key value) (aset description key (cond ((not (natnump value)) "case-invariant") ((/= key (downcase key)) (concat "uppercase, matches " (char-to-string (downcase key)))) ((/= key (upcase key)) (concat "lowercase, matches " (char-to-string (upcase key)))) (t "case-invariant"))))) (current-case-table)) (save-excursion (with-output-to-temp-buffer "*Help*" (set-buffer standard-output) (describe-vector description) (help-mode))))) (defun copy-case-table (case-table) (let ((copy (copy-sequence case-table))) ;; Clear out the extra slots so that they will be ;; recomputed from the main (downcase) table. (set-char-table-extra-slot copy 0 nil) (set-char-table-extra-slot copy 1 nil) (set-char-table-extra-slot copy 2 nil) copy)) (defsubst set-case-syntax-1 (char) "Offset CHAR by `set-case-syntax-offset' if CHAR is a non-ASCII 8-bit char." (if (and (>= char 128) (< char 256)) (+ char set-case-syntax-offset) char)) (defun set-case-syntax-delims (l r table) "Make characters L and R a matching pair of non-case-converting delimiters. This sets the entries for L and R in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table' to indicate left and right delimiters." (setq l (set-case-syntax-1 l)) (setq r (set-case-syntax-1 r)) (aset table l l) (aset table r r) ;; Clear out the extra slots so that they will be ;; recomputed from the main (downcase) table. (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry l (concat "(" (char-to-string r) " ") (standard-syntax-table)) (modify-syntax-entry r (concat ")" (char-to-string l) " ") (standard-syntax-table))) (defun set-case-syntax-pair (uc lc table) "Make characters UC and LC a pair of inter-case-converting letters. This sets the entries for characters UC and LC in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table' to give them the syntax of word constituents." (unless (= (charset-bytes (char-charset uc)) (charset-bytes (char-charset lc))) (error "Can't casify chars with different `charset-bytes' values")) (setq uc (set-case-syntax-1 uc)) (setq lc (set-case-syntax-1 lc)) (aset table uc lc) (aset table lc lc) (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry lc "w " (standard-syntax-table)) (modify-syntax-entry uc "w " (standard-syntax-table))) (defun set-case-syntax (c syntax table) "Make character C case-invariant with syntax SYNTAX. This sets the entry for character C in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table'. SYNTAX should be \" \", \"w\", \".\" or \"_\"." (setq c (set-case-syntax-1 c)) (aset table c c) (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry c syntax (standard-syntax-table))) (provide 'case-table) ;;; case-table.el ends here