;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; CSE環境Emacs Mac port及びCocoa Emacs向けお勧め初期設定 ;; Ver. 20170228 ;; ;; Copyright Eitetsu Oomoto 2016-2017 ;; ;; 対象とするEmacs.appのディストリビューション ;; Emacs Mac port 24.5.1 <-- こちらを優先 ;; http://www.muskmelon.jp/?page_id=79 ;; http://sakito.jp/emacs/emacs24.html ;; http://kouzuka.blogspot.jp/2011/03/emacs-mac-port.html ;; Cocoa Emacs (つまり素のGNU Emacs) 24.5.1 ;; https://www.gnu.org/software/emacs/history.html ;; http://sakito.jp/emacs/emacs24.html ;; https://emacsformacosx.com ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (message "%s" "DEBUG: init_CSE.el is loaded.") ;; 以下のサイトより数多くの設定を引用させて頂きました.Thanks! ;; http://macwiki.osdn.jp/wiki/index.php/MacOSX_WorkShop ;;;;;;;; 基本動作環境設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ファイル foo のバックアップファイル foo~ をコピーで生成 (setq backup-by-copying t) ;; マウスで選択した領域を自動yank (setq mouse-drag-copy-region t) ;; emacsclientを起動 (重複起動時の負荷軽減) (require 'server) (unless (server-running-p) (server-start)) ;; パッケージ管理システム ;; 安全のため,MELPA Stableのみを追加レポジトリとする ;; 引用 https://stable.melpa.org/#/getting-started ;; https://www.emacswiki.org/emacs/MELPA ;; 参考URL ;; http://emacs-jp.github.io/packages/package-management/package-el.html (require 'package) (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/")) (package-initialize) ;;;;;;;; 言語環境関連設定 (基本的にUTF-8) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 言語環境を日本語とする (set-language-environment 'Japanese) ;; 文字コード体系は極力UTF-8とする (prefer-coding-system 'utf-8) ;; Mac OS Xでのファイル名エンコーディングへの対応 ;; 引用 https://masutaka.net/chalow/2009-07-09-1.html (require 'ucs-normalize) (set-file-name-coding-system 'utf-8-hfs) (setq locale-coding-system 'utf-8-hfs) ;; バックスラッシュ入力への根本的対応 ;; UTF-8の Yen-Sign を \ へマップする ;; 引用 http://qiita.com/aKenjiKato/items/bb20c335eee1612c36e5 ;; [165]が¥ (円マーク) を, [92] が \ (バックスラッシュ) を表す ;;(define-key global-map [165] [92]) ;; incremental-search modeへのバックスラッシュ対応 ;;(define-key isearch-mode-map [165] [92]) ;; 上記のバックスラッシュ入力対応は,Mac OSの文字入力側で対処すべき ;; と思いますので,以下URLを参照の上,キーボード入力を調整すべし. ;; http://beadored.com/mac-us-keybord-backslash/ ;; http://okidata-ja.custhelp.com/app/answers/detail/a_id/148/~/mac-os-x-環境で¥を、バックスラッシュで入力するための設定変更方法-(¥は半角です) ;; Emacs Mac portの場合のキーボード/日本語入力対応 (when macport-p (message "Input setting for Mac port.") ;; ミニバッファでは英語モードへ切り替え (mac-auto-ascii-mode 1) ;; CommandキーをMetaキーに割り当てない (setq mac-command-key-is-meta nil) ;;(setq mac-option-modifier 'meta) (setq mac-command-modifier 'super) ;; キーバインド設定 (ある程度 Mac 標準UIに準拠させる) (global-set-key [?\s-c] 'kill-ring-save) (global-set-key [?\s-v] 'yank) (global-set-key [?\s-x] 'kill-region) (global-set-key [?\s-z] 'undo) (global-set-key [?\s-s] 'save-buffer) (global-set-key [?\s-q] 'save-buffers-kill-terminal) (global-set-key [?\s-f] 'isearch-forward) (global-set-key [?\s-g] 'isearch-repeat-forward) ;;(global-set-key "\C-h" 'delete-backward-char) ;;(global-set-key "\M-h" 'help) ;;(global-set-key [?\s-q] 'kill-emacs) ;; 入力モードをカーソル色で区別,英語の時はmedium blueに, ;; 日本語の時はfirebrickにする (Mac portのみ有効) ;; 引用 http://keisanbutsuriya.hateblo.jp/entry/2016/04/10/115945 (defun mac-selected-keyboard-input-source-change-hook-func () "カーソル色を英語の時はmedium blueに,日本語の時はfirebrickにします." (let ((mac-input-source (mac-input-source))) (set-cursor-color (if (or (string-match "\\.US$" mac-input-source) ;; USスクリプト (string-match "\\.Roman$" mac-input-source)) ;; Roman入力 "medium blue" ;; 英語入力時 "firebrick")))) ;; 日本語入力時(正確には英語入力でない時) (add-hook 'mac-selected-keyboard-input-source-change-hook 'mac-selected-keyboard-input-source-change-hook-func) ;; EmacsからInput Methodを呼ぶ場合の対応 (For Prof. Hiraishi) (add-hook 'input-method-activate-hook (lambda() (set-cursor-color "firebrick"))) ;; 日本語IM on (add-hook 'input-method-inactivate-hook (lambda() (set-cursor-color "MediumBlue")))) ;; 日本語IM off ;; Cocoa Emacsの場合のキーボード/日本語入力対応 (when ns-p (message "Input setting for Cocoa.") (when (boundp 'mac-input-method-parameters) ;; inline-patch適用の場合のみ有効 (message "It is seemed to be applied the inline patch.") ;; Input Method関連設定 (setq default-input-method "MacOSX") ;; 全角記号類「!”#$%&’()=〜|`『+*』<>?_」を入力できるように (mac-add-key-passed-to-system 'shift) ;; Optionキーによる特殊文字入力を可能に (setq ns-option-modifier 'none) ;; 入力モードをカーソル色で区別,英語の時はmedium blueに, ;; 日本語の時はfirebrickにする (Mac portのみ有効) ;; 引用 http://suzuki.tdiary.net/20160103.html (defun mac-input-method-decorate (roman-source japanese-source) (mac-set-input-method-parameter japanese-source 'cursor-color "firebrick") (mac-set-input-method-parameter roman-source 'cursor-color "MediumBlue")) (cond ;; ことえり ((string-match "com.apple.inputmethod.Kotoeri" (mac-get-current-input-source)) (mac-input-method-decorate "com.apple.inputmethod.Kotoeri.Roman" "com.apple.inputmethod.Kotoeri.Japanese")) ;; Google 日本語入力 ((string-match "com.google.inputmethod.Japanese" (mac-get-current-input-source)) (mac-input-method-decorate "com.google.inputmethod.Japanese.Roman" "com.google.inputmethod.Japanese.base"))) ;; 起動直後は英数モードにする (add-hook 'after-init-hook 'mac-change-language-to-us))) ;; 標準的Cut&Pasteキー操作エミュレーションを有効化 (cua-selection-mode t) ;; Font設定 (create-fontset-from-ascii-font "Menlo-14:weight=normal:slant=normal" nil "menlomarugo") ;;(create-fontset-from-ascii-font "Menlo-17:weight=normal:slant=normal" nil "menlomarugo") ;; 老眼向け (set-fontset-font "fontset-menlomarugo" 'unicode (font-spec :family "Hiragino Maru Gothic ProN" ) nil 'append) (add-to-list 'default-frame-alist '(font . "fontset-menlomarugo")) (setq face-font-rescale-alist '((".*Hiragino.*" . 1.2) (".*Menlo.*" . 1.0))) ;; フォント幅設定確認用文字列 (半角:全角 = 1:2) ;;|||||||||||||||||||||||||| ;;|||||||||||||||||||||||||| ;;||||||||あいうえお|||||||| <-- ここ揃ってますか? ;;|||||||||||||||||||||||||| ;;|||||||||||||||||||||||||| ;;;;;;;; Look & Feel カスタマイズ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; マウス・スクロールをヌルヌル滑らかにする (Mac port版専用) ;; この設定はEmacs Mac port 24.5.1では既にデフォルトとなっている ;;(when macport-p ;; (setq mac-mouse-wheel-smooth-scroll t)) ;; ツールバー非表示 (tool-bar-mode -1) ;; メニューバー非表示 (本設定はMac port版では効かない) (menu-bar-mode -1) ;; タイトルバー表示をホスト名でなくファイル名 (Cocoa Emacsの挙動に合わせる) ;; 引用 http://qiita.com/takaxp/items/a86ee2aacb27c7c3a902 (when macport-p (setq frame-title-format (format (if (buffer-file-name) "%%f" "%%b")))) ;; フォントスケーリング停止 (本設定はMac port版では効かない模様) (setq scalable-fonts-allowed nil) ;; エディット領域をデフォルトより広げて幅80文字&高さ37行を確保 ;; 行番号表示領域分を4文字なので,それを含めて幅84文字としている (setq default-frame-alist (append (list '(width . 84) '(height . 37)) default-frame-alist)) ;; デフォルトの透明度を設定する (アクティブ90%,非アクティブ75%) (add-to-list 'default-frame-alist '(alpha . (90 75))) ;; 背景色・前景色 ;; 引用 http://kei10in.hatenablog.jp/entry/20101101/1288617632 (custom-set-faces '(default ((t (:background "ivory" :foreground "black") )))) ;; カーソル色を設定 (set-cursor-color "medium blue") ;; カーソル点滅(周期1秒,遅延5秒) (setq blink-cursor-interval 0.5) (setq blink-cursor-delay 5.0) ;;(blink-cursor-mode 1) <--- 点滅を止める時は -1 に設定 ;; 現在行をハイライト (global-hl-line-mode) ;; 行間について1行高さの10%相当を広げる (setq-default line-spacing 0.1) ;; (setq-default line-spacing 4) ;; この記法だと行間が4ピクセル分広がる ;; スクロールを自然に,かつ,カーソルが一番下へ達する前にスクロール ;; 引用 https://www.emacswiki.org/emacs/SmoothScrolling (setq scroll-margin 4 scroll-conservatively 0 scroll-up-aggressively 0.01 scroll-down-aggressively 0.01) (setq-default scroll-up-aggressively 0.01 scroll-down-aggressively 0.01) (setq comint-scroll-show-maximum-output t) ;; for shell-mode ;; ちなみに C-l にてカーソル位置の行が画面中央へスクロール移動 ;; 警告音の代わりに画面フラッシュ ;;(setq visible-bell t) ;; スマート Drag'n Drop ;;(require 'smart-dnd) ;; スプラッシュ画像を確率 1/7 で変更 ;; 画像出典 プロ生ちゃん http://pronama.azurewebsites.net/pronama/ (random t) (when (equal (random 7) 0) (setq fancy-splash-image (expand-file-name "~/.emacs.d/conf/EmacsForCSE.png"))) ;;;;;;;; プログラミング演習向けスペシャルチューニング ;;;;;;;;;;;;;;;;;;;; ;; C, C++系言語のコーディングスタイルを指定 ;; C, C++ではK&Rスタイル,Javaでは標準Javaスタイル (setq c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "k&r"))) ;; TAB文字幅を 8 にセット (Emacsの標準値は8) ;; 引用 http://yohshiy.blog.fc2.com/blog-entry-172.html ;;(setq tab-width 8) ;; インデントオフセット (字下げ幅) を 4 にセット (setq c-basic-offset 4) ;; ちなみに java-mode ではデフォルトで 4 となっている ;; インデントをスペースで表現,尚,makefileモードではTAB文字は有効のまま (setq-default indent-tabs-mode nil) ;; 対応する括弧を強調表示 (show-paren-mode) ;; 行番号を左側に表示 (4桁表示, フォント表示を少し調整) ;; ファンクションキー F5 で行番号表示をON/OFF ;; 尚,ファンクションキー F5 ~ F9 は自由に割当可能, by るびきち (global-linum-mode t) (setq linum-format "%4d") ;; 10000行以上は想定外だが,そもそも,そんなソースファイルは論外か? (set-face-attribute 'linum nil :foreground "dark blue" :height 0.9) (global-set-key [f5] 'linum-mode) ;; バッファ全体を再インデント,ファンクションキー F6 押下にて実行 ;; 引用 http://blog.livedoor.jp/anchorblues/archives/emacs-all-indent.html (defun all-indent() (interactive) (mark-whole-buffer) (indent-region (region-beginning)(region-end)) (message-box "%s" "編集中のコードのインデントをやり直しました!")) (global-set-key [f6] 'all-indent) ;; 空白を一気に削除 (hungry delete) (setq c-hungry-delete-key t) ;; TAB文字,及び,全角の空白・記号・英数字をハイライト (load "zenkaku.el") ;; 慣れてきたらコメントアウトして無効化もあり ;;;;;;;; End of init_CSE.el ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;