passage/minorGems/.emacs
2025-10-03 02:19:59 -04:00

242 lines
8.2 KiB
Text

; Modification History
;;
;; 2001-March-10 Jason Rohrer
;; Created.
;; Fixed so that c++ mode is used for .h files.
;; Fixed [C-backspace] mapping.
;;
;; 2001-May-21 Jason Rohrer
;; Changed so that Java inclass items are not doubly indented.
;;
;; 2002-January-21 Jason Rohrer
;; Gave in and set to use spaces instead of tabs.
;; This is primarily motivated by the fact that tabs look terrible
;; in CVS-web.
;;
;; 2005-January-16 Jason Rohrer
;; Added php mode.
;;
;; 2010-January-7 Jason Rohrer
;; Added count-words function (nice!)
;;
(custom-set-variables
;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
'(case-fold-search t)
'(current-language-environment "ASCII")
'(global-font-lock-mode t nil (font-lock))
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60)))
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
)
;(setq-default scroll-step 1) ; turn off jumpy scroll
(setq-default visible-bell t) ; no beeps, flash on errors
(display-time) ; display the time on modeline
(column-number-mode t) ; display the column number on modeline
(setq-default kill-whole-line t) ; ctrl-k kills whole line if at col 0
(setq-default fill-column 80) ; wrap at col 80
(setq-default tab-width 4) ; show tabs as 4 cols
(setq font-lock-maximum-decoration t) ; use colours in font lock mode
(setq font-lock-maximum-size nil) ; turn off limit on font lock mode
; turn on font-lock everywhere (if possible)
(global-font-lock-mode 1 t)
; make sure C-backspace kills a word
( global-set-key `[C-backspace] `backward-kill-word )
; background color, light yellow
( add-to-list 'default-frame-alist '( background-color . "#FFFFDC" ) )
; auto fill mode
( add-hook 'c-mode-common-hook 'turn-on-auto-fill )
; fix comment syntax highlighting problems
( setq font-lock-support-mode 'lazy-lock-mode )
( setq lazy-lock-defer-time 0 )
; delete highlighted text as we type
( delete-selection-mode t )
; make sure c++ mode is used for .h files
( setq auto-mode-alist (
append '(
("\\.h$" . c++-mode)
)
auto-mode-alist
)
)
; off for now, since it screws up indenting
; load the line numbers package
;( load "setnu" );
; turn it on
;( add-hook 'c-mode-common-hook 'turn-on-setnu-mode )
( copy-face 'italic 'font-lock-comment-face )
( set-face-foreground 'font-lock-comment-face "#00AA00" )
( setq font-lock-comment-face 'font-lock-comment-face )
( copy-face 'default 'font-lock-string-face )
( set-face-foreground 'font-lock-string-face "#FF00FF" )
( setq font-lock-string-face 'font-lock-string-face )
( copy-face 'bold 'font-lock-type-face )
( set-face-foreground 'font-lock-type-face "#0000FF" )
( setq font-lock-type-face 'font-lock-type-face )
( copy-face 'bold 'font-lock-keyword-face )
( set-face-foreground 'font-lock-keyword-face "#C88000" )
( setq font-lock-keyword-face 'font-lock-keyword-face )
( copy-face 'default 'font-lock-function-name-face )
( set-face-foreground 'font-lock-function-name-face "#C80000" )
( setq font-lock-function-name-face 'font-lock-function-name-face )
( copy-face 'default 'font-lock-variable-name-face )
( set-face-foreground 'font-lock-variable-name-face "#0000FF" )
( setq font-lock-variable-name-face 'font-lock-variable-name-face )
( copy-face 'bold 'font-lock-constant-face )
( set-face-foreground 'font-lock-constant-face "#C800FF" )
( setq font-lock-constant-face 'font-lock-constant-face )
( copy-face 'bold 'font-lock-warning-face )
( set-face-foreground 'font-lock-warning-face "#FF0000" )
( setq font-lock-warning-face 'font-lock-warning-face )
( copy-face 'default 'font-lock-reference-face )
( set-face-foreground 'font-lock-reference-face "#00FFFF" )
( setq font-lock-reference-face 'font-lock-reference-face )
(defconst my-c-style
'((c-tab-always-indent . t)
(c-comment-only-line-offset . 4)
(c-hanging-braces-alist . ((substatement-open after)
(defun-open after)
(block-open after)
(class-open after)
(inline-open after)
(brace-entry-open after)
(brace-list-open)))
(c-hanging-colons-alist . ((member-init-intro before)
(inher-intro)
(case-label after)
(label after)
(access-label after)))
(c-cleanup-list . (scope-operator
empty-defun-braces
defun-close-semi))
(c-offsets-alist . ((arglist-close . c-lineup-arglist)
(substatement-open . 0)
(case-label . 4)
(block-open . 0)
(comment-intro . 0)
(block-close . 4)
(inclass . 8)
(access-label . -4)
(defun-close . 4)
(inline-close . 4)
(class-close . 4)
(brace-list-close . 4)
(knr-argdecl-intro . -)))
(c-echo-syntactic-information-p . t)
)
"My C Programming Style")
;; Customizations for all of c-mode, c++-mode, and objc-mode
(defun my-c-mode-common-hook ()
;; add my personal style and set it for the current buffer
(c-add-style "PERSONAL" my-c-style t)
;; offset customizations not in my-c-style
(c-set-offset 'member-init-intro '++)
;; other customizations
(setq tab-width 4
;; this will make sure spaces are used instead of tabs
indent-tabs-mode nil)
;; we like auto-newline and hungry-delete
(c-toggle-auto-hungry-state 1)
;; keybindings for C, C++, and Objective-C. We can put these in
;; c-mode-map because c++-mode-map and objc-mode-map inherit it
(define-key c-mode-map "\C-m" 'newline-and-indent)
)
;; the following only works in Emacs 19
;; Emacs 18ers can use (setq c-mode-common-hook 'my-c-mode-common-hook)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
(add-hook 'java-mode-hook 'my-c-mode-common-hook)
( add-hook 'perl-mode-hook 'my-perl-mode-hook )
(require 'php-mode)
; caml mode (Tuareg)
(setq auto-mode-alist (cons '("\\.ml\\w?" . tuareg-mode) auto-mode-alist))
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger" t)
; old caml mode
;(setq auto-mode-alist
; (cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
;(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
;(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)
;(if window-system (require 'caml-font))
(put 'downcase-region 'disabled nil)
;; actionscript (for flash development)
(autoload 'actionscript-mode "actionscript-mode" "Major mode for actionscript." t)
;; Activate actionscript-mode for any files ending in .as
(add-to-list 'auto-mode-alist '("\\.as$" . actionscript-mode))
;; Load our actionscript-mode extensions.
;;(eval-after-load "actionscript-mode" '(load "as-config"))
;; Jan 7, 2010
;; First version; has bugs!
(defun count-words-region (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent character followed
by at least one character that is not a word-constituent. The buffer's
syntax table determines which characters these are."
(interactive "r")
(message "Counting words in region ... ")
;;; 1. Set up appropriate conditions.
(save-excursion
(goto-char beginning)
(let ((count 0))
;;; 2. Run the while loop.
(while (< (point) end)
(re-search-forward "\\w+\\W*")
(setq count (1+ count)))
;;; 3. Send a message to the user.
(cond ((zerop count)
(message "The region does NOT have any words."))
((= 1 count) (message "The region has 1 word."))
(t (message "The region has %d words." count))))))