Mercurial > emacs
view lisp/progmodes/ada-support.el @ 25910:918acea58309
Add section for change of pixmap-spec-p to bitmap-spec-p.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 07 Oct 1999 20:27:26 +0000 |
parents | 5a88e84b63a4 |
children |
line wrap: on
line source
;; @(#) ada-support.el --- Override some standard Emacs functions ;; Copyright (C) 1994-1999 Free Software Foundation, Inc. ;; Author: Emmanuel Briot <briot@gnat.com> ;; Maintainer: Emmanuel Briot <briot@gnat.com> ;; Ada Core Technologies's version: $Revision: 1.3 $ ;; Keywords: languages ada xref ;; This file is not part of GNU Emacs. ;; This program 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. ;; This program 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, 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Commentary: ;;; This file overrides some functions that are defined in Emacs/XEmacs, ;;; since some of them have known bugs in old versions. ;;; This is intended as a support package for older Emacs versions, and ;;; should not be needed for the latest version of Emacs (currently 20.4) ;;; where these bugs have been fixed ;;; Some functions have been renamed from one version to the other ;;; `easy-menu-create-keymaps' has been renamed `easy-menu-create-menu' ;;; from Emacs >= 20.3 ;;; Do nothing for XEmacs (unless (or (ada-check-emacs-version 20 3) (not (ada-check-emacs-version 1 1 t))) (if (and (not (fboundp 'easy-menu-create-menu)) (fboundp 'easy-menu-create-keymaps)) (defun easy-menu-create-menu (menu-name menu-items) "Alias redefined in ada-support.el" (easy-menu-create-keymaps menu-name menu-items)))) ;;; A fix for Emacs <= 20.3 ;;; Imenu does not support name overriding in submenus (the first such name ;;; is always selected, whichever the user actually chose). ;;; This has been fixed in Emacs 20.4 ;;; Fix was: use assq instead of assoc in the submenus (unless (ada-check-emacs-version 20 4) (defun imenu--mouse-menu (index-alist event &optional title) "Overrides the default imenu--mouse-menu from imenu.el, that has a bug. The default one does not know anything about overriding in submenus, since it is using assoc instead of assq" (set 'index-alist (imenu--split-submenus index-alist)) (let* ((menu (imenu--split-menu index-alist (or title (buffer-name)))) position) (set 'menu (imenu--create-keymap-1 (car menu) (if (< 1 (length (cdr menu))) (cdr menu) (cdr (car (cdr menu)))))) (set 'position (x-popup-menu event menu)) (cond ((eq position nil) position) ;; If one call to x-popup-menu handled the nested menus, ;; find the result by looking down the menus here. ((and (listp position) (numberp (car position)) (stringp (nth (1- (length position)) position))) (let ((final menu)) (while position (set 'final (assq (car position) final)) (set 'position (cdr position))) (or (string= (car final) (car imenu--rescan-item)) (nthcdr 3 final)))) ;; If x-popup-menu went just one level and found a leaf item, ;; return the INDEX-ALIST element for that. ((and (consp position) (stringp (car position)) (null (cdr position))) (or (string= (car position) (car imenu--rescan-item)) (assq (car position) index-alist))) ;; If x-popup-menu went just one level ;; and found a non-leaf item (a submenu), ;; recurse to handle the rest. ((listp position) (imenu--mouse-menu position event (if title (concat title imenu-level-separator (car (rassq position index-alist))) (car (rassq position index-alist)))))))) ) (provide 'ada-support)