(select-window win)))
(defun mdw-set-frame-width (columns &optional width)
+ "Set the current frame to be the correct width for COLUMNS columns.
+
+If WIDTH is non-nil, then it provides the width for the new columns. (This
+can be set interactively with a prefix argument.)"
(interactive "nColumns:
P")
(setq width (if width (prefix-numeric-value width)
This is sadly necessary because Emacs 26 is broken in this regard.")
+(defvar mdw-frame-colour-alist
+ '((black . ("#000000" . "#ffffff"))
+ (red . ("#2a0000" . "#ffffff"))
+ (green . ("#002a00" . "#ffffff"))
+ (blue . ("#00002a" . "#ffffff")))
+ "*Alist mapping symbol names to (FOREGROUND . BACKGROUND) colour pairs.")
+
+(defun mdw-set-frame-colour (colour &optional frame)
+ (interactive "xColour name or (FOREGROUND . BACKGROUND) pair:
+")
+ (when (and colour (symbolp colour))
+ (let ((entry (assq colour mdw-frame-colour-alist)))
+ (unless entry (error "Unknown colour `%s'" colour))
+ (setf colour (cdr entry))))
+ (set-frame-parameter frame 'background-color (car colour))
+ (set-frame-parameter frame 'foreground-color (cdr colour)))
+
;; Don't raise windows unless I say so.
(defvar mdw-inhibit-raise-frame nil
;;;--------------------------------------------------------------------------
;;; Printing.
+;; Teach PostScript about a condensed variant of Courier. I'm using 85% of
+;; the usual width, which happens to match `mdwfonts', and David Carlisle's
+;; `pslatex'. (Once upon a time, I used 80%, but decided consistency with
+;; `pslatex' was useful.)
+(setq ps-user-defined-prologue "
+/CourierCondensed /Courier
+/CourierCondensed-Bold /Courier-Bold
+/CourierCondensed-Oblique /Courier-Oblique
+/CourierCondensed-BoldOblique /Courier-BoldOblique
+ 4 { findfont [0.85 0 0 1 0 0] makefont definefont pop } repeat
+")
+
+;; Hack `ps-print''s settings.
+(eval-after-load 'ps-print
+ '(progn
+
+ ;; Notice that the comment-delimiters should be in italics too.
+ (pushnew 'font-lock-comment-delimiter-face ps-italic-faces)
+
+ ;; Select more suitable colours for the main kinds of tokens. The
+ ;; colours set on the Emacs faces are chosen for use against a dark
+ ;; background, and work very badly on white paper.
+ (ps-extend-face '(font-lock-comment-face "darkgreen" nil italic))
+ (ps-extend-face '(font-lock-comment-delimiter-face "darkgreen" nil italic))
+ (ps-extend-face '(font-lock-string-face "RoyalBlue4" nil))
+ (ps-extend-face '(mdw-punct-face "sienna" nil))
+ (ps-extend-face '(mdw-number-face "OrangeRed3" nil))
+
+ ;; Teach `ps-print' about my condensed varsions of Courier.
+ (setq ps-font-info-database
+ (append '((CourierCondensed
+ (fonts (normal . "CourierCondensed")
+ (bold . "CourierCondensed-Bold")
+ (italic . "CourierCondensed-Oblique")
+ (bold-italic . "CourierCondensed-BoldOblique"))
+ (size . 10.0)
+ (line-height . 10.55)
+ (space-width . 5.1)
+ (avg-char-width . 5.1)))
+ (cl-remove 'CourierCondensed ps-font-info-database
+ :key #'car)))))
+
;; Arrange to strip overlays from the buffer before we print . This will
;; prevent `flyspell' from interfering with the printout. (It would be less
;; bad if `ps-print' could merge the `flyspell' overlay face with the
(statement-cont . +)
(statement-case-intro . +)))
-(mdw-define-c-style mdw-trustonic-basic-c (mdw-c)
+(mdw-define-c-style mdw-trustonic-c (mdw-c)
(c-basic-offset . 4)
- (comment-column . 0)
(c-indent-comment-alist (anchored-comment . (column . 0))
(end-block . (space . 1))
(cpp-end-block . (space . 1))
(other . (space . 1)))
(c-offsets-alist (access-label . -2)))
-(mdw-define-c-style mdw-trustonic-c (mdw-trustonic-basic-c)
+(mdw-define-c-style mdw-trustonic-alec-c (mdw-trustonic-c)
+ (comment-column . 0)
(c-offsets-alist (arglist-cont-nonempty . mdw-c-indent-arglist-nested)))
(defun mdw-set-default-c-style (modes style)
(current-column))))
;; Don't really care about this.
- (when (and (eq lisp-indent-backquote-substitution-mode 'corrected))
+ (when (and (boundp 'lisp-indent-backquote-substitution-mode)
+ (eq lisp-indent-backquote-substitution-mode 'corrected))
(save-excursion
(goto-char (elt state 1))
(cl-incf loop-indentation
(setq ad-return-value
(list
- (cond ((not (lisp-extended-loop-p (elt state 1)))
+ (cond ((condition-case ()
+ (save-excursion
+ (goto-char (elt state 1))
+ (forward-char 1)
+ (forward-sexp 2)
+ (backward-sexp 1)
+ (not (looking-at "\\(:\\|\\sw\\)")))
+ (error nil))
(+ baseline-indent lisp-simple-loop-indentation))
((looking-at "^\\s-*\\(:?\\sw+\\|;\\)")
(+ baseline-indent lisp-loop-keyword-indentation))