1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <!-- Created by htmlize-1.34 in css mode. -->
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <title>10-pkgs.el</title>
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8 <meta name="author" content="Steve Youngs" />
9 <meta name="owner" content="steve@sxemacs.org" />
10 <style type="text/css">
14 background-color: #000000;
17 /* font-lock-comment-face */
21 /* font-lock-doc-string-face */
25 /* font-lock-function-name-face */
30 /* font-lock-keyword-face */
34 /* font-lock-reference-face */
38 /* font-lock-string-face */
42 /* font-lock-type-face */
46 /* font-lock-variable-name-face */
50 /* font-lock-warning-face */
57 background-color: inherit;
60 text-decoration: underline;
64 background-color: #FD00FD;
65 text-decoration: underline;
68 background-color: #000000;
69 text-decoration: none;
76 <span class="comment">;; 10-pkgs.el --- Various XE Package Settings
78 <span class="comment">;; Copyright (C) 2007 - 2020 Steve Youngs
80 <span class="comment">;; Author: Steve Youngs <<a href="mailto:steve@sxemacs.org">steve@sxemacs.org</a>>
81 ;; Maintainer: Steve Youngs <<a href="mailto:steve@sxemacs.org">steve@sxemacs.org</a>>
82 ;; Created: <2007-12-02>
83 ;; Time-stamp: <Saturday Apr 18, 2020 21:13:16 steve>
84 ;; Download: <<a href="https://downloads.sxemacs.org/SYinits">https://downloads.sxemacs.org/SYinits</a>>
85 ;; HTMLised: <<a href="https://www.sxemacs.org/SYinits/10-pkgs.html">https://www.sxemacs.org/SYinits/10-pkgs.html</a>>
86 ;; Git Repo: git clone https://git.sxemacs.org/syinit
87 ;; Keywords: init, compile
89 <span class="comment">;; This file is part of SYinit
91 <span class="comment">;; Redistribution and use in source and binary forms, with or without
92 ;; modification, are permitted provided that the following conditions
95 ;; 1. Redistributions of source code must retain the above copyright
96 ;; notice, this list of conditions and the following disclaimer.
98 ;; 2. Redistributions in binary form must reproduce the above copyright
99 ;; notice, this list of conditions and the following disclaimer in the
100 ;; documentation and/or other materials provided with the distribution.
102 ;; 3. Neither the name of the author nor the names of any contributors
103 ;; may be used to endorse or promote products derived from this
104 ;; software without specific prior written permission.
106 ;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
107 ;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
108 ;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
109 ;; DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
110 ;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
111 ;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
112 ;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
113 ;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
114 ;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
115 ;; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
116 ;; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
118 <span class="comment">;;; Commentary:
120 ;; Lots of settings for various XEmacs packages that I use. Plus a
121 ;; few other packages.
123 ;; I want to point out that I DO NOT blindly install the "sumo"
124 ;; packages. I only install what I need and use. And I absolutely
125 ;; DO NOT have the "fsf-compat" package installed, although I do
126 ;; have overlay.el from there. It just makes my life a tad easier.
128 <span class="comment">;;; Credits:
130 ;; The HTML version of this file was created with Hrvoje Niksic's
131 ;; htmlize.el which is part of the XEmacs "text-modes" package.
134 <span class="comment">;;; Todo:
138 <span class="comment">;;; Code:
139 ;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
140 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> MusicPD (Not an XEmacs package)
141 </span>(<span class="keyword">require</span> '<span class="reference">mpd</span>)
143 (<span class="keyword">defun</span> <span class="function-name">sy-mpd-play</span> ()
144 "<span class="doc-string">Start playing music from a randomly chosen playlist.</span>"
146 (mpd-send "<span class="string">clear</span>")
147 (mpd-send "<span class="string">load Full-sorted.playlist</span>")
148 (mpd-send "<span class="string">random 1</span>")
149 (mpd-send "<span class="string">repeat 1</span>")
152 (<span class="keyword">defun</span> <span class="function-name">2001-mpd-play</span> ()
153 "<span class="doc-string">Start playing 2001 audio book.</span>"
155 (mpd-send "<span class="string">clear</span>")
156 (mpd-send "<span class="string">load 2001_A_Space_Odyssey.playlist</span>")
157 (mpd-send "<span class="string">random 0</span>")
158 (mpd-send "<span class="string">repeat 0</span>")
161 <span class="comment">;; Audio keybindings
162 </span>(global-set-key [XF86AudioPlay] #'mpd-playpause)
163 (global-set-key [XF86AudioStop] #'mpd-stop)
164 (global-set-key [XF86AudioNext] #'mpd-next-track)
165 (global-set-key [XF86AudioPrev] #'mpd-previous-track)
166 (global-set-key [XF86AudioRaiseVolume] #'mpd-volume-up)
167 (global-set-key [XF86AudioLowerVolume] #'mpd-volume-down)
168 (global-set-key [XF86AudioMute] #'mpd-volume-mute/unmute)
170 <span class="comment">;; Mpd frame props
171 </span>(<span class="keyword">unless</span> (or (string= (getenv "<span class="string">KDE_FULL_SESSION</span>") "<span class="string">true</span>")
172 (string= (getenv "<span class="string">SAWFISH_IS_RUNNING</span>") "<span class="string">true</span>"))
173 (push (cons 'override-redirect t) mpd-dock-frame-plist))
174 (push (cons 'left 1780) mpd-dock-frame-plist)
175 (push (cons 'top 5) mpd-dock-frame-plist)
176 (push (cons 'internal-border-width 4) mpd-dock-frame-plist)
177 (push (cons 'border-width 1) mpd-dock-frame-plist)
178 (push (cons 'border-color "<span class="string">red</span>") mpd-dock-frame-plist)
180 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
181 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> View-process (`</span><span class="comment"><span class="reference">top</span></span><span class="comment">' for emacs)
182 </span>(<span class="keyword">require</span> '<span class="reference">view-process-mode</span>)
183 (setq View-process-host-names-and-system-types
184 '(("<span class="string">bastard.steveyoungs.com</span>"
185 ("<span class="string">linux</span>" nil "<span class="string">bsd</span>"
186 View-process-field-name-descriptions-linux
187 View-process-kill-signals-linux))))
188 (setq View-process-status-command-switches-system-v "<span class="doc-string">auxw</span>")
189 (setq View-process-ps-header-window-offset 3)
190 (add-hook 'View-process-header-mode-hook
191 (<span class="keyword">lambda</span> ()
192 (set-specifier horizontal-scrollbar-visible-p nil (current-buffer))
193 (set-specifier vertical-scrollbar-visible-p nil (current-buffer))))
195 <span class="comment">;</span><span class="comment"><span class="reference">:*=====================</span></span><span class="comment">
196 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> whitespace-mode
197 </span>(<span class="keyword">autoload</span> 'whitespace-mode "<span class="doc-string">whitespace-mode</span>" nil t)
198 (<span class="keyword">autoload</span> 'whitespace-incremental-mode "<span class="doc-string">whitespace-mode</span>" nil t)
200 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
201 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> func-menu
202 </span>(<span class="keyword">require</span> '<span class="reference">func-menu</span>)
203 (add-hook 'find-file-hooks 'fume-setup-buffer)
204 (add-hook 'Manual-mode-hook 'turn-on-fume-mode)
205 (<span class="keyword">define-key</span> <span class="variable-name">fume-mode-map</span> [(control button3)] #'mouse-function-menu)
207 fume-display-in-modeline-p t
208 fume-menu-path '("<span class="string">View</span>"))
210 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
211 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> recent-files.el --- Maintain menu of recently opened files.
212 </span>(<span class="keyword">when</span> (<span class="keyword">featurep</span> '<span class="reference">menubar</span>)
213 (<span class="keyword">require</span> '<span class="reference">recent-files</span>)
214 (setq recent-files-non-permanent-submenu t
215 recent-files-menu-path '("<span class="string">File</span>")
216 recent-files-add-menu-before "<span class="string">Insert File...</span>"
217 recent-files-save-file
218 (expand-file-name "<span class="string">.recent-files.el</span>" user-init-directory)
219 recent-files-dont-include
220 '(#r"<span class="string">\.config/sxemacs/\(howm\|diary\).*$</span>"
221 #r"<span class="string">sxemacs/timelog$</span>"
222 #r"<span class="string">info/dir$</span>"
223 #r"<span class="string">\.\(newsrc*\|bbdb\)$</span>"
224 #r"<span class="string">init\.d\.el</span>"))
225 (recent-files-initialize))
227 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
228 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> jka-compr
229 ;; Handle automatic (de)compresion of [bg]zip files
230 </span>(<span class="keyword">require</span> '<span class="reference">jka-compr</span>)
233 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
234 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> iswitchb
235 ;: A really cool package to switch buffers
236 </span>(<span class="keyword">require</span> '<span class="reference">iswitchb</span>)
237 (setq iswitchb-default-method 'samewindow)
238 (iswitchb-default-keybindings)
240 'iswitchb-define-mode-map-hook
241 '(<span class="keyword">lambda</span> ()
242 (define-key iswitchb-mode-map "<span class="string"> </span>" 'iswitchb-next-match)
243 (define-key iswitchb-mode-map [(control ?\ )] 'iswitchb-prev-match)
244 (define-key iswitchb-mode-map "<span class="string">\C-a</span>" 'iswitchb-toggle-ignore)))
246 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
247 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> backup
248 ;: move all backups in one directory
249 </span>(<span class="keyword">require</span> '<span class="reference">backup-dir</span>)
250 (setq bkup-backup-directory-info
251 '((t "<span class="string">~/.autosave/</span>" ok-create full-path)))
252 (setq version-control 'preserve-prefer-numbered)
253 (setq-default delete-old-versions t)
255 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
256 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Load minibuffer history, but only if mule or file-coding is available
257 </span>(<span class="keyword">when</span> (<span class="keyword">featurep</span> '(or mule file-coding))
258 (<span class="keyword">require</span> '<span class="reference">savehist</span>)
259 (setq savehist-file (expand-file-name "<span class="string">history</span>" user-init-directory))
260 (setq savehist-coding-system
261 (coding-system-name (find-coding-system 'utf-8)))
264 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
265 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Kyle Jones' redo package.
266 </span>(<span class="keyword">when</span> running-xemacs
267 (<span class="keyword">require</span> '<span class="reference">redo</span>)
268 (global-set-key [(control f2)] 'redo))
270 (<span class="keyword">require</span> '<span class="reference">scroll-in-place</span>)
272 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
273 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> pending-del
274 ;: Non-nil when Pending Delete mode is enabled. In Pending Delete mode, typed
275 ;: text replaces the selected region. Normally, you shouldn't modify this
276 ;: variable by hand, but use the function `</span><span class="comment"><span class="reference">pending-delete-mode</span></span><span class="comment">' instead. However,
277 ;: you can customize the default value from the options menu (auto delete
279 </span>(<span class="keyword">require</span> '<span class="reference">pending-del</span>)
280 (turn-on-pending-delete nil)
282 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
283 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> comment-region
284 ;: Comment or uncomment each line in the region.
285 ;: Comments are terminated on each line, even for syntax in which newline does
286 ;: not end the comment. Blank lines do not get comments.
287 </span>(<span class="keyword">require</span> '<span class="reference">newcomment</span>)
288 (global-set-key '(control f12) 'comment-or-uncomment-region)
289 (global-set-key '(meta f12) 'comment-or-uncomment-region)
291 <span class="comment">;;; </span><span class="comment"><span class="warning">FIXME:</span></span><span class="comment"> SXEInits
292 ;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
293 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> parens that mark sexpressions
294 </span>(<span class="keyword">require</span> '<span class="reference">paren</span>)
295 (paren-set-mode 'paren)
297 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
298 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> easy editing of crontab files
299 </span>(<span class="keyword">require</span> '<span class="reference">crontab-edit</span> "<span class="doc-string">crontab.elc</span>")
300 (setq crontab-delete-blank-lines nil)
301 (setq crontab-filename (expand-file-name "<span class="string">.crontab</span>" (user-home-directory)))
302 (setq crontab-directory
303 (paths-construct-path '("<span class="string">spool</span>" "<span class="string">cron</span>" "<span class="string">crontabs</span>") "<span class="string">/var</span>"))
305 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
306 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> a major mode for editing X resource database files
307 </span>(<span class="keyword">autoload</span> 'xrdb-mode "<span class="doc-string">xrdb-mode</span>" "<span class="doc-string">Mode for editing X resource files</span>" t)
309 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
310 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Footnote package
311 </span>(<span class="keyword">require</span> '<span class="reference">footnote</span>)
313 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
314 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Filladapt-Mode
315 </span>(<span class="keyword">require</span> '<span class="reference">filladapt</span>)
316 (setq-default filladapt-mode t)
317 (setq filladapt-fill-column-tolerance 5)
318 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
320 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
321 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Speedbar
322 ;;; </span><span class="comment"><span class="warning">FIXME:</span></span><span class="comment"> Speedbar Tooltips
323 ;;; snap:///${XPKGS}/speedbar/speedbar.el
325 speedbar-query-confirmation-method 'none-but-delete
326 speedbar-show-unknown-files t
327 speedbar-tag-hierarchy-method '(speedbar-prefix-group-tag-hierarchy
328 speedbar-trim-words-tag-hierarchy
329 speedbar-simple-group-tag-hierarchy
330 speedbar-sort-tag-hierarchy)
331 <span class="comment">;; speedbar-track-mouse-flag t
332 </span> <span class="comment">;; speedbar-use-tool-tips-flag t
333 </span> speedbar-visiting-tag-hook 'speedbar-recenter-to-top)
335 (<span class="keyword">when</span> (<span class="keyword">featurep</span> '<span class="reference">menubar</span>)
336 (add-menu-button '("<span class="string">Tools</span>")
337 ["<span class="string">Speedbar</span>" speedbar-frame-mode
338 <span class="reference">:style</span> toggle
339 <span class="reference">:selected</span> (and (boundp 'speedbar-frame)
340 (frame-live-p speedbar-frame)
341 (frame-visible-p speedbar-frame))]
342 "<span class="string">--</span>"))
343 (global-set-key [(f4)] 'speedbar-get-focus)
344 (<span class="keyword">require</span> '<span class="reference">sb-image</span>)
345 (<span class="keyword">require</span> '<span class="reference">sb-info</span>)
346 (<span class="keyword">require</span> '<span class="reference">sb-texinfo</span>)
347 (<span class="keyword">eval-after-load</span> "<span class="doc-string">speedbar</span>" '(load-library "<span class="string">sb-texinfo</span>"))
348 (<span class="keyword">eval-after-load</span> "<span class="doc-string">speedbar</span>" '(load-library "<span class="string">sb-html</span>"))
349 (<span class="keyword">autoload</span> 'w3-speedbar-buttons "<span class="doc-string">sb-w3</span>"
350 "<span class="doc-string">W3 specific speedbar button generator.</span>")
352 <span class="comment">;;; Speedbar frame props
353 ;; 'name' (so I can use matched windows in Sawfish)
354 </span>(setq speedbar-frame-plist
355 (plist-put speedbar-frame-plist 'name "<span class="string">Speedbar::Frame</span>"))
356 <span class="comment">;; No scrollbars
357 </span>(setq speedbar-frame-plist
358 (plist-put speedbar-frame-plist 'scrollbar-height 0))
359 (setq speedbar-frame-plist
360 (plist-put speedbar-frame-plist 'scrollbar-width 0))
361 <span class="comment">;; A little wider than default
362 </span>(setq speedbar-frame-plist
363 (plist-put speedbar-frame-plist 'width 25))
365 <span class="comment">;; </span><span class="comment"><span class="warning">FIXME:</span></span><span class="comment"> see... PKGFix
366 ;; Try to load the speedbar on the right of the current frame
367 </span>(<span class="keyword">defalias</span> '<span class="function-name">dframe-reposition-frame-xemacs</span> 'dframe-reposition-frame-emacs)
368 (setq speedbar-default-position 'right)
370 <span class="comment">;; Speedbar only does the repositioning thing if the frame has to be
371 ;; created. If you have only closed the speedbar frame with 'q'
372 ;; instead of deleting it with 'Q' then the frame remains live. As
373 ;; there is no perceptible speed difference of coming back from
374 ;; either a closed or deleted speedbar frame the following will
375 ;; force a delete-frame even if you are only closing it.
376 </span>(<span class="keyword">defun</span> <span class="function-name">sy-speedbar-kill</span> ()
377 (<span class="keyword">when</span> (frame-live-p speedbar-frame)
378 (delete-frame speedbar-frame)))
380 (add-hook 'speedbar-before-delete-hook #'sy-speedbar-kill)
383 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
384 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Shell-mode
385 ;; Trying to get compilation buffers to recognise ANSI colour
386 ;; sequences because GCC. Doesn't seem to work. Probably have to
387 ;; stick to `GCC_COLORS= make'
388 </span>(<span class="keyword">defun</span> <span class="function-name">sy/comint-hooks</span> ()
389 (ansi-color-for-comint-mode-on)
392 (<span class="keyword">autoload</span> 'ansi-color-for-comint-mode-on "<span class="doc-string">ansi-color</span>" nil t)
393 (add-hook 'comint-mode-hook #'sy/comint-hooks)
394 (add-hook 'compilation-mode-hook #'sy/comint-hooks)
395 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
396 (add-hook 'shell-mode-hook 'turn-on-font-lock)
398 <span class="comment">;</span><span class="comment"><span class="reference">:*=======================</span></span><span class="comment">
399 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Shell-script
400 </span>(setq sh-basic-offset 4)
402 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
403 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Compile-Mode
405 compilation-always-signal-completion t
406 mode-compile-make-program "<span class="doc-string">GCC_COLORS= make</span>"
407 compilation-read-command t
408 compilation-window-height 10
409 compile-command "<span class="doc-string">GCC_COLORS= make</span>")
411 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
412 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Version Control
413 </span>(vc-load-vc-hooks)
414 <span class="comment">;; #'vc-load-vc-hooks brings in vc-xemacs which adds this hook. I
415 ;; would never need it.
416 </span>(remove-hook 'find-file-hooks 'vc-xemacs-hg-find-file-hook)
418 <span class="comment">;; I pretty much only use git now so there's no point in VC trying to
419 </span> <span class="comment">;; handle any other type.
420 </span> vc-handled-backends '(GIT)
421 vc-follow-symlinks t)
423 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
424 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Ediff & Diff-mode
425 </span>(<span class="keyword">require</span> '<span class="reference">ediff</span>)
426 (<span class="keyword">require</span> '<span class="reference">diff-mode</span>)
427 (setq ediff-use-toolbar-p t
428 ediff-custom-diff-options "<span class="doc-string">-u</span>"
429 ediff-window-setup-function 'ediff-setup-windows-plain)
430 (setq diff-switches "<span class="doc-string">-u</span>")
432 <span class="comment">;</span><span class="comment"><span class="reference">:*=====================</span></span><span class="comment">
433 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Tramp
434 </span>(<span class="keyword">require</span> '<span class="reference">tramp</span>)
435 (setq tramp-default-method "<span class="doc-string">ssh</span>"
436 tramp-auto-save-directory "<span class="doc-string">~/.autosave/</span>"
438 '("<span class="string">/usr/lib/pkgusr</span>"
439 "<span class="string">/usr/bin</span>"
440 "<span class="string">/bin</span>"
441 "<span class="string">/usr/X11R6/bin</span>"))
443 <span class="comment">; </span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
444 ; </span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Eshell
446 eshell-directory-name
447 (file-name-as-directory
448 (expand-file-name "<span class="string">eshell</span>" user-init-directory))
449 eshell-ask-to-save-history 'always
450 eshell-save-history-on-exit t
451 eshell-banner-message (concat "<span class="string">Welcome to Eshell on </span>"
453 "<span class="string">, running </span>"
454 (shell-command-to-string "<span class="string">uname -rs</span>")
455 "<span class="string">In: </span>"
457 "<span class="string">\n\n</span>")
458 eshell-hist-ignoredups t
459 eshell-modules-list '(eshell-alias
469 <span class="comment">;eshell-rebind
470 </span> eshell-script
471 <span class="comment">;eshell-smart
476 (<span class="keyword">defun</span> <span class="function-name">sy-eshell-bol-maybe</span> (<span class="type">&optional</span> prompt)
477 "<span class="doc-string">*Move point to beginning of command or bol if there already.
478 If at bol, move point to beginning of command.
479 Optional arg, PROMPT is a regexp of your eshell prompt.</span>"
481 (<span class="keyword">let*</span> ((prompt (or prompt "<span class="string">^.+ [$%] </span>"))
482 (lbpos (point-at-bol))
483 (prspos (<span class="keyword">save-excursion</span>
485 (search-forward-regexp prompt (point-at-eol) t)))
488 (<span class="keyword">cond</span> ((null prspos)
490 ((= cpos (or prspos 0))
495 (<span class="keyword">eval-when-compile</span> (defvar eshell-mode-map))
496 (<span class="keyword">defun</span> <span class="function-name">sy-eshell-bol-maybe-key</span> ()
497 (define-key eshell-mode-map [(control ?a)] 'sy-eshell-bol-maybe))
499 (add-hook 'eshell-mode-hook #'sy-eshell-bol-maybe)
500 (add-hook 'eshell-mode-hook #'sy-eshell-bol-maybe-key t)
501 (add-hook 'eshell-output-filter-functions #'eshell-handle-ansi-color)
503 (<span class="keyword">defun</span> <span class="function-name">sy-esh-cdl</span> (<span class="type">&optional</span> type)
504 "<span class="doc-string">Eshell function to find current kernel's build or source dir.
506 Non-nil TYPE means find the current kernel's build directory, otherwise
507 find the source directory.</span>"
508 (<span class="keyword">let*</span> ((base "<span class="string">/lib/modules/</span>")
509 (ver (substring (shell-command-to-string "<span class="string">uname -r</span>") 0 -1))
510 (dir (file-name-as-directory
511 (concat base ver "<span class="string">/</span>"
512 (<span class="keyword">if</span> type
513 "<span class="string">build</span>"
514 "<span class="string">source</span>")))))
517 (<span class="keyword">defun</span> <span class="function-name">cdls</span> ()
518 "<span class="doc-string">Change directory to current kernel source directory.
520 Convenience function to use with Eshell.</span>"
524 (<span class="keyword">defun</span> <span class="function-name">cdlb</span> ()
525 "<span class="doc-string">Change directory to current kernel build directory.
527 Convenience function to use with Eshell.</span>"
531 <span class="comment">; </span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
532 ; </span><span class="comment"><span class="reference">:*</span></span><span class="comment"> FFAP -- Find File At Point
533 </span>(<span class="keyword">require</span> '<span class="reference">ffap</span>)
535 <span class="comment">;; Make sure ffap does NOT get in my way...
536 </span>(setq ffap-bindings nil)
538 (global-set-key [f3] #'find-file-at-point)
539 (global-set-key [(control x) ?4 f3] #'ffap-other-window)
540 (global-set-key [(control x) ?5 f3] #'ffap-other-frame)
541 (global-set-key [(shift button3)] #'ffap-at-mouse)
542 (global-set-key [(control shift button3)] #'ffap-menu)
545 ffap-machine-p-known 'accept
546 ffap-machine-p-unknown 'accept
547 ffap-machine-p-local 'accept)
550 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
551 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Auto-Insert
552 </span>(<span class="keyword">require</span> '<span class="reference">auto-insert-tkld</span>)
554 (setq auto-insert-alist '(("<span class="string">\\.texi\\(nfo\\)?$</span>" . "<span class="string">TeXinfo</span>")
555 ("<span class="string">\\.c$</span>" . "<span class="string">C</span>")
556 ("<span class="string">\\.cc$</span>" . "<span class="string">C++</span>")
557 ("<span class="string">\\.h$</span>" . "<span class="string">C Header</span>")
558 ("<span class="string">\\.el$</span>" . "<span class="string">Emacs Lisp</span>")
559 ("<span class="string">[Mm]akefile</span>" . "<span class="string">Makefile</span>")
560 ("<span class="string">\\.sh$</span>" . "<span class="string">Sh</span>")
561 ("<span class="string">\\.pl$</span>" . "<span class="string">Perl</span>")))
563 (setq auto-insert-type-alist '(("<span class="string">TeXinfo</span>" . "<span class="string">texinfo-insert.texi</span>")
564 ("<span class="string">C</span>" . "<span class="string">c-insert.c</span>")
565 ("<span class="string">C Header</span>" . "<span class="string">h-insert.h</span>")
566 ("<span class="string">C++</span>" . "<span class="string">c++-insert.cc</span>")
567 ("<span class="string">Emacs Lisp</span>" . "<span class="string">elisp-insert.el</span>")
568 ("<span class="string">Makefile</span>" . "<span class="string">makefile.inc</span>")
569 ("<span class="string">Perl</span>" . "<span class="string">perl-insert.pl</span>")
570 ("<span class="string">Sh</span>" . "<span class="string">sh-insert.sh</span>")))
572 (add-to-list 'auto-insert-path '"<span class="doc-string">~/documents/Templates/</span>")
574 <span class="comment">;; Don't auto-insert into AucTeX style .els
575 </span>(<span class="keyword">defadvice</span> <span class="function-name">TeX-auto-store</span> (around no-auto-insert activate)
576 "<span class="doc-string">Ensure auto-insert is deactivated</span>"
577 (<span class="keyword">let</span> ((auto-insert-automatically nil))
579 (message "<span class="doc-string">Auto-Insert initialised!</span>")
581 <span class="comment">;</span><span class="comment"><span class="reference">:*=======================</span></span><span class="comment">
582 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> My git shit
583 </span>(<span class="keyword">require</span> '<span class="reference">sy-git</span>)
584 (<span class="keyword">require</span> '<span class="reference">git</span>)
586 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
587 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Emacs Lisp List
588 </span>(<span class="keyword">defvar</span> <span class="variable-name">sxell-initialised-flag</span>)
589 (<span class="keyword">defvar</span> <span class="variable-name">sxell-download-directory</span>)
590 (<span class="keyword">when</span> (and (<span class="keyword">featurep</span> '(and sxemacs postgresql))
591 (fboundp 'ffi-defun))
592 (<span class="keyword">require</span> '<span class="reference">sxell</span>)
593 (setq sxell-initialised-flag t
594 sxell-download-directory
595 (file-name-as-directory (expand-file-name "<span class="string">download/SXEmacs</span>"
596 (user-home-directory)))))
597 <span class="comment">;</span><span class="comment"><span class="reference">:*======================</span></span><span class="comment">
598 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> EasyPG
599 </span>(<span class="keyword">require</span> '<span class="reference">epa-setup</span>)
601 (<span class="keyword">defun</span> <span class="function-name">sy-epa-export-key</span> ()
602 "<span class="doc-string">Wrapper for `</span><span class="doc-string"><span class="reference">epa-export-keys</span></span><span class="doc-string">' to export ASCII armoured keys.</span>"
604 (<span class="keyword">let</span> ((epa-armor t))
605 (call-interactively #'epa-export-keys)))
607 (<span class="keyword">define-key</span> <span class="variable-name">epa-key-list-mode-map</span> [?O] #'sy-epa-export-key)
609 <span class="comment">;</span><span class="comment"><span class="reference">:*=======================</span></span><span class="comment">
610 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Howm thing. (this needs mule, but that is default so no biggie)
611 </span>(<span class="keyword">require</span> '<span class="reference">howm</span>)
614 howm-directory (file-name-as-directory
615 (expand-file-name "<span class="string">howm</span>" user-init-directory))
616 howm-keyword-file (expand-file-name "<span class="string">howm-keys</span>" user-init-directory)
617 howm-history-file (expand-file-name "<span class="string">howm-history</span>" user-init-directory))
619 <span class="comment">;; howm has the unfortunate name that ends in `</span><span class="comment"><span class="reference">wm</span></span><span class="comment">' which is what
620 ;; winmgr-mode uses, so nuke winmgr-mode from auto-mode-alist
621 </span>(remove-alist 'auto-mode-alist "<span class="doc-string">\\.[^/]*wm2?\\(?:rc\\)?\\'</span>")
623 <span class="comment">;; The howm people are nuts, they bind C-h to scroll-down
624 ;; Get rid of it and replace with DEL and BACKSPACE
625 </span>(<span class="keyword">define-key</span> <span class="variable-name">howm-menu-mode-map</span> "<span class="doc-string">\C-h</span>" nil)
626 (<span class="keyword">define-key</span> <span class="variable-name">howm-menu-mode-map</span> [delete] #'scroll-down)
627 (<span class="keyword">define-key</span> <span class="variable-name">howm-menu-mode-map</span> [backspace] #'scroll-down)
628 (<span class="keyword">define-key</span> <span class="variable-name">riffle-summary-mode-map</span> "<span class="doc-string">\C-h</span>" nil)
629 (<span class="keyword">define-key</span> <span class="variable-name">riffle-summary-mode-map</span> [delete] #'scroll-other-window-down)
630 (<span class="keyword">define-key</span> <span class="variable-name">riffle-summary-mode-map</span> [backspace] #'scroll-other-window-down)
631 (<span class="keyword">define-key</span> <span class="variable-name">riffle-contents-mode-map</span> "<span class="doc-string">\C-h</span>" nil)
632 (<span class="keyword">define-key</span> <span class="variable-name">riffle-contents-mode-map</span> [delete] #'scroll-down)
633 (<span class="keyword">define-key</span> <span class="variable-name">riffle-contents-mode-map</span> [backspace] #'scroll-down)
635 <span class="comment">;; Add a binding to show the active todo list
636 </span>(global-set-key [(control ?c) ?t] #'howm-list-active-todo)
638 <span class="comment">;; Another problem with howm... it fucks up window configuration
640 </span>(<span class="keyword">defadvice</span> <span class="function-name">howm-keyword-search</span> (before howm-save-kw (<span class="type">&rest</span> args) activate)
641 "<span class="doc-string">Save window configuration before viewing howm buffers.</span>"
642 (window-configuration-to-register ?h))
644 (<span class="keyword">defadvice</span> <span class="function-name">howm-list-grep-fixed</span> (before howm-save-win1 (<span class="type">&rest</span> args) activate)
645 "<span class="doc-string">Save window configuration before viewing howm buffers.</span>"
646 (window-configuration-to-register ?h))
648 (<span class="keyword">defadvice</span> <span class="function-name">howm-list-grep</span> (before howm-save-win (<span class="type">&rest</span> args) activate)
649 "<span class="doc-string">Save window configuration before viewing howm buffers.</span>"
650 (window-configuration-to-register ?h))
652 (<span class="keyword">defadvice</span> <span class="function-name">howm-list-todo</span> (before howm-save-win (<span class="type">&rest</span> args) activate)
653 "<span class="doc-string">Save window configuration before viewing howm buffers.</span>"
654 (window-configuration-to-register ?h))
656 (<span class="keyword">defadvice</span> <span class="function-name">howm-list-active-todo</span> (before howm-save-win (<span class="type">&rest</span> args) activate)
657 "<span class="doc-string">Save window configuration before viewing howm buffers.</span>"
658 (window-configuration-to-register ?h))
660 (<span class="keyword">defadvice</span> <span class="function-name">riffle-kill-buffer</span> (after howm-restore-win (<span class="type">&rest</span> args) activate)
661 "<span class="doc-string">Restore the original window configuration.</span>"
662 (jump-to-register ?h))
664 <span class="comment">;; howm fucks up font-lock'ing like you wouldn't believe, adding a
665 ;; call to `</span><span class="comment"><span class="reference">turn-on-font-lock</span></span><span class="comment">' here at least restores a certain level
667 </span>(<span class="keyword">defun</span> <span class="function-name">turn-on-howm-mode</span> ()
671 (<span class="keyword">defun</span> <span class="function-name">turn-off-howm-mode</span> ()
675 <span class="comment">;; Turn it on where I need it
676 </span>(add-hook 'lisp-interaction-mode-hook #'turn-on-howm-mode)
677 (add-hook 'text-mode-hook #'turn-on-howm-mode)
678 (add-hook 'latex-mode-hook #'turn-on-howm-mode)
679 (add-hook 'c-mode-hook #'turn-on-howm-mode)
680 (add-hook 'sh-mode-hook #'turn-on-howm-mode)
681 <span class="comment">;; You gotta be fooking kidding me, this prevents lisp-initd.el from
682 ;; compiling the generated .el (moved to init.el)
683 ;; (add-hook 'emacs-lisp-mode-hook #'turn-on-howm-mode)
685 <span class="comment">;; Turn it off where I don't
686 ;; I actually would love to have howm in all of these modes, but I
687 ;; cannot get the font-locking working properly with it on
688 </span>(add-hook 'html-mode-hook #'turn-off-howm-mode)
689 (add-hook 'texinfo-mode-hook #'turn-off-howm-mode)
690 (add-hook 'message-mode-hook #'turn-off-howm-mode)
691 (add-hook 'change-log-mode-hook #'turn-off-howm-mode)
693 <span class="comment">;</span><span class="comment"><span class="reference">:*=====================</span></span><span class="comment">
694 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> snap!
695 ;; save/load snapshot of application to/from text
698 <span class="comment">;; (1) M-x snap-record on application, e.g. Wanderlust.
699 ;; (2) Yank (C-y) on any buffer, e.g. *scratch* or ~/memo.txt.
700 ;; (3) M-x snap-play on yanked text ==> snapshot (1) is restored.
701 </span>(<span class="keyword">require</span> '<span class="reference">snap</span>)
702 (global-set-key [(hyper ?s) ?r] #'snap-record)
704 <span class="comment">;; env var trickery.
705 </span>(setq snap-abbreviate-environment-variables
706 '("<span class="string">EMCHAT</span>" "<span class="string">JAVA_HOME</span>" "<span class="string">EL</span>" "<span class="string">XPKGS</span>" "<span class="string">MPKGS</span>" "<span class="string">PKGS</span>" "<span class="string">QTDIR</span>"
707 "<span class="string">BLDS</span>" "<span class="string">SXESITE</span>" "<span class="string">SXEWD</span>" "<span class="string">SYdrive</span>" "<span class="string">SYdrop</span>" "<span class="string">HOME</span>"))
709 (<span class="keyword">defadvice</span> <span class="function-name">snap-abbreviate-file-name</span> (around env-var (raw-path) activate)
711 (<span class="keyword">let</span> ((path (expand-file-name raw-path))
712 (rules (mapcar #'(<span class="keyword">lambda</span> (var)
713 (<span class="keyword">let</span> ((val (getenv var)))
715 (cons (concat "<span class="string">^</span>" (regexp-quote val))
716 (format "<span class="string">${%s}</span>" var)))))
717 snap-abbreviate-environment-variables)))
718 (mapc #'(<span class="keyword">lambda</span> (r)
719 (<span class="keyword">when</span> (and r (string-match (car r) path))
720 (setq ad-return-value
721 (replace-regexp-in-string (car r) (cdr r) path))))
724 <span class="comment">;; Bookmark extras
725 </span>(<span class="keyword">eval-after-load</span> "<span class="doc-string">bookmark</span>"
726 (<span class="keyword">progn</span>
727 (ad-enable-advice 'bookmark-buffer-file-name 'around 'with-snap)
728 (ad-enable-advice 'bookmark-jump-noselect 'around 'with-snap)))
730 <span class="comment">;; ffap extras
731 </span>(setq ffap-url-regexp snap-ffap-url-regexp)
732 (setq ffap-url-fetcher snap-ffap-url-fetcher)
734 <span class="comment">;</span><span class="comment"><span class="reference">:*=======================</span></span><span class="comment">
735 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> ElDoc (handy thingy dingy for lisp programming)
736 ;; displays function args and var doc strings in echo area
737 ;(setq eldoc-use-idle-timer-p nil)
738 ;(autoload #'turn-on-eldoc-mode "eldoc" nil t)
739 ;(add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode)
740 ;(add-hook 'lisp-interaction-mode-hook #'turn-on-eldoc-mode)
742 <span class="comment">;</span><span class="comment"><span class="reference">:*=======================</span></span><span class="comment">
743 ;</span><span class="comment"><span class="reference">:*</span></span><span class="comment"> Man pages
744 </span>(<span class="keyword">require</span> '<span class="reference">man</span>)
746 <span class="comment">;; You can't follow xrefs via keyboard, so...
747 </span>(<span class="keyword">defun</span> <span class="function-name">sy:Manual-follow-xref-kbd</span> ()
748 "<span class="doc-string">Invoke `</span><span class="doc-string"><span class="reference">manual-entry</span></span><span class="doc-string">' on the cross-reference at point.</span>"
750 (<span class="keyword">let*</span> ((ext (extent-at (point)))
751 (data (and ext (extent-property ext 'man))))
752 (<span class="keyword">if</span> (eq (car-safe data) 'Manual-follow-xref)
754 (error 'search-failed "<span class="string">no manual cross-reference there.</span>"))
755 (or (manual-entry (extent-string ext))
756 <span class="comment">;; Couldn't find it, try other sections.
757 </span> (and (string-match "<span class="string">[ \t]*([^)]+)\\'</span>" (extent-string ext))
758 (<span class="keyword">progn</span>
759 (message "<span class="string">No entries found for %s; checking other sections...</span>"
762 (substring (extent-string ext) 0 (match-beginning 0))
765 (<span class="keyword">define-key</span> <span class="variable-name">Manual-mode-map</span> [(control return)] #'sy:Manual-follow-xref-kbd)
766 (<span class="keyword">define-key</span> <span class="variable-name">Manual-mode-map</span> [button1] #'Manual-follow-xref)
768 <span class="comment">;</span><span class="comment"><span class="reference">:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*</span></span><span class="comment">
769 </span>(message "<span class="doc-string">packages loaded</span>")
771 <!-- SXEmacs Logo -->
773 <a href="https://www.sxemacs.org/" target="_parent">
774 <img style="padding:0px 5px 0px 0px;border:0;width:88px;height:31px"
775 src="/Images/cbsx.png"
776 title="This page was created entirely in SXEmacs"
777 alt="Created with SXEmacs" />
779 <!-- End SXEmacs Logo -->
780 <!-- Valid XHTML 1.0 -->
781 <a href="http://validator.w3.org/check?uri=https%3a%2f%2fwww.sxemacs.org%2fSYinits%2f10-pkgs.html" target="_blank">
782 <img style="padding:0px 5px 0px 10px;border:0;width:88px;height:31px"
783 src="/Images/valid-xhtml10.png"
784 title="Valid XHTML 1.0 Transitional!"
785 alt="Valid XHTML 1.0 Transitional!" />
788 <!-- End Valid XHTML 1.0 -->
790 <h6>Copyright © 2020 Steve Youngs<br />
791 Verbatim copying and distribution is permitted in any medium,
792 providing this notice is preserved.<br />
794 Last modified: Sat Apr 18 21:42:24 AEST 2020