view lisp/callers-of-rpt.el @ 4916:a6c778975d7d

split USE_XFT into HAVE_XFT/USE_XFT -------------------- ChangeLog entries follow: -------------------- ChangeLog addition: 2010-02-01 Ben Wing <ben@xemacs.org> * configure: * configure.ac (TAB): USE_XFT* -> HAVE_XFT*. lwlib/ChangeLog addition: 2010-02-01 Ben Wing <ben@xemacs.org> * lwlib-colors.c: * lwlib-colors.h: * lwlib-fonts.c: * lwlib-fonts.h: * xlwmenu.c: * xlwmenu.c (xlwMenuResources): * xlwmenu.c (x_xft_text_width): * xlwmenu.c (label_button_draw): * xlwmenu.c (push_button_size): * xlwmenu.c (push_button_draw): * xlwmenu.c (make_drawing_gcs): * xlwmenu.c (extract_font_extents): * xlwmenu.c (default_font_of_font_list): * xlwmenu.c (XlwMenuInitialize): * xlwmenu.c (XlwMenuDestroy): * xlwmenu.c (XlwMenuSetValues): * xlwmenuP.h: * xlwmenuP.h (_XlwMenu_part): * xlwtabs.c: * xlwtabs.c (TabsInit): * xlwtabs.c (TabsDestroy): * xlwtabs.c (TabsSetValues): * xlwtabs.c (DrawTab): * xlwtabs.c (TabWidth): * xlwtabs.c (TabsAllocFgGC): * xlwtabs.c (TabsAllocGreyGC): * xlwtabsP.h: USE_XFT* -> HAVE_XFT*. src/ChangeLog addition: 2010-02-01 Ben Wing <ben@xemacs.org> * Makefile.in.in: * compiler.h: * config.h.in: * console-x-impl.h: * console-x-impl.h (struct x_frame): * console-x-impl.h (FRAME_X_TOTALLY_VISIBLE_P): * console-x.h: * console-xlike-inc.h: * emacs.c (main_1): * faces.c (complex_vars_of_faces): * font-mgr.h: * frame-x.c (x_delete_frame): * frame-x.c (x_update_frame_external_traits): * glyphs-x.c (update_widget_face): * inline.c: * objects-x-impl.h: * objects-x-impl.h (struct x_color_instance_data): * objects-x-impl.h (struct x_font_instance_data): * objects-x.c: * objects-x.c (x_initialize_color_instance): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_print_font_instance): * objects-x.c (x_finalize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (vars_of_objects_x): * objects-x.h: USE_XFT* -> HAVE_XFT*. But in objects-xlike-inc.c and redisplay-xlike-inc.c, continue to use USE_XFT, and define it appropriately in console-xlike-inc.h when both HAVE_XFT and THIS_IS_X -- even if HAVE_XFT, we don't want to enable XFT code when included in a *-gtk.c file.
author Ben Wing <ben@xemacs.org>
date Mon, 01 Feb 2010 22:00:29 -0600
parents 3ecd8885ac67
children 308d34e9f07d
line wrap: on
line source

;;; callers-of-rpt.el --- generate call graph of lisp in XEmacs

;; Copyright (C) 1997 Karl Hegbloom
;; Copyright (C) 1997 Free Software Foundation, Inc.

;; Author: Karl Hegbloom <karlheg@inetarena.com>
;; Maintainer: XEmacs Development Team
;; Keywords: internal

;; 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 2, 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; see the file COPYING.  If not, write to the 
;; Free Software Foundation, 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Synched up with: not in FSF

;;; Commentary:

;; Grep-2.1 is required.
;; Modify the `xemacs-src-lisp-dir' and `xemacs-pkg-lisp-dir' to reflect
;;  where these directories live on your local system.

;;; Code:

(defvar xemacs-src-lisp-dir "/usr/src/xemacs-20.0/lisp/"
  "Where the XEmacs 20 lisp sources live.")
(defvar xemacs-pkg-lisp-dir "/home/xemacs/packages/"
  "Where the package lisp sources live.")

;; (makunbound 'caller-table)
(defconst caller-table (make-hash-table :test 'equal)
  "Hash table keyed on the symbols being required.  Each element will
  be a list of file-names of programs that depend on them.")

;;./apel/atype.el:(require 'emu)
;;./apel/atype.el:(require 'alist)
;;./apel/emu-e19.el:       (require 'emu-xemacs))
;;./apel/emu-e19.el:       (require 'emu-19)

(defun make-caller-report ()
  "Generate a simple report showing .el files that are `require'd by
  other .el files, and the list of programs that depend on them."
  (interactive)
  (let ((cmd-out (get-buffer-create "*caller-report find-grep output*"))
	(rpt (get-buffer-create "* caller report *"))
	file-name)
    (switch-to-buffer cmd-out)
    (buffer-disable-undo cmd-out)
    (set-syntax-table emacs-lisp-mode-syntax-table cmd-out)
    (erase-buffer cmd-out)
    (message "Running the find | grep...")
    (sit-for 0)
    ;; Note: Edit this part as needed for your installation.
    (shell-command (concat
		    ;; First the installed lisp
		    "cd " xemacs-src-lisp-dir " ;"
		    "grep -H '(require ' $(find -name '*.el' -print) |"
		    " grep -v 'auto-autoloads\\.el\\|callers-of-rpt\\.el' |"
		    " grep -v 'el:[ \t]*;\\|require load' ;" ; ones commented off, and cus-edit.el
		    ;; Then the packages
		    "cd " xemacs-pkg-lisp-dir " ;"
		    "grep -H '(require ' $(find -name '*.el' -print) |"
		    " grep -v 'auto-autoloads\\.el\\|callers-of-rpt\\.el' |"
		    " grep -v 'el:[ \t]*;' ;" ; ones commented off
		    )
		   cmd-out)
    (message "Running the find | grep... Done.")
    (goto-char (point-min))
    (sit-for 0)
    (while (not (eobp))
      (setq file-name (buffer-substring (+ (point) 2) ; skip the leading "./"
					(progn
					  (skip-chars-forward "^:")
					  (point))
					cmd-out))
      (re-search-forward "(require '" nil t)
      (let* ((key (buffer-substring (point) (progn
					      (skip-chars-forward "^) ")
					      (point))
				    cmd-out))
	     (lst (gethash key caller-table)))
	(unless (member file-name lst)
	  (puthash key (cons file-name lst) caller-table)))
      (forward-line 1)
      (sit-for 0))
    (switch-to-buffer rpt)
    (buffer-disable-undo rpt)
    (erase-buffer rpt)
    (sit-for 0)
    (let (keys)
      (maphash #'(lambda (key val) (push key keys)) caller-table)
      (setq keys (sort keys #'string<))
      (mapc #'(lambda (key)
		(insert (format "(%s '(" key))
		(let ((lst (gethash key caller-table)))
		  (while lst
		    (insert (format "%S" (car lst)))
		    (setq lst (cdr lst))
		    (when lst (insert " "))))
		(insert "))\n")
		(sit-for 0))
	    keys))))

(byte-compile 'make-caller-report)
(delete-other-windows)
(make-caller-report)

;;; callers-of-rpt.el ends here