Created
March 29, 2013 02:41
-
-
Save sharapeco/5268371 to your computer and use it in GitHub Desktop.
.xyzzy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require "ni/setup") | |
(ni-autoload) | |
;; diff | |
(setq ed::*diff-command-name* | |
(map-slash-to-backslash (merge-pathnames "~xyzzy/bin/diff.exe" (user-homedir-pathname)))) | |
(defun diff-selected-buffers () | |
(interactive) | |
(let (file1 file2) | |
(setq file1 (get-buffer-file-name (selected-buffer))) | |
(other-window) | |
(setq file2 (get-buffer-file-name (selected-buffer))) | |
(diff file1 file2))) | |
(global-set-key '(#\C-c #\g) 'goto-line) | |
(setq *keyword-load-path* '("~/~xyzzy/etc")) | |
;; やっぱヴァーチャル | |
(global-set-key #\C-a 'beginning-of-virtual-line) | |
(global-set-key #\C-e 'end-of-virtual-line) | |
;; ややEmacsちっくに | |
(global-set-key #\M-% 'query-replace) | |
(global-set-key #\C-/ 'undo) | |
(global-set-key #\C-\\ 'redo) | |
(global-set-key '(#\C-x #\C-w) 'emacs-write-file) | |
(global-set-key '(#\C-x #\u) 'undo) | |
(global-set-key #\M-C-\\ 'indent-region) | |
(require "dabbrev") | |
(global-set-key #\M-/ 'dabbrev-expand) | |
(global-set-key #\M-\\ 'dabbrev-popup) | |
;; コメント | |
(global-set-key '(#\C-c #\q) 'comment-out-region) | |
;; clickable-uri | |
(global-set-key '(#\C-c #\C-o) 'clickable-uri-open) | |
;; ファイル名も欲しい (C-x C-v) | |
(setq *find-other-file-requires-file-name* t) | |
;; twitter-mode | |
;;(global-set-key '(#\C-c #\C-t) 'twitter-toggle) | |
;; 漢字コード・改行コードの初期設定 | |
(setq *default-fileio-encoding* *encoding-utf8n*) | |
(setq *default-eol-code* *eol-crlf*) | |
;; .xyzzyも | |
(pushnew '("\\.xyzzy" . lisp-mode) *auto-mode-alist*) | |
;(load-library "javascript-mode") | |
(pushnew '("\\.as" . jscript-mode) *auto-mode-alist*) | |
(pushnew '("\\.mxml" . jscript-mode) *auto-mode-alist*) | |
;; sql-mode | |
(in-package "editor") | |
(add-hook '*sql-mode-hook* | |
#'(lambda () | |
(set-syntax-start-c++-comment *sql-mode-syntax-table* #\-) | |
(set-syntax-end-c++-comment *sql-mode-syntax-table* #\LFD))) | |
(in-package "user") | |
;;; ミニバッファに入ったときIMEをOFFにする | |
(export '(*ime-mode-into-minibuffer*)) | |
(defvar *ime-mode-into-minibuffer* nil) | |
(defun ime-state-get-and-setoff (bef-buffer file-name) | |
(interactive) | |
(setq *ime-mode-into-minibuffer* (get-ime-mode)) | |
(toggle-ime nil)) | |
(defun ime-state-set (bef-buffer file-name) | |
(interactive) | |
(toggle-ime *ime-mode-into-minibuffer*)) | |
(add-hook '*enter-minibuffer-hook* 'ime-state-get-and-setoff) | |
(add-hook '*exit-minibuffer-hook* 'ime-state-set) | |
;; 初期ディレクトリ | |
(cd "~/") | |
;; ファイラで上向きスクロール | |
(define-key filer-keymap #\M-v 'filer-backward-page) | |
(define-key filer-keymap #\M-o 'filer-view-file) | |
(define-key filer-keymap #\C-l 'filer-reload) | |
(define-key filer-keymap #\_ 'filer-goto-root) | |
(define-key filer-keymap #\TAB 'filer-swap-windows) | |
(define-key filer-keymap #\C-t 'filer-toggle-mark-files) | |
;; ファイラのガイドテキスト | |
(setq *filer-guide-text* | |
'("A:属性 C:コピー D:削除 E:解凍 F:検索 J:DIR移動 \ | |
K:mkdir L:ドライブ M:移動 N:ファイル名 O:圧縮 P:DIR??" | |
"R:名前変更 S:DIR?? T:ショートカット U:DIRサイズ V:リスト X:実行 .:マスク \ | |
/:マーク *:load C-t:トグル S-Home:クリア C-l:リロード F3:実行")) | |
;; ファイラの初期ディレクトリ | |
(setq *filer-primary-directory* (user-homedir-pathname)) ; 左側 | |
(setq *filer-secondary-directory* (user-homedir-pathname)) ; 右側 | |
;; ファイラの初期ファイルマスク | |
;; 2画面用 | |
(setq *filer-primary-file-mask* '("*")) ; 左側 | |
(setq *filer-secondary-file-mask* '("*")) ; 右側 | |
;; 1画面用 | |
(setq *filer-last-file-mask* '("*")) | |
;; | |
(setq *filer-directories* | |
(list | |
(cons "0 Home" (user-homedir-pathname)) | |
(cons "1 Desktop" (map-backslash-to-slash (get-special-folder-location :desktop))) | |
(cons "x xyzzy" (si:system-root)) | |
)) | |
;; ファイラでファイル名をコピーする | |
(defun filer-get-filenamestring (filename type) | |
(interactive) | |
(let (str) | |
(cond | |
((= type 1) (setq str (if (file-directory-p filename) | |
(car (reverse (pathname-directory (concat filename "x")))) | |
(file-namestring filename)))) | |
((= type 2) (setq str filename)) | |
((= type 3) (setq str (map-slash-to-backslash filename))) | |
((= type 4) (setq str (concat "file:///" filename)))) | |
str)) | |
(defun my-filer-make-clipboard-string (lst) | |
(apply #'concat (mapcar #'(lambda (x) (concat x "\n")) lst))) | |
(defun filer-get-filenames (type) | |
(interactive) | |
(let ((selected-files (or (filer-get-mark-files) | |
(list (filer-get-current-file))))) | |
(copy-to-clipboard (my-filer-make-clipboard-string | |
(mapcar #'(lambda (filename) (filer-get-filenamestring filename type)) selected-files))) | |
(message "ファイル名をコピーしました"))) | |
(defvar *get-filenamestring-menu* nil) | |
(define-key filer-keymap #\C-Insert | |
#'(lambda () (interactive) | |
(unless *get-filenamestring-menu* | |
(setq *get-filenamestring-menu* | |
(define-popup-menu | |
(:item nil "ファイル名のみコピー(&F)" | |
#'(lambda () (interactive) (filer-get-filenames 1))) | |
(:item nil "フルパス(/)でコピー(&S)" | |
#'(lambda () (interactive) (filer-get-filenames 2))) | |
(:item nil "フルパス(\\)でコピー(&E)" | |
#'(lambda () (interactive) (filer-get-filenames 3))) | |
(:item nil "URL表記でコピー(&U)" | |
#'(lambda () (interactive) (filer-get-filenames 4))) | |
))) | |
(track-popup-menu *get-filenamestring-menu*))) | |
;; バックアップファイルはまとめて | |
(require "backup") | |
(setq *backup-directory* (merge-pathnames "~xyzzy/backup" (user-homedir-pathname))) | |
(setq *hierarchic-backup-directory* nil) | |
;;; 大文字のファイル名をファイラで一括して小文字へ | |
(defun filer-downcase-filename () | |
(let ((files (filer-get-mark-files))) | |
(when (and files (yes-or-no-p "小文字にしまっせ")) | |
(filer-subscribe-to-reload (filer-get-directory)) | |
(mapc #'(lambda (x) (rename-file x (string-downcase x))) files) | |
(filer-demand-reload) | |
(filer-goto-file (file-namestring (car files)))) | |
t)) | |
(define-key filer-keymap '(#\C-x #\C-l) 'filer-downcase-filename) | |
(defun copy-buffer () | |
(interactive) | |
(let ((currentpo (point))) | |
(selection-whole-buffer) | |
(copy-selection-to-clipboard) | |
(start-selection-as-line) | |
(goto-char currentpo))) | |
(global-set-key '(#\C-c #\C-a) 'copy-buffer) | |
(setq c-indent-level 4) | |
(setq c-brace-offset -4) | |
(setq c-continued-statement-offset 4) | |
(setq c-argdecl-indent 4) | |
(setq c-label-offset -4) | |
(setq c-brace-imaginary-offset 0) | |
(load-library "ruby") | |
(push '("\\.rb$" . ruby-mode) *auto-mode-alist*) | |
(load-library "myphp-mode") | |
(pushnew '("\\.php$" . php-mode) *auto-mode-alist*) | |
;; @規則や!に色付けする。 | |
(load-library "css-mode") | |
(set-syntax-word ed::*css-mode-syntax-table* #\@) | |
(set-syntax-word ed::*css-mode-syntax-table* #\!) | |
;; Sass/LESS | |
(load-library "sass-mode") | |
(pushnew '("\\.less$" . sass-mode) *auto-mode-alist*) | |
(pushnew '("\\.scss$" . sass-mode) *auto-mode-alist*) | |
(pushnew '("\\.as$" . jscript-mode) *auto-mode-alist*) | |
(pushnew '("\\.ajp$" . html-mode) *auto-mode-alist*) | |
(pushnew '("\\.ctp$" . html-mode) *auto-mode-alist*) | |
(setq *c-mode-hook* | |
'(lambda () | |
(setq c-brace-offset -4) | |
(setq indent-tabs-mode t))) | |
(setq *c++-mode-hook* | |
'(lambda () | |
(setq c-brace-offset -4) | |
(setq indent-tabs-mode t))) | |
(setq *jscript-mode-hook* | |
'(lambda () | |
(setq c-indent-level 4) | |
(setq c-brace-offset -4) | |
(setq c-continued-statement-offset 0) | |
(setq c-argdecl-indent 4) | |
(setq c-label-offset 0) | |
(setq c-brace-imaginary-offset 0) | |
(setq indent-tabs-mode t))) | |
(setq *php-mode-hook* | |
'(lambda () | |
(setq c-indent-level 4) | |
(setq c-brace-offset -4) | |
(setq c-continued-statement-offset 4) | |
(setq c-argdecl-indent 4) | |
(setq c-label-offset -4) | |
(setq c-brace-imaginary-offset 0) | |
(setq indent-tabs-mode t))) | |
(setq *lisp-mode-hook* | |
'(lambda () | |
(setq indent-tabs-mode nil))) | |
;; TABで選択範囲をインデント | |
(defun indent-selected-lines () | |
(interactive "*") | |
(let ((start-line-number nil) (end-line-number nil) (do-indent-flag nil)) | |
(selection-start-end (start end) | |
(goto-char start) | |
(if (and (bolp) (> start end)) (backward-char 1)) | |
(setq start-line-number (current-line-number)) | |
(goto-char end) | |
(if (and (bolp) (< start end)) (backward-char 1)) | |
(setq end-line-number (current-line-number)) | |
(if (> start-line-number end-line-number) | |
(rotatef start-line-number end-line-number) | |
) | |
(if (/= (progn (goto-char start) (current-line-number)) (progn (goto-char end) (current-line-number)) ) | |
(progn | |
(setq do-indent-flag t) | |
(shift-region start end) | |
(goto-line start-line-number) | |
(start-selection 1 t) | |
(while (<= (current-line-number) end-line-number) | |
(selection-next-virtual-line) | |
) | |
) | |
(delete-region start end) | |
) | |
) | |
(if (null do-indent-flag) (insert "\t")) | |
) | |
) | |
(defun unindent-selected-lines () | |
(interactive "*") | |
(let ((start-line-number nil) (end-line-number nil)) | |
(selection-start-end (start end) | |
(goto-char start) | |
(if (and (bolp) (> start end)) (backward-char 1)) | |
(setq start-line-number (current-line-number)) | |
(goto-char end) | |
(if (and (bolp) (< start end)) (backward-char 1)) | |
(setq end-line-number (current-line-number)) | |
(if (> start-line-number end-line-number) | |
(rotatef start-line-number end-line-number) | |
) | |
(unshift-region start end) | |
(goto-line start-line-number) | |
(start-selection 1 t) | |
(while (<= (current-line-number) end-line-number) | |
(selection-next-virtual-line) | |
) | |
) | |
) | |
) | |
;キー設定 | |
(global-set-key #\TAB 'indent-selected-lines) | |
(set-extended-key-translate-table exkey-S-tab #\F20) | |
(global-set-key #\F20 'unindent-selected-lines) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment