From: Mark Wooding Date: Tue, 3 May 2016 08:31:00 +0000 (+0100) Subject: Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/profile X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/commitdiff_plain/580ac7ce11353166bdfa83283e6b51f282135dfe?hp=27be52b373f52ddb158bdd24648769c20d206c4b Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/profile * 'master' of git.distorted.org.uk:~mdw/publish/public-git/profile: dot/gnus.el: Configure Gnus's (and Message's) use of crypto. el/dot-emacs.el: Add an approximate simulacrum of work C style. el/dot-emacs.el: Use the CC Mode style machinery properly. el/dot-emacs.el (apcalc-mode): Use the proper major-mode machinery. dot/emacs, el/dot-emacs.el: Abolish the `Linux C Mode' stuff. --- diff --git a/dot/emacs b/dot/emacs index 1d902a6..f6290cc 100644 --- a/dot/emacs +++ b/dot/emacs @@ -663,7 +663,6 @@ "\\)$") . text-mode) ("\\.calc?$" . apcalc-mode) - ("/src/linux/.*\\.\\(c\\|h\\|cc\\)$" . linux-c-mode) ("/\\(s\\|sh\\)/" . arm-assembler-mode) ("\\.\\(cmd\\|exec\\|rexx\\)$" . rexx-mode) ("\\.st$" . smalltalk-mode) @@ -784,7 +783,6 @@ (add-hook 'c-mode-hook 'mdw-fontify-c-and-c++ t) (add-hook 'objc-mode-hook 'mdw-fontify-c-and-c++ t) (add-hook 'c++-mode-hook 'mdw-fontify-c-and-c++ t) - (add-hook 'linux-c-mode-hook #'(lambda () (setq c-basic-offset 8))) (add-hook 'asm-mode-hook 'mdw-fontify-asm t) (add-hook 'go-mode-hook 'mdw-fontify-go t) (add-hook 'rust-mode-hook 'mdw-fontify-rust t) diff --git a/dot/gnus.el b/dot/gnus.el index ebf83f2..a8779d9 100644 --- a/dot/gnus.el +++ b/dot/gnus.el @@ -56,6 +56,11 @@ (setq gnus-thread-sort-functions gnus-thread-sort-by-subject gnus-thread-sort-by-total-score)) +;; Configure the crypto. +(setq mm-verify-option 'known + mm-sign-option 'guided + mm-decrypt-option 'never) + ;; Use one article buffer per group. (setq gnus-single-article-buffer nil) diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 4b53771..a2989fe 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -1432,17 +1432,6 @@ (let ((dollar (make-glyph-code ?$ 'mdw-ellipsis-face)) ;;;-------------------------------------------------------------------------- ;;; C programming configuration. -;; Linux kernel hacking. - -(defvar linux-c-mode-hook) - -(defun linux-c-mode () - (interactive) - (c-mode) - (setq major-mode 'linux-c-mode) - (setq mode-name "Linux C") - (run-hooks 'linux-c-mode-hook)) - ;; Make C indentation nice. (defun mdw-c-lineup-arglist (langelem) @@ -1461,28 +1450,108 @@ (defun mdw-c-indent-extern-mumble (langelem) c-basic-offset nil))) -(defun mdw-c-style () - (c-add-style "[mdw] C and C++ style" - '((c-basic-offset . 2) - (comment-column . 40) - (c-class-key . "class") - (c-backslash-column . 72) - (c-offsets-alist - (substatement-open . (add 0 c-indent-one-line-block)) - (defun-open . (add 0 c-indent-one-line-block)) - (arglist-cont-nonempty . mdw-c-lineup-arglist) - (topmost-intro . mdw-c-indent-extern-mumble) - (cpp-define-intro . 0) - (knr-argdecl . 0) - (inextern-lang . [0]) - (label . 0) - (case-label . +) - (access-label . -) - (inclass . +) - (inline-open . ++) - (statement-cont . +) - (statement-case-intro . +))) - t)) +(defun mdw-c-indent-arglist-nested (langelem) + "Indent continued argument lists. +If we've nested more than one argument list, then only introduce a single +indentation anyway." + (let ((context c-syntactic-context) + (pos (c-langelem-2nd-pos c-syntactic-element)) + (should-indent-p t)) + (while (and context + (eq (caar context) 'arglist-cont-nonempty)) + (when (and (= (caddr (pop context)) pos) + context + (memq (caar context) '(arglist-intro + arglist-cont-nonempty))) + (setq should-indent-p nil))) + (if should-indent-p '+ 0))) + +(defvar mdw-define-c-styles-hook nil + "Hook run when `cc-mode' starts up to define styles.") + +(defmacro mdw-define-c-style (name &rest assocs) + "Define a C style, called NAME (a symbol), setting ASSOCs. +A function, named `mdw-define-c-style/NAME', is defined to actually install +the style using `c-add-style', and added to the hook +`mdw-define-c-styles-hook'. If CC Mode is already loaded, then the style is +set." + (declare (indent defun)) + (let* ((name-string (symbol-name name)) + (func (intern (concat "mdw-define-c-style/" name-string)))) + `(progn + (defun ,func () (c-add-style ,name-string ',assocs)) + (and (featurep 'cc-mode) (,func)) + (add-hook 'mdw-define-c-styles-hook ',func)))) + +(eval-after-load "cc-mode" + '(run-hooks 'mdw-define-c-styles-hook)) + +(mdw-define-c-style mdw-trustonic-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-class-key . "class") + (c-backslash-column . 0) + (c-auto-align-backslashes . nil) + (c-label-minimum-indentation . 0) + (c-offsets-alist (substatement-open . (add 0 c-indent-one-line-block)) + (defun-open . (add 0 c-indent-one-line-block)) + (arglist-cont-nonempty . mdw-c-indent-arglist-nested) + (topmost-intro . mdw-c-indent-extern-mumble) + (cpp-define-intro . 0) + (knr-argdecl . 0) + (inextern-lang . [0]) + (label . 0) + (case-label . +) + (access-label . -) + (inclass . +) + (inline-open . ++) + (statement-cont . +) + (statement-case-intro . +))) + +(mdw-define-c-style mdw-c + (c-basic-offset . 2) + (comment-column . 40) + (c-class-key . "class") + (c-backslash-column . 72) + (c-label-minimum-indentation . 0) + (c-offsets-alist (substatement-open . (add 0 c-indent-one-line-block)) + (defun-open . (add 0 c-indent-one-line-block)) + (arglist-cont-nonempty . mdw-c-lineup-arglist) + (topmost-intro . mdw-c-indent-extern-mumble) + (cpp-define-intro . 0) + (knr-argdecl . 0) + (inextern-lang . [0]) + (label . 0) + (case-label . +) + (access-label . -) + (inclass . +) + (inline-open . ++) + (statement-cont . +) + (statement-case-intro . +))) + +(defun mdw-set-default-c-style (modes style) + "Update the default CC Mode style for MODES to be STYLE. + +MODES may be a list of major mode names or a singleton. STYLE is a style +name, as a symbol." + (let ((modes (if (listp modes) modes (list modes))) + (style (symbol-name style))) + (setq c-default-style + (append (mapcar (lambda (mode) + (cons mode style)) + modes) + (remove-if (lambda (assoc) + (memq (car assoc) modes)) + (if (listp c-default-style) + c-default-style + (list (cons 'other c-default-style)))))))) +(setq c-default-style "mdw-c") + +(mdw-set-default-c-style '(c-mode c++-mode) 'mdw-c) (defvar mdw-c-comment-fill-prefix `((,(concat "\\([ \t]*/?\\)" @@ -1501,11 +1570,7 @@ (defun mdw-fontify-c-and-c++ () (modify-syntax-entry ?\n "> b") ;; Other stuff. - (mdw-c-style) - (setq c-hanging-comment-ender-p nil - c-backslash-column 72 - c-label-minimum-indentation 0 - mdw-fill-prefix mdw-c-comment-fill-prefix) + (setq mdw-fill-prefix mdw-c-comment-fill-prefix) ;; Now define things to be fontified. (make-local-variable 'font-lock-keywords) @@ -1680,12 +1745,8 @@ (defun mdw-fontify-c-and-c++ () ;;;-------------------------------------------------------------------------- ;;; AP calc mode. -(defun apcalc-mode () - (interactive) - (c-mode) - (setq major-mode 'apcalc-mode) - (setq mode-name "AP Calc") - (run-hooks 'apcalc-mode-hook)) +(define-derived-mode apcalc-mode c-mode "AP Calc" + "Major mode for editing Calc code.") (defun mdw-fontify-apcalc () @@ -1694,9 +1755,6 @@ (defun mdw-fontify-apcalc () (modify-syntax-entry ?/ ". 14") ;; Other stuff. - (mdw-c-style) - (setq c-hanging-comment-ender-p nil) - (setq c-backslash-column 72) (setq comment-start "/* ") (setq comment-end " */") (setq mdw-fill-prefix mdw-c-comment-fill-prefix) @@ -1734,25 +1792,22 @@ (defun mdw-fontify-apcalc () ;; Make indentation nice. -(defun mdw-java-style () - (c-add-style "[mdw] Java style" - '((c-basic-offset . 2) - (c-offsets-alist (substatement-open . 0) - (label . +) - (case-label . +) - (access-label . 0) - (inclass . +) - (statement-case-intro . +))) - t)) +(mdw-define-c-style mdw-java + (c-basic-offset . 2) + (c-backslash-column . 72) + (c-offsets-alist (substatement-open . 0) + (label . +) + (case-label . +) + (access-label . 0) + (inclass . +) + (statement-case-intro . +))) +(mdw-set-default-c-style 'java-mode 'mdw-java) ;; Declare Java fontification style. (defun mdw-fontify-java () ;; Other stuff. - (mdw-java-style) - (setq c-hanging-comment-ender-p nil) - (setq c-backslash-column 72) (setq mdw-fill-prefix mdw-c-comment-fill-prefix) ;; Now define things to be fontified. @@ -1931,25 +1986,22 @@ (defun mdw-fontify-scala () ;; Make indentation nice. -(defun mdw-csharp-style () - (c-add-style "[mdw] C# style" - '((c-basic-offset . 2) - (c-offsets-alist (substatement-open . 0) - (label . 0) - (case-label . +) - (access-label . 0) - (inclass . +) - (statement-case-intro . +))) - t)) +(mdw-define-c-style mdw-csharp + (c-basic-offset . 2) + (c-backslash-column . 72) + (c-offsets-alist (substatement-open . 0) + (label . 0) + (case-label . +) + (access-label . 0) + (inclass . +) + (statement-case-intro . +))) +(mdw-set-default-c-style 'csharp-mode 'mdw-csharp) ;; Declare C# fontification style. (defun mdw-fontify-csharp () ;; Other stuff. - (mdw-csharp-style) - (setq c-hanging-comment-ender-p nil) - (setq c-backslash-column 72) (setq mdw-fill-prefix mdw-c-comment-fill-prefix) ;; Now define things to be fontified. @@ -2262,21 +2314,19 @@ (defun mdw-fontify-rust () ;; Make Awk indentation nice. -(defun mdw-awk-style () - (c-add-style "[mdw] Awk style" - '((c-basic-offset . 2) - (c-offsets-alist (substatement-open . 0) - (statement-cont . 0) - (statement-case-intro . +))) - t)) +(mdw-define-c-style mdw-awk + (c-basic-offset . 2) + (c-offsets-alist (substatement-open . 0) + (c-backslash-column . 72) + (statement-cont . 0) + (statement-case-intro . +))) +(mdw-set-default-c-style 'awk-mode 'mdw-awk) ;; Declare Awk fontification style. (defun mdw-fontify-awk () ;; Miscellaneous fiddling. - (mdw-awk-style) - (setq c-backslash-column 72) (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)") ;; Now define things to be fontified.