view admin/admin.el @ 51208:86d74f5ea803

(struct window): Rename members left to left_col, top to top_line, height to total_lines, width to total_cols, left_margin_width to left_margin_cols, right_margin_width to right_margin_cols, orig_height to orig_total_lines, orig_top to orig_top_line. All uses changed. (struct window): New members left_fringe_width, right_fringe_width, fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type. (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT): New macros primarily used to simplify other macros. (WINDOW_TOTAL_COLS): New macro. Change relevant code that referred to XINT (w->width). (WINDOW_TOTAL_LINES): New macro. Change relevant code that referred to XINT (w->height). (WINDOW_TOTAL_WIDTH): New macro. Change relevant code that referred to XINT (w->width) * canon_x_unit. (WINDOW_TOTAL_HEIGHT): New macro. Change relevant code that referred to XINT (w->height) * canon_y_unit. (WINDOW_LEFT_EDGE_COL): New macro. Change relevant code that referred to XINT (w->left). (WINDOW_RIGHT_EDGE_COL): Renamed from WINDOW_RIGHT_EDGE. Change all uses and code that referred to XINT (w->left) + XINT (w->width). (WINDOW_TOP_EDGE_LINE): New macro. Change relevant code that referred to XINT (w->top). (WINDOW_BOTTOM_EDGE_LINE): New macro. Change relevant code that referred to XINT (w->top) + XINT (w->height). (WINDOW_LEFT_EDGE_X): New macro. Change relevant code that referred to XINT (w->left) * canon_x_unit. (WINDOW_RIGHT_EDGE_X): New macro. Change relevant code that referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit. (WINDOW_TOP_EDGE_Y): New macro. Change relevant code that referred to XINT (w->top) * canon_y_unit. (WINDOW_BOTTOM_EDGE_Y): New macro. Change relevant code that referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit. (WINDOW_LEFTMOST_P): New macro. (WINDOW_BOX_LEFT_EDGE_COL): Renamed from WINDOW_LEFT_MARGIN. All uses changed. (WINDOW_BOX_RIGHT_EDGE_COL): Renamed from WINDOW_RIGHT_MARGIN. All uses changed. (WINDOW_BOX_LEFT_EDGE_X): Renamed from WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h. Do not exclude left fringe width. (WINDOW_BOX_RIGHT_EDGE_X): Renamed from WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h. Do not exclude fringe widths. (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH) (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros. Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH, FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings. (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro. (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR) (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS): New macros. Change code which referenced corresponding FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS, FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT, FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT, FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to allow per-window scroll-bar settings. (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros. (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro. Change code that referred to FRAME_LEFT_SCROLL_BAR_WIDTH. (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro. Change code that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and FRAME_SCROLL_BAR_WIDTH. (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH) (WINDOW_SCROLL_BAR_AREA_X): New macros. (WINDOW_HEADER_LINE_HEIGHT): Renamed from WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h. (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Renamed from WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h. (WINDOW_BOX_TEXT_HEIGHT): Renamed from WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h. (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) (WINDOW_TEXT_TO_FRAME_PIXEL_X): Moved here from dispextern.h. (WINDOW_LEFT_MARGIN_WIDTH): Renamed from WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h. (WINDOW_RIGHT_MARGIN_WIDTH): Renamed from WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h. (window_from_coordinates): Update prototype. (Fset_window_buffer): Update EXFUN. (set_window_buffer): Update prototype.
author Kim F. Storm <storm@cua.dk>
date Sat, 24 May 2003 22:08:20 +0000
parents bb7bf9ff7c97
children 695cf19ef79e d7ddb3e565de
line wrap: on
line source

;;; admin.el --- utilities for Emacs administration

;; Copyright (C) 2001 Free Software Foundation, Inc.

;; 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:

;; add-release-log	add ``Version X released'' change log entries
;; set-version		change Emacs version number in source tree.

;;; Code:

(defun process-lines (program &rest args)
  "Execute PROGRAM with ARGS, returning its output as a list of lines.
Signal an error if the program returns with a non-zero exit status."
  (with-temp-buffer
    (let ((status (apply 'call-process program nil (current-buffer) nil args)))
      (unless (eq status 0)
	(error "%s exited with status %s" program status))
      (goto-char (point-min))
      (let (lines)
	(while (not (eobp))
	  (setq lines (cons (buffer-substring-no-properties
			     (line-beginning-position)
			     (line-end-position))
			    lines))
	  (forward-line 1))
	(nreverse lines)))))


(defun add-release-logs (root version)
  "Add \"Version VERSION released.\" change log entries in ROOT.
Root must be the root of an Emacs source tree."
  (interactive "DEmacs root directory: \nNVersion number: ")
  (setq root (expand-file-name root))
  (unless (file-exists-p (expand-file-name "src/emacs.c" root))
    (error "%s doesn't seem to be the root of an Emacs source tree" root))
  (let* ((logs (process-lines "find" root "-name" "ChangeLog"))
	 (require 'add-log)
	 (entry (format "%s  %s  <%s>\n\n\t* Version %s released.\n\n"
			(funcall add-log-time-format)
			(or add-log-full-name (user-full-name))
			(or add-log-mailing-address user-mail-address)
			version)))
    (dolist (log logs)
      (unless (string-match "/gnus/" log)
	(find-file log)
	(goto-char (point-min))
	(insert entry)))))


(defun set-version-in-file (root file version rx)
  (find-file (expand-file-name file root))
  (goto-char (point-min))
  (unless (re-search-forward rx nil t)
    (error "Version not found in %s" file))
  (replace-match (format "%s" version) nil nil nil 1))


(defun set-version (root version)
  "Set Emacs version to VERSION in relevant files under ROOT.
Root must be the root of an Emacs source tree."
  (interactive "DEmacs root directory: \nsVersion number: ")
  (unless (file-exists-p (expand-file-name "src/emacs.c" root))
    (error "%s doesn't seem to be the root of an Emacs source tree" root))
  (set-version-in-file root "lisp/version.el" version
		       (rx (and "emacs-version" (0+ space)
				?\" (submatch (1+ (not (in ?\")))) ?\")))
  (set-version-in-file root "README" version
		       (rx (and "version" (1+ space)
				(submatch (1+ (in "0-9."))))))
  (set-version-in-file root "man/emacs.texi" version
		       (rx (and "EMACSVER" (1+ space)
				(submatch (1+ (in "0-9.")))))))

;; admin.el ends here.