;; 00-build.el --- Loads the required crap for all my init files -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Monday Aug 26, 2013 16:51:28 steve>
+;; Time-stamp: <Thursday Feb 13, 2020 22:54:52 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/00-build.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 01-vars-sy.el --- Various variables -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:15:40 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 13:35:35 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/01-vars-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;;
;;; Code:
+
+;:*=======================
+;:* Keep garbage collection out of my way.
+;;
+(setq gc-cons-threshold 50000000)
+
+
;:*=======================
;:* Set default font (I do this in vars-sy.el because it is called first)
(defvar sydeffaces
;:*=======================
;:* Set the default font
-(set-face-property 'default 'face "-*-Terminus-medium-r-*-*-*-140-*-*-*-*-iso8859-*")
+(set-face-property
+ 'default
+ 'face "-*-Terminus-medium-r-*-*-*-140-*-*-*-*-iso8859-*")
;:*=======================
;:* Stuff. Lots of stuff...
(setq-default
- buffers-menu-grouping-function 'group-buffers-menu-by-mode-then-alphabetically
- buffers-menu-sort-function 'sort-buffers-menu-by-mode-then-alphabetically
+ buffers-menu-grouping-function
+ 'group-buffers-menu-by-mode-then-alphabetically
+ buffers-menu-sort-function
+ 'sort-buffers-menu-by-mode-then-alphabetically
buffers-menu-submenus-for-groups-p t
case-fold-search t
case-replace t
"Gnus directory.")
(defvar message-directory (paths-construct-path
- (list (user-home-directory) "Gnus"))
+ (list (user-home-directory) "Gnus"))
"Gnus directory.")
;:*=======================
;:* Unicode shit
-(unless (fboundp 'ucs-to-char)
- (when (featurep '(and mule mule-ucs-autoloads))
- (require 'un-define)
- (and (coding-system-p (find-coding-system 'utf-8))
- (setq-default buffer-file-coding-system
- (coding-system-name
- (find-coding-system 'utf-8))))))
+;; (unless (fboundp 'ucs-to-char)
+;; (when (featurep '(and mule mule-ucs-autoloads))
+;; (require 'un-define)
+;; (and (coding-system-p (find-coding-system 'utf-8))
+;; (setq-default buffer-file-coding-system
+;; (coding-system-name
+;; (find-coding-system 'utf-8))))))
+
+;:*=======================
+;:* Fix #'run-at-time
+;; You get an `args-out-of-range' error if you try to set a #'run-at-time
+;; to go off in the past. That's not as silly as it sounds, think of
+;; things you want to run once per day. At some point the 'time' will be
+;; in the past for the current day.
+(or (featurep 'timer-funcs)
+ (require 'timer-funcs))
+
+(defadvice run-at-time (before future-run-at-time first activate)
+ "If TIME is in the past, set it for tomorrow."
+ (when (stringp time)
+ (let ((tspec (timer-parse-time time)))
+ (if tspec
+ (progn
+ (setq time
+ (ceiling
+ (itimer-time-difference tspec (current-time))))
+ (if (< time 0)
+ (setq time (+ time 86400))))))))
+;:*=======================
+;:* Here because sometimes... order important it is
+(require 'ffi-wand)
+
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
(message "variables initialiased")
;; 02-keys-sy.el --- Keybindings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 09:38:11 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 11:56:43 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/02-keys-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 03-c-mode-sy.el --- Set up C mode -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 09:39:52 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 12:00:39 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/03-c-mode-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
(c-set-style "linux")
(setq mode-name "Linux/C"))
-(unless (member '("^.*/linux.*/.*\\.[ch]$" . linux-c-mode) auto-mode-alist)
- (add-to-list 'auto-mode-alist '("^.*/linux.*/.*\\.[ch]$" . linux-c-mode)))
+(unless (member '("^.*/linux.*/.*\\.[ch]$" . linux-c-mode)
+ auto-mode-alist)
+ (add-to-list 'auto-mode-alist
+ '("^.*/linux.*/.*\\.[ch]$" . linux-c-mode)))
;:*=======================
;:* C style for XEmacs core source files
(c-set-style "gnu")
(setq mode-name "XE/C"))
-(unless (member '("^.*/xemacs.*/.*\\.[ch]$" . xemacs-c-mode) auto-mode-alist)
- (add-to-list 'auto-mode-alist '("^.*/xemacs.*/.*\\.[ch]$" . xemacs-c-mode)))
+(unless (member '("^.*/xemacs.*/.*\\.[ch]$" . xemacs-c-mode)
+ auto-mode-alist)
+ (add-to-list 'auto-mode-alist
+ '("^.*/xemacs.*/.*\\.[ch]$" . xemacs-c-mode)))
;:*=======================
;:* C style for SXEmacs core source files
(make-variable-buffer-local 'c-enable-xemacs-performance-kludge-p)
(setq c-enable-xemacs-performance-kludge-p t))
-(unless (member '("^.*/sxemacs.*/.*\\.[ch]$" . sxemacs-c-mode) auto-mode-alist)
- (add-to-list 'auto-mode-alist '("^.*/sxemacs.*/.*\\.[ch]$" . sxemacs-c-mode)))
+(unless (member '("^.*/sxemacs.*/.*\\.[ch]$" . sxemacs-c-mode)
+ auto-mode-alist)
+ (add-to-list 'auto-mode-alist
+ '("^.*/sxemacs.*/.*\\.[ch]$" . sxemacs-c-mode)))
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(message "C mode initialised.")
;; 04-w3-sy.el --- W3 Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 09:40:38 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 12:01:38 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/04-w3-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 05-latex-sy.el --- LaTeX Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 09:44:34 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 16:45:05 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/05-latex-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
(require 'latex)
(require 'reftex)
(require 'reftex-vars)
-;(require 'latex-units)
-;(require 'font-latex)
+(require 'latex-units)
+;; loading the .elc causes byte-optimiser warnings. No doubt it is
+;; incompatible GNUisms of some kind. Explicitly loading the .el gets
+;; around it.
+(require 'font-latex "font-latex.el")
;:*=======================
;:* Shutup the byte-compiler
(expand-file-name "documents/TeX" (getenv "HOME")))
TeX-outline-extra nil
TeX-parse-self t
- TeX-printer-default "HP Single"
- TeX-printer-list
- '(("HP Single" "dvips -f %s|lpr -PHP_Single@bastard" "lpq -PHP_Single@bastard")
- ("HP Duplex" "dvips -f %s|lpr -PHP_Duplex@bastard" "lpq -PHP_Duplex@bastard")
- ("HP Photo" "dvips -f %s|lpr -PHP_Photo@bastard" "lpq -PHP_Photo@bastard")
- ("HP draft" "dvips -f %s|lpr -PHP_draft@bastard" "lpq -PHP_draft@bastard")))
+ TeX-printer-default "Single Colour"
+ TeX-printer-list
+ '(("Duplex Colour" "dvips -f %s|lpr -PDuplex_Colour" "lpq -PDuplex_Colour")
+ ("Single Colour" "dvips -f %s|lpr -PSingle_Colour" "lpq -PSingle_Colour")
+ ("Duplex Grey" "dvips -f %s|lpr -PDuplex_Grey" "lpq -PDuplex_Grey")
+ ("Single Grey" "dvips -f %s|lpr -PSingle_Grey" "lpq -PSingle_Grey")
+ ("Photo" "dvips -f %s|lpr -PPhoto" "lpq -PPhoto")
+ ("DL Envelope" "dvips -f %s|lpr -PDL_Envelope" "lpq -PDL_Envelope")))
(setq-default LaTeX-default-options "a4paper,12pt")
(setq-default TeX-master t)
reftex-use-multiple-selection-buffers t
reftex-vref-is-default t)
+(define-key reftex-mode-map [(shift button=)]
+ 'reftex-mouse-view-crossref)
+
;:*=======================
;:* Index support
;;When writing a document with an index you will probably define
;:*=======================
;* Hooks.
-(add-hook 'reftex-load-hook
- #'(lambda ()
- (define-key reftex-mode-map [(shift button2)]
- 'reftex-mouse-view-crossref)))
-
-(add-hook 'LaTeX-mode-hook
- #'(lambda ()
- (turn-on-auto-fill)
- (setq TeX-shell "/bin/bash")
- (make-local-variable 'ispell-extra-args)
- (push "-t" ispell-extra-args)
- (turn-on-reftex)
- (add-to-list
- 'TeX-command-list
+(defun sy-LaTeX-mode-hook ()
+ (turn-on-auto-fill)
+ (setq TeX-shell "/bin/zsh")
+ (make-local-variable 'ispell-extra-args)
+ (push "-t" ispell-extra-args)
+ (turn-on-reftex)
+ (add-to-list 'TeX-command-list
'("xpdf" "xpdf %s.pdf" TeX-run-silent t nil))
- (add-to-list
- 'TeX-command-list
+ (add-to-list 'TeX-command-list
'("gv" "gv %s.ps" TeX-run-silent t nil))
- (add-to-list
- 'TeX-command-list
+ (add-to-list 'TeX-command-list
'("pdflatex" "pdflatex -interaction=nonstopmode %t"
- TeX-run-command nil t))))
+ TeX-run-command nil t)))
+
+(add-hook 'LaTeX-mode-hook #'sy-LaTeX-mode-hook)
+
;; Add a couple more things if we're in X
;;(when (and (device-on-window-system-p)
LaTeX-section-toc
LaTeX-section-section
LaTeX-section-label))
+
;:*=======================
;:* Texinfo
;; This is _NOT_ the texinfo-mode that comes with AucTeX, because that
("@node \\(.*$\\)" 1 font-lock-warning-face)
("^@[cfvkpt]index \\(.*$\\)" 1 font-lock-variable-name-face)))
-(defun sy-texinfo-menu () (easy-menu-add texinfo-mode-menu))
+(defun sy-texinfo-menu ()
+ (easy-menu-add texinfo-mode-menu))
+
(add-hook 'texinfo-mode-hook #'sy-texinfo-menu)
(add-hook 'texinfo-mode-hook #'font-lock-mode)
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
;; 06-tex-site-sy.el --- Because AUCTeX is stupid -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 09:45:38 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 12:48:57 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/06-tex-site-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 07-html-sy.el --- HTML settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Wednesday Dec 30, 2015 18:18:26 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 13:05:05 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/07-html-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; logos to the bottom of the page, together with a copyright notice. This
;; is the raw HTML for that.
(defconst sy-htmlize-appendix
- "<!-- Logos -->
+ (concat "<!-- Logos -->
<p>
<br>
<!-- SXEmacs Logo -->
</p>
<!-- End Valid HTML / CSS-->
- <h6>Copyright © 2015 Steve Youngs<br>
+ <h6>Copyright © "
+ (format-time-string "%Y")
+ " Steve Youngs<br>
Verbatim copying and distribution is permitted in any medium,
providing this notice is preserved.<br>
<!-- hhmts start -->
<!-- hhmts end -->
</h6>
-")
+"))
;; Appends the above to each page. Run from `htmlize-after-hook'.
(defun sy-htmlize-append ()
;; 08-sounds-sy.el --- Sound set up -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:16:59 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 13:33:32 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/08-sounds-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 09-toolbar-sy.el --- Toolbar set up -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:17:25 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 13:37:36 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/09-toolbar-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
(defvar toolbar-redo-icon
(toolbar-make-button-list
- (expand-file-name "redo.xpm"
- (file-name-as-directory
- (expand-file-name "etc/SXEmacs"
- (getenv "HOME"))))))
+ (locate-data-file "redo.xpm")))
(defun toolbar-irc ()
(interactive)
(locate-data-file "emoney.png")))
(and (device-on-window-system-p)
- (set-specifier default-toolbar
- '([toolbar-file-icon toolbar-open t "Open a file"]
- [toolbar-folder-icon toolbar-dired t "Edit a directory"]
- [toolbar-disk-icon toolbar-save t "Save buffer"]
- [toolbar-printer-icon toolbar-print t "Print buffer"]
- [toolbar-cut-icon toolbar-cut t "Kill region"]
- [toolbar-copy-icon toolbar-copy t "Copy region"]
- [toolbar-paste-icon toolbar-paste t "Paste from clipboard"]
- [toolbar-undo-icon toolbar-undo t "Undo"]
- [toolbar-redo-icon toolbar-redo t "Redo"]
- [toolbar-spell-icon toolbar-ispell t "Check spelling"]
- [toolbar-replace-icon toolbar-replace t "Search & Replace"]
- [toolbar-compile-icon toolbar-compile t "Start a compilation"]
- [toolbar-debug-icon toolbar-debug t "Start a debugger"]
- [toolbar-emoney-icon toolbar-emoney t "Manage your millions with eMoney"]
- [toolbar-irc-icon toolbar-irc t "Be productive with Riece"]
- [toolbar-news-icon gnus-other-frame t "Gnus"]
- nil
- [toolbar-info-icon toolbar-info t "Don't Panic!!"])))
+ (set-specifier
+ default-toolbar
+ '([toolbar-file-icon toolbar-open t "Open a file"]
+ [toolbar-folder-icon toolbar-dired t "Edit a directory"]
+ [toolbar-disk-icon toolbar-save t "Save buffer"]
+ [toolbar-printer-icon toolbar-print t "Print buffer"]
+ [toolbar-cut-icon toolbar-cut t "Kill region"]
+ [toolbar-copy-icon toolbar-copy t "Copy region"]
+ [toolbar-paste-icon toolbar-paste t "Paste from clipboard"]
+ [toolbar-undo-icon toolbar-undo t "Undo"]
+ [toolbar-redo-icon toolbar-redo t "Redo"]
+ [toolbar-spell-icon toolbar-ispell t "Check spelling"]
+ [toolbar-replace-icon toolbar-replace t "Search & Replace"]
+ [toolbar-compile-icon toolbar-compile t "Start a compilation"]
+ [toolbar-debug-icon toolbar-debug t "Start a debugger"]
+ [toolbar-emoney-icon toolbar-emoney t "Manage your millions with eMoney"]
+ [toolbar-irc-icon toolbar-irc t "Be productive with Riece"]
+ [toolbar-news-icon gnus-other-frame t "Gnus"]
+ nil
+ [toolbar-info-icon toolbar-info t "Don't Panic!!"])))
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(message "Toolbar set successfully")
;; 10-pkgs-sy.el --- Various XE Package Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:17:46 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 15:30:24 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/10-pkgs-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;;
;; I want to point out that I DO NOT blindly install the "sumo"
;; packages. I only install what I need and use. And I absolutely
-;; DO NOT have the "fsf-compat" package installed.
+;; DO NOT have the "fsf-compat" package installed, although I do
+;; have overlay.el from there. It just makes my life a tad easier.
;;; Credits:
;;
;:*======================
;:* func-menu
+(require 'func-menu)
(add-hook 'find-file-hooks 'fume-setup-buffer)
(add-hook 'Manual-mode-hook 'turn-on-fume-mode)
-(define-key global-map "\C-cl" 'fume-list-functions)
-(define-key global-map "\C-cg" 'fume-prompt-function-goto)
-(define-key global-map '(control button3) 'mouse-function-menu)
+(define-key fume-mode-map [(control button3)] #'mouse-function-menu)
(setq
fume-display-in-modeline-p t
- fume-menubar-menu-location "File")
+ fume-menu-path '("View"))
;:*======================
;:* font-lock
-(remove-hook 'font-lock-mode-hook 'turn-on-fast-lock)
+;(remove-hook 'font-lock-mode-hook 'turn-on-fast-lock)
(require 'font-lock)
;:*======================
;:* recent-files.el --- Maintain menu of recently opened files.
(when (featurep 'menubar)
(require 'recent-files)
- (setq recent-files-non-permanent-submenu t)
+ (setq recent-files-non-permanent-submenu t
+ recent-files-menu-path '("File")
+ recent-files-add-menu-before "Insert File..."
+ recent-files-save-file
+ (expand-file-name ".recent-files.el" user-init-directory)
+ recent-files-dont-include
+ '(#r"\.config/sxemacs/\(howm\|diary\).*$"
+ #r"sxemacs/timelog$"
+ #r"info/dir$"
+ #r"\.\(newsrc*\|bbdb\)$"
+ #r"init\.d\.el"))
(recent-files-initialize))
;:*======================
;:* Kyle Jones' redo package.
(when running-xemacs
(require 'redo)
- (global-set-key "\C-^" 'redo) ; for tty-s...
- (global-set-key [(control ?6)] 'redo) ; ...and for X
- (global-set-key "\M-_" 'redo)) ; universal
+ (global-set-key [(control f2)] 'redo))
+
(require 'scroll-in-place)
;:*======================
;: not end the comment. Blank lines do not get comments.
(require 'newcomment)
(global-set-key '(control f12) 'comment-or-uncomment-region)
-(global-set-key '(meta f12) 'uncomment-or-uncomment-region)
+(global-set-key '(meta f12) 'comment-or-uncomment-region)
+
;:*======================
;:* parens that mark sexpressions
;:*======================
;:* Speedbar
+;;; FIXME: <<< Speedbar Tooltips
+;;; >>> ~/programming/SXEmacs/packages/xemacs-packages/speedbar/speedbar.el
(setq
speedbar-query-confirmation-method 'none-but-delete
speedbar-show-unknown-files t
speedbar-trim-words-tag-hierarchy
speedbar-simple-group-tag-hierarchy
speedbar-sort-tag-hierarchy)
- speedbar-track-mouse-flag t
- speedbar-use-tool-tips-flag t
+ ;; speedbar-track-mouse-flag t
+ ;; speedbar-use-tool-tips-flag t
speedbar-visiting-tag-hook 'speedbar-recenter-to-top)
(when (featurep 'menubar)
(frame-visible-p speedbar-frame))]
"--"))
(global-set-key [(f4)] 'speedbar-get-focus)
+(require 'sb-image)
(require 'sb-info)
(require 'sb-texinfo)
(eval-after-load "speedbar" '(load-library "sb-texinfo"))
(autoload 'w3-speedbar-buttons "sb-w3"
"W3 specific speedbar button generator.")
-;; Speedbar frame props (so I can use matched windows in Sawfish)
+;;; Speedbar frame props
+;; 'name' (so I can use matched windows in Sawfish)
(setq speedbar-frame-plist
(plist-put speedbar-frame-plist 'name "Speedbar::Frame"))
+;; No scrollbars
+(setq speedbar-frame-plist
+ (plist-put speedbar-frame-plist 'scrollbar-height 0))
+(setq speedbar-frame-plist
+ (plist-put speedbar-frame-plist 'scrollbar-width 0))
+;; A little wider than default
+(setq speedbar-frame-plist
+ (plist-put speedbar-frame-plist 'width 25))
+
+;; FIXME: see... <<< PKGFix
+;; Try to load the speedbar on the right of the current frame
+(defalias 'dframe-reposition-frame-xemacs 'dframe-reposition-frame-emacs)
+(setq speedbar-default-position 'right)
+
+;; Speedbar only does the repositioning thing if the frame has to be
+;; created. If you have only closed the speedbar frame with 'q'
+;; instead of deleting it with 'Q' then the frame remains live. As
+;; there is no perceptible speed difference of coming back from
+;; either a closed or deleted speedbar frame the following will
+;; force a delete-frame even if you are only closing it.
+(defun sy-speedbar-kill ()
+ (when (frame-live-p speedbar-frame)
+ (delete-frame speedbar-frame)))
+
+(add-hook 'speedbar-before-delete-hook #'sy-speedbar-kill)
+
+
;:*======================
;:* Shell-mode
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
;:*======================
;:* Balloon Help (now in calendar settings)
+
;:*======================
;:* Version Control
(vc-load-vc-hooks)
+;; #'vc-load-vc-hooks brings in vc-xemacs which adds this hook. I
+;; would never need it.
+(remove-hook 'find-file-hooks 'vc-xemacs-hg-find-file-hook)
(setq
- vc-handled-backends '(Arch SVN GIT CVS MCVS RCS)
+ ;; I pretty much only use git now so there's no point in VC trying to
+ ;; handle any other type.
+ vc-handled-backends '(GIT)
vc-follow-symlinks t)
;:*======================
; :* Eshell
;(require 'pcmpl-arch)
(setq
+ eshell-directory-name
+ (file-name-as-directory
+ (expand-file-name "eshell" user-init-directory))
eshell-ask-to-save-history 'always
eshell-save-history-on-exit t
eshell-banner-message (concat "Welcome to Eshell on "
("Perl" . "perl-insert.pl")
("Sh" . "sh-insert.sh")))
-(add-to-list 'auto-insert-path '"~/etc/SXEmacs/templates/")
+(add-to-list 'auto-insert-path '"~/documents/Templates/")
;; Don't auto-insert into AucTeX style .els
(defadvice TeX-auto-store (around no-auto-insert activate)
;:*=======================
;:* My git shit
(require 'sy-git)
+(require 'git)
;:*======================
;:* Emacs Lisp List
;:* Howm thing. (this needs mule, but that is default so no biggie)
(require 'howm)
+(setq
+ howm-directory (file-name-as-directory
+ (expand-file-name "howm" user-init-directory))
+ howm-keyword-file (expand-file-name "howm-keys" user-init-directory)
+ howm-history-file (expand-file-name "howm-history" user-init-directory))
+
;; howm has the unfortunate name that ends in `wm' which is what
;; winmgr-mode uses, so nuke winmgr-mode from auto-mode-alist
(remove-alist 'auto-mode-alist "\\.[^/]*wm2?\\(?:rc\\)?\\'")
;; Another problem with howm... it fucks up window configuration
(defadvice howm-keyword-search (before howm-save-kw (&rest args) activate)
- "Save window configuration before viewing howm buffers."
- (window-configuration-to-register ?h))
+ "Save window configuration before viewing howm buffers."
+ (window-configuration-to-register ?h))
(defadvice howm-list-grep-fixed (before howm-save-win1 (&rest args) activate)
- "Save window configuration before viewing howm buffers."
- (window-configuration-to-register ?h))
+ "Save window configuration before viewing howm buffers."
+ (window-configuration-to-register ?h))
(defadvice howm-list-grep (before howm-save-win (&rest args) activate)
- "Save window configuration before viewing howm buffers."
- (window-configuration-to-register ?h))
+ "Save window configuration before viewing howm buffers."
+ (window-configuration-to-register ?h))
(defadvice howm-list-todo (before howm-save-win (&rest args) activate)
- "Save window configuration before viewing howm buffers."
- (window-configuration-to-register ?h))
+ "Save window configuration before viewing howm buffers."
+ (window-configuration-to-register ?h))
(defadvice howm-list-active-todo (before howm-save-win (&rest args) activate)
- "Save window configuration before viewing howm buffers."
- (window-configuration-to-register ?h))
+ "Save window configuration before viewing howm buffers."
+ (window-configuration-to-register ?h))
(defadvice riffle-kill-buffer (after howm-restore-win (&rest args) activate)
"Restore the original window configuration."
(jump-to-register ?h))
-(setq howm-directory (file-name-as-directory
- (expand-file-name "howm" user-init-directory)))
-
;; howm fucks up font-lock'ing like you wouldn't believe, adding a
;; call to `turn-on-font-lock' here at least restores a certain level
;; of normalcy.
;; Turn it on where I need it
(add-hook 'lisp-interaction-mode-hook #'turn-on-howm-mode)
-;; You gotta be fooking kidding me, this prevents lisp-initd.el from
-;; compiling the generated .el (moved to init.el)
-;(add-hook 'emacs-lisp-mode-hook #'turn-on-howm-mode)
(add-hook 'text-mode-hook #'turn-on-howm-mode)
(add-hook 'latex-mode-hook #'turn-on-howm-mode)
(add-hook 'c-mode-hook #'turn-on-howm-mode)
(add-hook 'sh-mode-hook #'turn-on-howm-mode)
+;; You gotta be fooking kidding me, this prevents lisp-initd.el from
+;; compiling the generated .el (moved to init.el)
+;;;;; (add-hook 'emacs-lisp-mode-hook #'turn-on-howm-mode)
;; Turn it off where I don't
-(add-hook 'emchat-log-mode-hook #'turn-off-howm-mode)
(add-hook 'html-mode-hook #'turn-off-howm-mode)
(add-hook 'texinfo-mode-hook #'turn-off-howm-mode)
-;;; Various other howm problem fixes
+;; Various other howm problem fixes
;; I'm having a big problem with howm/font-lock/message-mode playing
;; nicely together. This gives me font-locking in message-mode, plus
;; howm functionality, but no howm font-locking. I can live without
;; howm font-lock in one buffer.
(add-hook 'message-mode-hook #'(lambda ()
- (font-lock-mode)
- (font-lock-mode)))
+ (font-lock-mode)
+ (font-lock-mode)))
;; XEtla/howm probs
;(add-hook 'xetla-changelog-mode-hook #'turn-on-font-lock)
;(add-hook 'xetla-log-edit-mode-hook #'turn-on-font-lock)
;; ChangeLogs
(add-hook 'change-log-mode-hook #'font-lock-mode)
-;;:*=====================
-;;:* snap!
-;; save/load snapshot of application to/from text
-;; Usage:
-;;
-;; (1) M-x snap-record on application, e.g. Wanderlust.
-;; (2) Yank (C-y) on any buffer, e.g. *scratch* or ~/memo.txt.
-;; (3) M-x snap-play on yanked text ==> snapshot (1) is restored.
+;:*=====================
+;:* snap!
+;; save/load snapshot of application to/from text
+;; Usage:
+
+;; (1) M-x snap-record on application, e.g. Wanderlust.
+;; (2) Yank (C-y) on any buffer, e.g. *scratch* or ~/memo.txt.
+;; (3) M-x snap-play on yanked text ==> snapshot (1) is restored.
(require 'snap)
-;;;; env var trickery.
+;; env var trickery.
(setq snap-abbreviate-environment-variables
'("HOME" "JAVA_HOME" "module_path"))
;; 11-cal-sy.el --- Calendar Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:18:15 steve>
+;; Time-stamp: <Friday Feb 14, 2020 01:18:48 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/11-cal-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;;; Code:
;:*=======================
;:* Calendar
+(require 'cedet-compat)
(require 'diary-lib)
;(require 'calendar)
(setq
- calendar-latitude -27.3
- calendar-longitude 153.0
+ calendar-latitude -27.47
+ calendar-longitude 153.02
calendar-location-name "Brisbane"
calendar-time-zone 600
- calendar-standard-time-zone-name "EST"
cal-tex-diary t
; calendar-date-display-form ; see: "Howm Integration" below
; '((if dayname (concat dayname ", ")) day " " monthname " " year)
number-of-diary-entries 7
view-diary-entries-initially t)
+;; Use a dedicated frame for my calendar
+(setq calendar-and-diary-frame-parameters
+ '((name . "Calendar")
+ (title . "Calendar")
+ (height . 40)
+ (width . 80)
+ (minibuffer . t)
+ (default-toolbar-visible-p . nil)
+ (default-gutter-visible-p . nil)
+ (menubar-visible-p . t))
+ calendar-setup 'one-frame)
+
;:*=======================
;:* Todo
;; Turning this off for a while to see if I can get used to using Howm
;; "Add TODO item." t)
;;(global-set-key "\C-ct" 'todo-show) ;; switch to TODO buffer
;;(global-set-key "\C-cn" 'todo-insert-item) ;; insert new item
-;;(setq
-;; todo-prefix "&%%(todo-cp)"
-;; todo-file-do (expand-file-name ".todo-do" (getenv "HOME"))
-;; todo-file-done (expand-file-name ".todo-done" (getenv "HOME"))
-;; todo-file-top (expand-file-name ".todo-top" (getenv "HOME"))
-;; todo-time-string-format "%3b, %d")
+;; (setq
+;; todo-prefix "&%%(todo-cp)"
+;; todo-file-do (expand-file-name "todo-do" (paths-construct-path
+;; (list user-init-directory
+;; "todo-mode")))
+;; todo-file-done (expand-file-name "todo-done" (paths-construct-path
+;; (list user-init-directory
+;; "todo-mode")))
+;; todo-file-top (expand-file-name "todo-top" (paths-construct-path
+;; (list user-init-directory
+;; "todo-mode")))
+;; todo-time-string-format "%3b, %d")
;:*=======================
;:* Fancy Diary with perdy colours!
(setq fancy-diary-font-lock-keywords
(fancy-diary-font-lock-keywords))))
-;:*=======================
-;:* Appointments
-(require 'appt)
-(require 'balloon-help)
-(balloon-help-mode 1)
-(setq
- balloon-help-background "BlanchedAlmond"
- balloon-help-foreground "Black"
- display-time-24hr-format t
- display-time-day-and-date t
- display-time-no-mail-balloon "What! No mail? That can't be right."
- display-time-mail-balloon-show-gnus-group t
- display-time-mail-balloon-max-displayed 20
- display-time-mail-balloon-gnus-split-width 19
- display-time-mail-balloon-enhance-gnus-group
- '("private.*")
- display-time-mail-balloon-suppress-gnus-group
- '("\\(SPAM.*\\|returned\\.mail\\)"))
-(display-time)
-(appt-initialize)
-(setq
- appt-message-warning-time 30
- appt-display-format 'echo
- appt-audible t
- appt-display-mode-line t
- appt-announce-method 'appt-persistent-message-announce)
-(appt-activate 1)
;:*=======================
;:* Holidays
(defvar displayed-month)
islamic-holidays nil
general-holidays nil
local-holidays nil
+ oriental-holidays nil
other-holidays nil)
;; Set up standard Aussie holidays
(sy-easter-holidays)))
(setq mark-holidays-in-calendar t)
+;:*=======================
+;:* Appointments
+(require 'appt)
+(require 'balloon-help)
+(balloon-help-mode 1)
+(setq
+ balloon-help-background "BlanchedAlmond"
+ balloon-help-foreground "Black"
+ display-time-24hr-format t
+ display-time-day-and-date t
+ display-time-no-mail-balloon "What! No mail? That can't be right."
+ display-time-mail-balloon-show-gnus-group t
+ display-time-mail-balloon-max-displayed 20
+ display-time-mail-balloon-gnus-split-width 19
+ display-time-mail-balloon-enhance-gnus-group
+ '("private.*")
+ display-time-mail-balloon-suppress-gnus-group
+ '("\\(SPAM.*\\|returned\\.mail\\)"))
+(display-time)
+(appt-activate 1)
+(setq
+ appt-message-warning-time 30
+ appt-display-format 'echo
+ appt-audible t
+ appt-display-mode-line t
+ appt-announce-method 'appt-persistent-message-announce)
+(add-hook 'appt-make-list-hook #'appt-included-diary-entries)
+(appt-activate 1)
+
;:*=======================
;:* Howm integration
(setq
#'(lambda ()
(local-set-key [(hyper ?d)] 'calendar)))
+;:*=======================
+;:* timeclock
+;;
+;; Track time spent doing certain things
+(require 'timeclock)
+(setq timeclock-file (expand-file-name "timelog" user-init-directory))
+(setq timeclock-relative nil)
+(add-hook 'kill-emacs-query-functions 'timeclock-query-out)
+(timeclock-modeline-display)
+
+(define-key ctl-x-map "ti" 'timeclock-in)
+(define-key ctl-x-map "to" 'timeclock-out)
+(define-key ctl-x-map "tc" 'timeclock-change)
+(define-key ctl-x-map "tr" 'timeclock-reread-log)
+(define-key ctl-x-map "tu" 'timeclock-update-modeline)
+(define-key ctl-x-map "tw" 'timeclock-when-to-leave-string)
+
+
+
+;:*=======================
+;:* Start itimer to refresh just after midnight
+;;
+;; This needs my `future-run-at-time' advice.
+(run-at-time "00:01" 86400 #'redraw-calendar)
+
;:*=======================
;:* Get the show on the road
(defun sy-calendar-setup ()
;; 12-misc-sy.el --- Miscellaneous Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:18:40 steve>
+;; Time-stamp: <Friday Feb 14, 2020 01:39:28 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/12-misc-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;:* Additions to the menubar.
(when (featurep 'menubar)
(require 'big-menubar)
- (add-menu-button nil ["Fr%_ame" make-frame t] "Help"))
+
+ ;; Get rid of stuff from big-menubar that I don't like/use
+ (delete-menu-item '("Top"))
+ (delete-menu-item '("<<"))
+ (delete-menu-item '(" | "))
+ (delete-menu-item '(">>"))
+ (delete-menu-item '("Bot"))
+ (delete-menu-item '("Motion"))
+
+ ;; Add back the "Motion" menu, but as a submenu under "Cmds"
+ ;; Motion menu.
+ (add-submenu
+ '("Cmds")
+ '("Motion"
+ ["Goto Mark" exchange-point-and-mark (mark t)]
+ ["Goto Line..." goto-line t]
+ "---"
+ ["End of Balanced Parentheses ( )" forward-list t]
+ ["Beginning of Balanced Parentheses ( )" backward-list t]
+ ["Next Opening Parenthesis (" down-list t]
+ ["Previous Opening Parenthesis (" backward-up-list t]
+ ["Next Closing Parenthesis )" up-list t]
+ "---"
+ ["End of Balanced Expression" forward-sexp t]
+ ["Beginning of Balanced Expression" backward-sexp t]
+ "---"
+ ["End of Function" end-of-defun t]
+ ["Beginning of Function" beginning-of-defun t]
+ "---"
+ ["Next Page" forward-page t]
+ ["Previous Page" backward-page t]
+ "---"
+ ["End of Buffer" end-of-buffer t]
+ ["Beginning of Buffer" beginning-of-buffer t]
+ "---"
+ ["Save Current Position..." point-to-register t]
+ ["Goto Saved Position..." register-to-point t]
+ "---"
+ ["Set Marker..." set-user-marker t]
+ ["Goto Marker..." goto-user-marker t]
+ ["List Markers" list-markers t]
+ "---"
+ ["Set Goal Column" set-goal-column t]
+ ["Cancel Goal Column" (set-goal-column t) goal-column])
+ "Abbrev"))
+
;:*======================
;:* create a Kill-Ring menu
t)
(setq count (1+ count))))
kill-ring))))
- (add-submenu nil '("Kill-Ring"
- :included kill-ring
- :filter select-and-yank-filter)))
+ (add-submenu '("Edit") '("Kill-Ring"
+ :included kill-ring
+ :filter select-and-yank-filter)))
;:*======================
;: resize-minibuffer-mode makes the minibuffer automatically
;:*======================
;:* Image formats
(require 'image-mode)
-(require 'ffi-wand)
+;; Needed to load this earlier for some reason that I have long since
+;; forgotten, so it is now in 01-vars-sy.el
+;;(require 'ffi-wand)
(Wand-find-file-enable)
;:*======================
;; FFI/libWand for image files in Dired
(defun sy-dired-wand ()
- (interactive)
- (let ((file (dired-get-filename)))
- (Wand-display file)))
+ (interactive)
+ (let ((file (dired-get-filename)))
+ (Wand-display file)))
(define-key dired-mode-map [?b] #'sy-dired-wand)
(mode . hyper-apropos-mode)
(mode . Info-mode)
(mode . Manual-mode)))
- ("EMchat"
- (or
- (mode . emchat-buddy-mode)
- (mode . emchat-log-mode)
- (mode . emchat-network-mode)
- (mode . world-mode)
- (mode . emchat-history-mode)
- (name . "\\*emchat-debug\\*")
- (filename . "/home/steve/\\.emchat/history/.*")))
("Riece"
(or
(mode . riece-channel-list-mode)
;:*======================
;:* from.el - check whose sent us mail
-;(require 'from)
-;(setq
-; from-mailspools
-; '("~/mail/INBOX")
-; from-use-other-window nil
-; from-quit-command 'kill-buffer
-; from-highlight-regexp
-; #r"Merge-Req\|e\(icq\|mchat\)\|pa\(?:ckages\|tch\)\|sxemacs\|x\(?:e\(?:macs\|tla\)\|wem\)")
+(require 'from)
+(setq
+ from-mailspools '("~/mail/INBOX")
+ from-use-other-window nil
+ from-quit-command 'kill-buffer
+ from-highlight-regexp
+ #r"Merge-Req\|e\(icq\|mchat\)\|pa\(?:ckages\|tch\)\|sxemacs\|x\(?:e\(?:macs\|tla\)\|wem\)")
;:*======================
;:* PS-Print
-;; FIXME: make this work, it looks interesting!
-;(require 'ps-print)
-;(require 'ps-mule)
-;(require 'ps-bdf)
-;(require 'lpr)
-;(setq
-; bdf-directory-list
-; '("/usr/share/fonts/bdf")
-; ps-multibyte-buffer 'bdf-font-except-latin
-; ps-paper-type 'a4
-; printer-name "/dev/lp0"
-; ps-printer-name ""
-; ps-print-color-p nil)
+(require 'ps-print)
+(require 'ps-mule)
+(require 'ps-bdf)
+(require 'lpr)
+(setq
+ bdf-directory-list '("/usr/share/fonts/bdf")
+ ps-multibyte-buffer 'bdf-font-except-latin
+ ps-paper-type 'a4
+ printer-name "Duplex_Colour")
;:*======================
;:* Line and Column numbers.
("^/src" . "/usr/src")
("^/sxe" . "/home/steve/programming/SXEmacs")
("^/core" . "/home/steve/programming/SXEmacs/core/sxemacs.git")
- ("^/web" . "/home/steve/programming/SXEmacs/web/website")))
+ ("^/web" . "/home/steve/programming/SXEmacs/web/website")
+ ("^/init" . ,(expand-file-name "init.d" user-init-directory))))
;:*======================
;:* The beginnings of procmail-mode.el.
;:*======================
;:* Set the frame geometry
(unless (getenv "XWEM_RUNNING")
- (setq initial-frame-plist '(top 23 left 26 width 95 height 40)
- default-frame-plist '(top 3 left 26 width 95 height 40 name "SXEFrame")))
+ (setq default-frame-plist
+ '(name "SXEFrame" width 90))
+ (setq initial-frame-plist '(width 90)))
+
;:*======================
;:* The Beginnings of a Finance package
-(require 'emoney)
(setq
+ emoney-accounts-directory
+ (file-name-as-directory
+ (expand-file-name "emoney" user-init-directory))
emoney-bank-url "https://internetbanking.suncorpbank.com.au/"
emoney-date-format "%Y-%m-%d"
emoney-default-account "scorp-main.emy"
emoney-save-after-recalculate t
emoney-use-new-frame t)
+(require 'emoney)
+
;:*======================
;:* Modeline enhancements.
;;
(setq
abbrev-mode t
allow-deletion-of-last-visible-frame t
+ bookmark-default-file (expand-file-name "bookmarks" user-init-directory)
bookmark-save-flag 1
complex-buffers-menu-p t
etalk-process-file "talk"
(customize-set-variable 'user-mail-address "steve@steveyoungs.com")
(setq query-user-mail-address nil)
(blink-cursor-mode 1)
-;; Currently trying to live in a Unicode (UTF-8) world, so this is
-;; off.
-; (when (featurep 'mule)
-; (set-language-environment "Latin-1"))
+(when (featurep 'mule)
+ (set-language-environment "Latin-1"))
(unless (gnuserv-running-p)
(gnuserv-start))
(require 'mozmail)
(require 'info)
(setq toolbar-info-frame-plist
- '((width . 85)
- (name . "InfoFrame")))
+ '((width . 80)
+ (height . 45)
+ (name . "InfoFrame")
+ (menubar-visible-p . nil)
+ (default-toolbar-visible-p . t)
+ (default-gutter-visible-p . t)))
(unless (fboundp 'Info-search-next)
(defun Info-search-next ()
;:*=======================
;:* LiveJournal posting thingy
(require 'lj)
-(setq lj-cookie-flavour 'chrome)
-;(setq lj-cookie-flavour 'firefox)
+;(setq lj-cookie-flavour 'chrome)
+(setq lj-cookie-flavour 'firefox)
(setq lj-user-id "bastard_blog")
(setq lj-archive-posts t)
(setq lj-bcc-address "Steve Youngs <steve@localhost>")
;:* Play Sudoku
(require 'sudoku)
(setq sudoku-level 'easy)
+(setq modeline-coding-system "%C")
;:*=======================
;:* Stupid fucking Google Chrome is MIME-illiterate
;; 13-bbdb-sy.el --- Big Brother DataBase (BBDB) -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Thursday Dec 31, 2015 01:19:09 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 14:46:05 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/13-bbdb-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
"steve@bastard.steveyoungs.com"
"steve@bastard.no-ip.org"
"steve@sxemacs.org"
- "steve@emchat.org"
+ "steve@sywriting.com"
"sryoungs@iinet.net.au"
"steve.r.youngs@gmail.com"
;; The following aren't mine, but I'm using
;; 14-fonts-sy.el --- Fonts/Faces Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday Aug 16, 2013 14:03:07 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 15:10:58 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/14-fonts-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;;; Code:
;:*=======================
;:* Turn on Lazy-(lock|shot)
-;; Lazy-lock
+;;; Lazy-lock
;; (require 'lazy-lock)
;; (if (eq emacs-minor-version 5)
;; (setq font-lock-support-mode 'lazy-lock-mode)
;; (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock))
;; (setq lazy-lock-stealth-time 15)
-;; Lazy-shot (my preference)
-(require 'lazy-shot)
-(setq lazy-shot-verbose nil)
-(setq lazy-shot-stealth-verbose nil)
-(add-hook 'font-lock-mode-hook 'turn-on-lazy-shot)
+;;; Lazy-shot (my preference)
+;; (require 'lazy-shot)
+;; (setq lazy-shot-verbose nil)
+;; (setq lazy-shot-stealth-verbose nil)
+;; (add-hook 'font-lock-mode-hook 'turn-on-lazy-shot)
+
+;;; Fast-lock (it has caching!)
+(require 'fast-lock)
+(setq fast-lock-cache-directories
+ (list (paths-construct-path (list (getenv "XDG_CACHE_HOME")
+ "sxemacs" "fast-lock"))))
+(push 'save-buffer fast-lock-save-events)
+(fast-lock-mode 1)
+(add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
+(setq-default fast-lock-mode t)
;:*=======================
;:* describe-face-at-point, a function to find out which face is which
((t (:background "light grey" :foreground "Black"))))
(ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
(ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
- ;; EMchat.
- (emchat-face-away ((t (:foreground "red"))))
- (emchat-face-dnd ((t (:foreground "lightblue"))))
- (emchat-face-ffc ((t (:foreground "yellow"))))
- (emchat-face-log-read ((t (:foreground "turquoise"))))
- (emchat-face-log-unread ((t (:foreground "red"))))
- (emchat-face-na ((t (:foreground "pink"))))
- (emchat-face-occ ((t (:foreground "orange"))))
- (emchat-face-offline ((t (:foreground "grey"))))
- (emchat-face-online ((t (:foreground "green"))))
- (emchat-face-selected ((t (:background "yellow" :foreground "darkblue"))))
- (emchat-wharf-default-face ((t (:foreground "Green" :size "10pt"))))
;; LaTeX
(font-latex-bold-face ((t (:foreground "brown"))))
(font-latex-italic-face ((t (:foreground "lightcoral"))))
;:*======================= :*
; Use a sexy background pixmap.
-; (set-face-background-pixmap 'default
-; [xpm :file "~/documents/pictures/marble.xpm"])
+;(set-face-background-pixmap 'default
+; [xpm :file "~/documents/pictures/misc/marble.xpm"])
;:*=======================
;:* Set background-mode to dark (why isn't this autodetected?)
(setq frame-background-mode 'dark)
;; 15-supercite-sy.el --- Mail citing Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Saturday Aug 17, 2013 11:29:15 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 14:51:28 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/15-supercite-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;; 16-riece-sy.el --- Riece (IRC) Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Monday Nov 30, 2015 12:49:25 steve>
+;; Time-stamp: <Wednesday Feb 12, 2020 14:59:12 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/16-riece-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
(require 'riece-log)
(require 'riece)
+;; For flyspell in the command buffer. See `sy-riece-command-mode-hooks'.
+(or (featurep 'overlay)
+ (ignore-errors (require 'overlay)))
+(or (featurep 'flyspell)
+ (ignore-errors (require 'flyspell)))
+
;; Misc setq's
(setq riece-alias-percent-hack-mask "*.net"
riece-biff-check-channels '("#sxemacs"
riece-ignore-discard-message nil
riece-keywords
'("Bastard" "EMchat" "eMoney" "Gnus" "LFS" "LinuxFromScratch"
- "Linux From Scratch" "PgSQL" "PostgreSQL" "postgres" "Riece"
- "SteveYoungs" "SXEmacs" "XEmacs" "systemd" "xwem")
+ "LineageOS" "LOS" "Lineage" "Pure Nexus"
+ "Linux From Scratch" "Riece" "SteveYoungs" "SXEmacs" "XEmacs"
+ "xwem")
riece-layout '"bottom-right"
riece-retry-with-new-nickname t
riece-server-alist
(interactive)
(riece-me:command-complete-user 'reverse))
-(add-hook 'riece-command-mode-hook
- #'(lambda ()
- ;; Define a few keys here so they don't have the `C-c' prefix
- (local-set-key [iso-left-tab] #'sy-riece-complete-user-backwards)
- (local-set-key [(super next)] #'riece-command-user-list-scroll-up)
- (local-set-key [(super prior)] #'riece-command-user-list-scroll-down)
- (local-set-key [(hyper next)] #'riece-command-scroll-up)
- (local-set-key [(hyper prior)] #'riece-command-scroll-down)))
+(defun sy-riece-command-mode-hooks ()
+ "Add some nice stuff in Riece's command buffer."
+ (when (eq major-mode 'riece-command-mode)
+ ;; Define a few keys here so they don't have the `C-c' prefix
+ (local-set-key [iso-left-tab] #'sy-riece-complete-user-backwards)
+ (local-set-key [(super next)] #'riece-command-user-list-scroll-up)
+ (local-set-key [(super prior)] #'riece-command-user-list-scroll-down)
+ (local-set-key [(hyper next)] #'riece-command-scroll-up)
+ (local-set-key [(hyper prior)] #'riece-command-scroll-down)
+ ;; Turn on flyspell mode if available
+ (and (featurep (and 'overlay 'flyspell))
+ (flyspell-mode 1))))
+
+(add-hook 'riece-command-mode-hook #'sy-riece-command-mode-hooks)
+
(defun riece-me:command-complete-user (&optional reverse)
"Like `riece-command-complete-user' but restrict to current chan.
'("#sxemacs"
"#emchat"
"#xemacs"
- ;"#emacs"
+ "#emacs"
+ ;"#kde"
+ ;"#kde-devel"
+ "#LineageOS"
+ ;"#LineageOS-dev"
+ "#lxqt"
;"#postgresql"
- ;"#avahi"
- "#systemd"
- "#kdbus"
+ ;"#systemd"
"#zsh"
)
"List of channels to join after logging in and identifying to nickserv.")
sy-riece-startup-channel-list)
(defun sy-riece-login ()
- (riece-send-string (format "PRIVMSG NickServ :identify %s\r\n"
- (getenv "IRCPASSWD")))
- (sleep-for 3)
+ (progn
+ (riece-send-string (format "PRIVMSG NickServ :identify %s\r\n"
+ (getenv "IRCPASSWD")))
+ (sleep-for 15))
(let ((channel-list sy-riece-startup-channel-list)
entry identity)
(while channel-list
(defun sy-riece-cleanup-login ()
(interactive)
(let ((metachans
- #r".*\.freenode\.net\|\(Chan\|Nick\|Memo\|Seen\)Serv\|SXEbot"))
+ #r".*\.freenode\.net\|\(Chan\|Nick\|Memo\|Seen\)Serv\|SXEbot\|freenode-connect"))
(mapcar
#'(lambda (chan-vect)
(mapcar
;; 17-emchat-sy.el --- EMchat Settings -*- Emacs-Lisp -*-
-;; Copyright (C) 2007 - 2013 Steve Youngs
+;; Copyright (C) 2007 - 2020 Steve Youngs
;; Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;; Created: <2007-12-02>
-;; Time-stamp: <Friday May 29, 2015 20:53:39 steve>
+;; Time-stamp: <Friday Feb 14, 2020 01:48:44 steve>
;; Download: <http://bastard.steveyoungs.com/~steve/SXEmacs/inits/>
;; HTMLised: <http://bastard.steveyoungs.com/~steve/SXEmacs/htmlinits/17-emchat-sy.html>
;; Git Repo: git clone http://git.sxemacs.org/syinit
;;
;; My EMchat settings.
;;
+;; [2020-02-12] Sadly, everything here is deprecated and non-working. A
+;; while back the ICQ people stopped using the OSCAR protocol and disallow
+;; ALL 3rd-party clients. On top of that, ICQ is 100% owned and operated
+;; by the Russian govt. You probably shouldn't even use the official
+;; client as they routinely hand over your chat logs and details to
+;; their Russian minders. I wish I was joking. --SY.
;;; Credits:
;;
;;
;;
-;;; Code:
+;;; Code: Entire file commented, see above
;:*=======================
;:* emchat settings
-(load "emchat")
-
-;;; Experimental stuff
-
-
-;; EMchat works great in a tty, but some settings I use are best
-;; suited for X, so this just turns them off.
-(defun tty-im-setup ()
- "Set some things so I can use EMchat/Riece in tty."
- (interactive)
- (setq emchat-status-use-gutter nil
- emchat-start-in-new-frame nil
- emchat-wharf-frame-use-p nil))
-;;;
-
-(when (device-on-window-system-p)
- (setq emchat-status-use-gutter t
- emchat-start-in-new-frame t))
-
-(setq
- emchat-doctor-enabled-flag t
- emchat-emphasis-enabled-flag t
- emchat-history-enabled-flag t
- emchat-log-fill-column 72
- emchat-port 5190
- emchat-server "login.icq.com"
- emchat-smiley t
- emchat-track-enable t
- emchat-track-indicator-type 'char
- emchat-user-alias "JackaLX"
- emchat-user-password (getenv "ICQPASSWD")
- emchat-user-meta-nickname "JackaLX"
- emchat-user-meta-firstname "Steve"
- emchat-user-meta-lastname "Youngs"
- emchat-user-meta-primary-email "steve@sxemacs.org"
- emchat-user-meta-secondary-email "steve@steveyoungs.com"
- emchat-user-meta-city "Brisbane"
- emchat-user-meta-state "DOA"
- emchat-user-meta-hide-ip t
- emchat-user-meta-authorization t
- emchat-user-meta-about
- "EMchat Maintainer.\n
- If you'd like to help out with the EMchat project,
- please send me a message. Or go to:
- <http://www.emchat.org/>\n
- SXEmacs - It's not just an editor.
- It's a way of life!
- <http://www.sxemacs.org/>"
- emchat-user-meta-homepage "http://www.sxemacs.org/"
- emchat-user-meta-sex 'male
- emchat-user-meta-language-1 12
- emchat-user-meta-language-2 12
- emchat-user-meta-language-3 12
- emchat-user-meta-web-aware t
- emchat-user-initial-status "online"
- emchat-user-meta-age 38
- emchat-user-meta-birth-day 19
- emchat-user-meta-birth-month 6
- emchat-user-meta-birth-year 66
- emchat-user-meta-cell-phone "6666 6666"
- emchat-user-meta-country 61
- emchat-user-meta-fax "7777 7777"
- emchat-user-meta-phone "8888 8888"
- emchat-user-meta-street "1 Linux Lane"
- emchat-user-meta-work-homepage "http://www.sxemacs.org/"
- emchat-user-meta-work-address "What me, work?"
- emchat-user-meta-work-city "Penguinville"
- emchat-user-meta-work-company "SlackBiz"
- emchat-user-meta-work-department "Slackers"
- emchat-user-meta-work-fax "9999 9999"
- emchat-user-meta-work-phone "5555 5555"
- emchat-user-meta-work-position "Seated"
- emchat-user-meta-work-state "DOA"
- emchat-user-meta-zipcode "9999"
- emchat-buddy-view 'emchat-all-aliases
- emchat-use-sound-flag nil
- emchat-save-log-on-exit-p nil
- emchat-log-debug-flag t
- emchat-user-meta-invisible nil
- emchat-buddy-show-avatar t
- emchat-buddy-xface-foreground "black"
- emchat-buddy-xface-background "red")
-
-;; PulseAudio only seems to work if X is running
-(when (getenv "DISPLAY")
- (setq emchat-use-sound-flag t))
-
-;; Lets not auto-away.
-(customize-set-variable 'emchat-auto-away-timeout 0)
-
-(emchat-world-update)
-
-(when emchat-use-sound-flag
- (setq emchat-audio-device
- ;(make-audio-device 'alsa))
- (make-audio-device 'pulse
- :client "SXEmacs::EMchat"
- :stream "EMchat::Stream"
- :role "phone"))
- ;; SXEmacs doesn't like current ffmpeg, and SoX is dodgy ATM too
- (setq emchat-media-driver 'sndfile)
- (setq default-media-stream-volume 50)
- (setq emchat-sound-alist
- '((auth-sound . "Auth.wav")
- (buddy-sound . "Online.wav")
- (chat-sound . "Chat.wav")
- (emailx-sound . "System.wav")
- (message-sound . "Message.wav")
- (pager-sound . "System.wav")
- (system-sound . "System.wav")
- (url-sound . "URL.wav"))))
-
-
-;:*=======================
-;:* Addons/extensions
-
-(defun sy-emchat-now-playing ()
- "Return title/artist of current song."
- (interactive)
- (format "NP: %s" (mpd-now-playing)))
-
-(defun sy-emchat-send-now-playing ()
- "Send title/artist of current song."
- (interactive)
- (let ((song (sy-emchat-now-playing))
- (alias (emchat-alias-around)))
- (emchat-send-message song alias)))
-
-(defun sy-emchat-yow ()
- "When you can't think of what to say..."
- (interactive)
- (let ((message (yow))
- (alias (emchat-alias-around)))
- (emchat-send-message message alias)))
-
-
-(require 'emchat-menu)
-(define-key emchat-log-mode-map (kbd "C-c p") #'sy-emchat-send-now-playing)
-(define-key emchat-log-mode-map (kbd "C-c y") #'sy-emchat-yow)
-
-;:*=======================
-;:* Hooks
-(eval-when-compile
- (defvar alias)
- (defvar message))
-
-;;(defun sy-emchat-temp (&optional fahrenheit)
-;; "Returns a string to send to a ICQ user saying the current temp.
-
-;;With optional arg, FAHRENHEIT, don't send the temp in celsius."
-;; (if fahrenheit
-;; (let ((xwem-weather-temperature-format 'fahrenheit))
-;; (format "The current temperature here is: %s°F"
-;; (substring (xwem-weather-get-temp) 0 -2)))
-;; (let ((xwem-weather-temperature-format 'celsius))
-;; (format "The current temperature here is: %s°C"
-;; (substring (xwem-weather-get-temp) 0 -2)))))
-
-(defconst sy-beer-love
- ["when you realise, 24 beers in a case, 24 hours in a day. Coincidence?"
- "when you wake up with `CRS'... Can't Remember Shit."
- "when, to you, it's not a six-pack, it's a support group."
- "when it is the reason you get up every afternoon."
- "when you favour the 2 party system... party on Friday, party on Saturday."
- "when getting f#@ked up is your hobby."]
- "Proof you love beer.")
-
-(defun sy-emchat-beer-love ()
- (let ((prefix "You know you love beer... ")
- (love (aref sy-beer-love
- (% (+ (% (random t) 1000) 1000)
- (length sy-beer-love)))))
- (concat prefix love)))
-
-(defun sy-emchat-incoming-msg-hook ()
- (when (or (member alias emchat-visible-contacts)
- (not (member alias emchat-invisible-contacts)))
- (let ((repo "The main EMchat git repo is:
-git clone http://git.emchat.org/emchat")
- (download "EMchat source tarballs and (S)XEmacs pkg tarballs
-can be downloaded from: Offline ATM, sorry")
- (latest (shell-command-to-string
- "cd ~/programming/EMchat/emchat && git describe"))
- (lastlog (shell-command-to-string
- "cd ~/programming/EMchat/emchat && git log -1"))
- (time (format-time-string "The local time here is: %c"))
- (beer (sy-emchat-beer-love))
- (song (sy-emchat-now-playing))
- (help "Cmds are prefixed with `,,' (ie, ,,cmd). Only the first
-valid cmd in a msg is accepted. The cmd can appear anywhere in
-the msg.
-
-Accepted cmds: version, latest, lastlog, emchat-repo, download, yow,
-time, beer, song, help."))
- (cond ((string-match ",,version" message)
- (emchat-send-message-helper
- (format "I am using %s" (emchat-version)) (list alias)
- 'automatic "Version sent"))
- ((string-match ",,latest" message)
- (emchat-send-message-helper latest (list alias) 'automatic "Latest sent"))
- ((string-match ",,lastlog" message)
- (emchat-send-message-helper lastlog (list alias) 'automatic "Lastlog sent"))
- ((string-match ",,emchat-repo" message)
- (emchat-send-message-helper repo (list alias) 'automatic "Repo sent"))
- ((string-match ",,download" message)
- (emchat-send-message-helper download (list alias) 'automatic "Download sent"))
- ((string-match ",,yow" message)
- (emchat-send-message-helper (format "%s" (yow)) (list alias)
- 'automatic "Yow sent"))
- ((string-match ",,time" message)
- (emchat-send-message-helper time (list alias) 'automatic "Time sent"))
- ;((string-match ",,temp-f" message)
- ; (emchat-send-message (sy-emchat-temp 'fahrenheit) alias))
- ;((string-match ",,temp" message)
- ; (emchat-send-message (sy-emchat-temp) alias))
- ((string-match ",,beer" message)
- (emchat-send-message-helper beer (list alias) 'automatic "Beer sent"))
- ((string-match ",,song" message)
- (emchat-send-message-helper song (list alias) 'automatic "Song sent"))
- ((string-match ",,help" message)
- (emchat-send-message-helper help (list alias) 'automatic "Help sent"))))))
-
-(add-hook 'emchat-new-message-hook #'sy-emchat-incoming-msg-hook)
-
-(defun sy-emchat-zero-wharf ()
- "Helper func to zero wharf counters."
- (interactive)
- (emchat-wharf-change-messages "New" -9999)
- (emchat-wharf-change-messages "Sys" -9999))
-
-;; Use the Wharf if not using XWEM
-(unless (or (string= "notyet" (getenv "XWEM_RUNNING"))
- (string= "yes" (getenv "XWEM_RUNNING"))
- (not (device-on-window-system-p)))
- (require 'emchat-wharf)
- (setq emchat-wharf-frame-use-p t)
- (setq emchat-wharf-notice-riece-flag t)
- (push (cons 'left 1690) emchat-wharf-frame-props)
- (push (cons 'top 5) emchat-wharf-frame-props)
- (push (cons 'internal-border-width 4) emchat-wharf-frame-props)
- ;; `override-redirect' means no WM decorations, and you also get
- ;; sticky and always on top and skip pagers and task lists etc.
- ;; The downside is that often new windows will appear underneath
- ;; because the WM/DE has no knowledge of its existence. I don't
- ;; use this in KDE because you can easily get the same effect
- ;; without the downside with KDE's "Window Rules". I also don't
- ;; use this in Sawfish for similar reasons.
- (unless (or (string= (getenv "KDE_FULL_SESSION") "true")
- (string= (getenv "SAWFISH_IS_RUNNING") "true"))
- (push (cons 'override-redirect t) emchat-wharf-frame-props))
- (push (cons 'border-width 1) emchat-wharf-frame-props)
- (push (cons 'border-color "red") emchat-wharf-frame-props)
- (add-hook 'emchat-new-message-hook #'emchat-wharf-inc-messages)
- (add-hook 'emchat-system-message-hook #'emchat-wharf-inc-system)
- (add-hook 'emchat-read-message-hook #'emchat-wharf-dec-messages)
- (add-hook 'riece-biff-activity-hook #'emchat-wharf-riece-active)
- (add-hook 'riece-biff-clear-hook #'emchat-wharf-riece-inactive)
- (add-hook 'emchat-track-clear-hook #'sy-emchat-zero-wharf)
- (define-key emchat-log-mode-map [?C] #'sy-emchat-zero-wharf))
-
-;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
-(message "EMchat settings loaded")
+;; (setq emchat-directory
+;; (file-name-as-directory
+;; (expand-file-name "emchat" user-init-directory)))
+;; (load "emchat")
+
+;; ;;; Experimental stuff
+;; ;; EMchat works great in a tty, but some settings I use are best
+;; ;; suited for X, so this just turns them off.
+;; (defun tty-im-setup ()
+;; "Set some things so I can use EMchat/Riece in tty."
+;; (interactive)
+;; (setq emchat-status-use-gutter nil
+;; emchat-start-in-new-frame nil
+;; emchat-wharf-frame-use-p nil))
+;; ;;;
+
+;; (when (device-on-window-system-p)
+;; (setq emchat-status-use-gutter t
+;; emchat-start-in-new-frame t))
+
+;; (setq
+;; emchat-doctor-enabled-flag t
+;; emchat-emphasis-enabled-flag t
+;; emchat-history-enabled-flag t
+;; emchat-log-fill-column 72
+;; emchat-port 5190
+;; emchat-server "login.icq.com"
+;; emchat-smiley t
+;; emchat-track-enable t
+;; emchat-track-indicator-type 'char
+;; emchat-user-alias "JackaLX"
+;; emchat-user-password (getenv "ICQPASSWD")
+;; emchat-user-meta-nickname "JackaLX"
+;; emchat-user-meta-firstname "Steve"
+;; emchat-user-meta-lastname "Youngs"
+;; emchat-user-meta-primary-email "steve@sxemacs.org"
+;; emchat-user-meta-secondary-email "steve@steveyoungs.com"
+;; emchat-user-meta-city "Brisbane"
+;; emchat-user-meta-state "DOA"
+;; emchat-user-meta-hide-ip t
+;; emchat-user-meta-authorization t
+;; emchat-user-meta-about
+;; "EMchat Maintainer.\n
+;; If you'd like to help out with the EMchat project,
+;; please send me a message. Or go to:
+;; <http://www.emchat.org/>\n
+;; SXEmacs - It's not just an editor.
+;; It's a way of life!
+;; <http://www.sxemacs.org/>"
+;; emchat-user-meta-homepage "http://www.sxemacs.org/"
+;; emchat-user-meta-sex 'male
+;; emchat-user-meta-language-1 12
+;; emchat-user-meta-language-2 12
+;; emchat-user-meta-language-3 12
+;; emchat-user-meta-web-aware t
+;; emchat-user-initial-status "online"
+;; emchat-user-meta-age 38
+;; emchat-user-meta-birth-day 19
+;; emchat-user-meta-birth-month 6
+;; emchat-user-meta-birth-year 66
+;; emchat-user-meta-cell-phone "6666 6666"
+;; emchat-user-meta-country 61
+;; emchat-user-meta-fax "7777 7777"
+;; emchat-user-meta-phone "8888 8888"
+;; emchat-user-meta-street "1 Linux Lane"
+;; emchat-user-meta-work-homepage "http://www.sxemacs.org/"
+;; emchat-user-meta-work-address "What me, work?"
+;; emchat-user-meta-work-city "Penguinville"
+;; emchat-user-meta-work-company "SlackBiz"
+;; emchat-user-meta-work-department "Slackers"
+;; emchat-user-meta-work-fax "9999 9999"
+;; emchat-user-meta-work-phone "5555 5555"
+;; emchat-user-meta-work-position "Seated"
+;; emchat-user-meta-work-state "DOA"
+;; emchat-user-meta-zipcode "9999"
+;; emchat-buddy-view 'emchat-all-aliases
+;; emchat-use-sound-flag nil
+;; emchat-save-log-on-exit-p nil
+;; emchat-log-debug-flag t
+;; emchat-user-meta-invisible nil
+;; emchat-buddy-show-avatar t
+;; emchat-buddy-xface-foreground "black"
+;; emchat-buddy-xface-background "red")
+
+;; ;; PulseAudio only seems to work if X is running
+;; (when (getenv "DISPLAY")
+;; (setq emchat-use-sound-flag t))
+
+;; ;; Lets not auto-away.
+;; (customize-set-variable 'emchat-auto-away-timeout 0)
+
+;; (emchat-world-update)
+
+;; (when emchat-use-sound-flag
+;; (setq emchat-audio-device
+;; ;(make-audio-device 'alsa))
+;; (make-audio-device 'pulse
+;; :client "SXEmacs::EMchat"
+;; :stream "EMchat::Stream"
+;; :role "phone"))
+;; ;; SXEmacs doesn't like current ffmpeg, and SoX is dodgy ATM too
+;; (setq emchat-media-driver 'sndfile)
+;; (setq default-media-stream-volume 50)
+;; (setq emchat-sound-alist
+;; '((auth-sound . "Auth.wav")
+;; (buddy-sound . "Online.wav")
+;; (chat-sound . "Chat.wav")
+;; (emailx-sound . "System.wav")
+;; (message-sound . "Message.wav")
+;; (pager-sound . "System.wav")
+;; (system-sound . "System.wav")
+;; (url-sound . "URL.wav"))))
+
+
+;; ;:*=======================
+;; ;:* Addons/extensions
+
+;; (defun sy-emchat-now-playing ()
+;; "Return title/artist of current song."
+;; (interactive)
+;; (format "NP: %s" (mpd-now-playing)))
+
+;; (defun sy-emchat-send-now-playing ()
+;; "Send title/artist of current song."
+;; (interactive)
+;; (let ((song (sy-emchat-now-playing))
+;; (alias (emchat-alias-around)))
+;; (emchat-send-message song alias)))
+
+;; (defun sy-emchat-yow ()
+;; "When you can't think of what to say..."
+;; (interactive)
+;; (let ((message (yow))
+;; (alias (emchat-alias-around)))
+;; (emchat-send-message message alias)))
+
+
+;; (require 'emchat-menu)
+;; (define-key emchat-log-mode-map (kbd "C-c p") #'sy-emchat-send-now-playing)
+;; (define-key emchat-log-mode-map (kbd "C-c y") #'sy-emchat-yow)
+
+;; ;:*=======================
+;; ;:* Hooks
+;; (eval-when-compile
+;; (defvar alias)
+;; (defvar message))
+
+;; ;;(defun sy-emchat-temp (&optional fahrenheit)
+;; ;; "Returns a string to send to a ICQ user saying the current temp.
+
+;; ;;With optional arg, FAHRENHEIT, don't send the temp in celsius."
+;; ;; (if fahrenheit
+;; ;; (let ((xwem-weather-temperature-format 'fahrenheit))
+;; ;; (format "The current temperature here is: %s°F"
+;; ;; (substring (xwem-weather-get-temp) 0 -2)))
+;; ;; (let ((xwem-weather-temperature-format 'celsius))
+;; ;; (format "The current temperature here is: %s°C"
+;; ;; (substring (xwem-weather-get-temp) 0 -2)))))
+
+;; (defconst sy-beer-love
+;; ["when you realise, 24 beers in a case, 24 hours in a day. Coincidence?"
+;; "when you wake up with `CRS'... Can't Remember Shit."
+;; "when, to you, it's not a six-pack, it's a support group."
+;; "when it is the reason you get up every afternoon."
+;; "when you favour the 2 party system... party on Friday, party on Saturday."
+;; "when getting f#@ked up is your hobby."]
+;; "Proof you love beer.")
+
+;; (defun sy-emchat-beer-love ()
+;; (let ((prefix "You know you love beer... ")
+;; (love (aref sy-beer-love
+;; (% (+ (% (random t) 1000) 1000)
+;; (length sy-beer-love)))))
+;; (concat prefix love)))
+
+;; (defun sy-emchat-incoming-msg-hook ()
+;; (when (or (member alias emchat-visible-contacts)
+;; (not (member alias emchat-invisible-contacts)))
+;; (let ((repo "The main EMchat git repo is:
+;; git clone http://git.emchat.org/emchat")
+;; (download "EMchat source tarballs and (S)XEmacs pkg tarballs
+;; can be downloaded from: Offline ATM, sorry")
+;; (latest (shell-command-to-string
+;; "cd ~/programming/EMchat/emchat && git describe"))
+;; (lastlog (shell-command-to-string
+;; "cd ~/programming/EMchat/emchat && git log -1"))
+;; (time (format-time-string "The local time here is: %c"))
+;; (beer (sy-emchat-beer-love))
+;; (song (sy-emchat-now-playing))
+;; (help "Cmds are prefixed with `,,' (ie, ,,cmd). Only the first
+;; valid cmd in a msg is accepted. The cmd can appear anywhere in
+;; the msg.
+
+;; Accepted cmds: version, latest, lastlog, emchat-repo, download, yow,
+;; time, beer, song, help."))
+;; (cond ((string-match ",,version" message)
+;; (emchat-send-message-helper
+;; (format "I am using %s" (emchat-version)) (list alias)
+;; 'automatic "Version sent"))
+;; ((string-match ",,latest" message)
+;; (emchat-send-message-helper latest (list alias) 'automatic "Latest sent"))
+;; ((string-match ",,lastlog" message)
+;; (emchat-send-message-helper lastlog (list alias) 'automatic "Lastlog sent"))
+;; ((string-match ",,emchat-repo" message)
+;; (emchat-send-message-helper repo (list alias) 'automatic "Repo sent"))
+;; ((string-match ",,download" message)
+;; (emchat-send-message-helper download (list alias) 'automatic "Download sent"))
+;; ((string-match ",,yow" message)
+;; (emchat-send-message-helper (format "%s" (yow)) (list alias)
+;; 'automatic "Yow sent"))
+;; ((string-match ",,time" message)
+;; (emchat-send-message-helper time (list alias) 'automatic "Time sent"))
+;; ;((string-match ",,temp-f" message)
+;; ; (emchat-send-message (sy-emchat-temp 'fahrenheit) alias))
+;; ;((string-match ",,temp" message)
+;; ; (emchat-send-message (sy-emchat-temp) alias))
+;; ((string-match ",,beer" message)
+;; (emchat-send-message-helper beer (list alias) 'automatic "Beer sent"))
+;; ((string-match ",,song" message)
+;; (emchat-send-message-helper song (list alias) 'automatic "Song sent"))
+;; ((string-match ",,help" message)
+;; (emchat-send-message-helper help (list alias) 'automatic "Help sent"))))))
+
+;; (add-hook 'emchat-new-message-hook #'sy-emchat-incoming-msg-hook)
+
+;; (defun sy-emchat-zero-wharf ()
+;; "Helper func to zero wharf counters."
+;; (interactive)
+;; (emchat-wharf-change-messages "New" -9999)
+;; (emchat-wharf-change-messages "Sys" -9999))
+
+;; ;; Use the Wharf if not using XWEM
+;; (unless (or (string= "notyet" (getenv "XWEM_RUNNING"))
+;; (string= "yes" (getenv "XWEM_RUNNING"))
+;; (not (device-on-window-system-p)))
+;; (require 'emchat-wharf)
+;; (setq emchat-wharf-frame-use-p t)
+;; (setq emchat-wharf-notice-riece-flag t)
+;; (push (cons 'left 1690) emchat-wharf-frame-props)
+;; (push (cons 'top 5) emchat-wharf-frame-props)
+;; (push (cons 'internal-border-width 4) emchat-wharf-frame-props)
+;; ;; `override-redirect' means no WM decorations, and you also get
+;; ;; sticky and always on top and skip pagers and task lists etc.
+;; ;; The downside is that often new windows will appear underneath
+;; ;; because the WM/DE has no knowledge of its existence. I don't
+;; ;; use this in KDE because you can easily get the same effect
+;; ;; without the downside with KDE's "Window Rules". I also don't
+;; ;; use this in Sawfish for similar reasons.
+;; (unless (or (string= (getenv "KDE_FULL_SESSION") "true")
+;; (string= (getenv "SAWFISH_IS_RUNNING") "true"))
+;; (push (cons 'override-redirect t) emchat-wharf-frame-props))
+;; (push (cons 'border-width 1) emchat-wharf-frame-props)
+;; (push (cons 'border-color "red") emchat-wharf-frame-props)
+;; (add-hook 'emchat-new-message-hook #'emchat-wharf-inc-messages)
+;; (add-hook 'emchat-system-message-hook #'emchat-wharf-inc-system)
+;; (add-hook 'emchat-read-message-hook #'emchat-wharf-dec-messages)
+;; (add-hook 'riece-biff-activity-hook #'emchat-wharf-riece-active)
+;; (add-hook 'riece-biff-clear-hook #'emchat-wharf-riece-inactive)
+;; (add-hook 'emchat-track-clear-hook #'sy-emchat-zero-wharf)
+;; (define-key emchat-log-mode-map [?C] #'sy-emchat-zero-wharf))
+
+;; ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
+;; (message "EMchat settings loaded")
;; lisp-initd.el to NOT be able to byte-compile init.d.el
(add-hook 'emacs-lisp-mode-hook #'turn-on-howm-mode)
+;; I'm toying with the idea of trying to get XWEM running again. This
+;; won't run until I explicitly set XWEM_RUNNING to "notyet" in my
+;; ~/.xinitrc, so quite safe to leave this here until I'm ready for
+;; it.
+(when (and (string= "notyet" (getenv "XWEM_RUNNING"))
+ (device-on-window-system-p))
+ (require 'xwem-load)
+ (xwem-init)
+ (setenv "XWEM_RUNNING" "yes"))
+
;:*=======================
;:* Links to the rest of my config
;;
;; files for easy viewing online. And the filenames are hyperlinks
;; to the source init files themselves.
;;
-;; All the source files are the real deal. They're actually symlinks
-;; to the ones I have in ~/.config/sxemacs/init.d In other words, these
-;; babies are live! :-)
-;;
;; <!-- Ignore this mess, it is purely for the online HTML version of this file -->