init-my.el
created 2025-09-04 modified 2025-09-04
# 最新オレEmacs設定
;; init-my.el
;; emacs 29.1 の起動時Warning を消す
(setq comp-async-report-warnings-errors nil)
;; 言語、文字コード関係
(progn
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8-unix)
)
;; 実行環境のパス、URLなど
(progn
(setq load-path (cons "~/.emacs.d/elisp" load-path))
(progn
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
)
)
;;;; 自分用 機能、キー設定
(progn
(progn
;; \M-O を割当てたらだめ。特定端末で 矢印キーが効かなくなる
(define-key global-map "\C-z" 'undo)
(define-key global-map "\M-o" 'other-window) ;; C-x o
(define-key global-map "\C-\M-o" 'other-frame) ;; C-x 5 o
(define-key global-map "\C-cg" 'goto-line)
(define-key global-map "\C-s" 'isearch-forward-regexp)
(define-key global-map "\M-p" 'backward-list)
(define-key global-map "\M-n" 'forward-list)
(define-key global-map "\C-o" 'ff-get-other-file)
(define-key global-map [C-tab] 'ff-get-other-file)
(define-key global-map [muhenkan] 'ignore)
)
(progn
(defun toggle-indent-tabs-mode () (interactive)
(setq indent-tabs-mode (not indent-tabs-mode))
(message "indent-tabs-mode is %s" indent-tabs-mode)
)
(defun toggle-dedicate () "toggle dedicate status" (interactive)
(set-window-dedicated-p (selected-window) (not (window-dedicated-p)))
(message "window-dedicated-p is %s" (window-dedicated-p))
)
(defun incr-tab () (interactive)
(setq tab-width (+ tab-width 1))
(message "tab-width = %d" tab-width)
(redraw-frame)
)
(defun decr-tab () (interactive)
(setq tab-width (- tab-width 1))
(message "tab-width = %d" tab-width)
(redraw-frame)
)
)
(progn
(define-key global-map [f1] 'toggle-indent-tabs-mode)
(define-key global-map [C-f1] 'toggle-truncate-lines)
(define-key global-map [M-f1] 'toggle-dedicate)
(define-key global-map [f6] 'bury-buffer)
(define-key global-map [(shift f6)] 'unbury-buffer)
(define-key global-map [f7] 'decr-tab)
(define-key global-map [f8] 'incr-tab)
(define-key global-map [f9] "\C-u0\C-l")
(define-key global-map [f11] 'enlarge-window)
(define-key global-map [C-f11] 'shrink-window)
(define-key global-map [f12] 'enlarge-window-horizontally)
(define-key global-map [C-f12] 'shrink-window-horizontally)
)
)
;; diff
(eval-after-load "diff"
'(progn
(define-key diff-mode-map (kbd "M-o") nil)
)
)
;; dired
(eval-after-load "dired"
'(progn
;;(fset 'dired-find-file-eucjp "\C-x\C-mceuc-japan\C-mf")
;;(define-key dired-mode-map "e" 'dired-find-file-eucjp)
;; dired モードで 大文字S で .始まり隠す(logF) -> 通常(laF) -> selinuxの表示(laZF) を切り替える
(defun dired-toggle-dot-files () (interactive)
(if (string-match "Z" dired-actual-switches) ;; laZF ->
(setq dired-actual-switches dired-listing-switches) ;; logF
(if (string-match "a" dired-actual-switches)
(setq dired-actual-switches "-laZF") ;; laF -> laZF
(setq dired-actual-switches "-laF") ;; logF -> laF
)
)
(revert-buffer)
)
(define-key dired-mode-map "S" 'dired-toggle-dot-files)
(setq dired-dnd-protocol-alist
'(("^file:///" . dnd-open-local-file)
("^file://" . dnd-open-file)
("^file:" . dnd-open-local-file)))
)
)
;; speedbar
;; インストール
;; M-x package-install sr-speedbar
;; ... は、版が古い。2016年で止まっている。
;; 起動
;; M-x sr-speedbar-toggle
;; 左側にするには
;; M-x customize-apropos で sr-speedbar-right-side を探して、nil にする
;;
;;(require 'sr-speedbar)
;;
(eval-after-load 'speedbar
'(progn
(speedbar-add-supported-extension ".rb")
(speedbar-add-supported-extension ".src")
(speedbar-add-supported-extension ".conf")
(speedbar-add-supported-extension ".a")
(speedbar-add-supported-extension ".so")
))
;; C言語
(progn
(defun my-c-mode-hook ()
;;(setq indent-tabs-mode t)
;;(modify-syntax-entry ?_ "w")
(define-key c-mode-base-map "/" 'self-insert-command)
(define-key c-mode-base-map "*" 'self-insert-command)
(setq truncate-lines t)
;;(highlight-indent-guides-mode)
)
;;(add-hook 'c-mode-hook 'my-c-mode-hook)
(add-hook 'c-mode-common-hook 'my-c-mode-hook)
;; 定義箇所に飛ぶやつ
(eval-after-load 'xref
'(progn
(define-key xref--xref-buffer-mode-map
(kbd "RET") #'xref-quit-and-goto-xref)
(define-key xref--button-map
(kbd "RET") #'xref-quit-and-goto-xref)
))
;; FindOtherFile ff-find-other-file .h と.cで切り替えるやつ
(setq cc-search-directories
'(;; AAA/
;; x.h
;; x.cpp
"."
;; AAA/
;; include/x.h
;; src/x.cpp
"../include"
"../src"
;; PROC/
;; include/AAA/x.h
;; AAA/x.cpp
"../include/*"
"../../*"
;; src/
;; include/PROC/AAA/x.h
;; PROC/AAA/x.cpp
"../../../src/include/*/*"
"../../../../src/*/*"
;; proj/
;; include/AAA/x.h
;; src/AAA/x.cpp
"../../include/*/*"
"../../src/*/*"
"/usr/include"
))
)
;; ファイル名とモードの対応
(progn
;; markdown
(autoload 'markdown-mode "markdown-mode"
"Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(autoload 'gfm-mode "markdown-mode"
"Major mode for editing GitHub Flavored Markdown files" t)
(add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode))
(defun my-document-mode-hook ()
;;(setq indent-tabs-mode t)
;;(modify-syntax-entry ?_ "w")
(setq truncate-lines nil)
)
(add-hook 'markdown-mode-hook 'my-document-mode-hook)
;; makefile
(add-to-list 'auto-mode-alist '("/Makefile" . makefile-gmake-mode))
(add-to-list 'auto-mode-alist '("\\.h$" . c++-mode))
;; flex bison
(autoload 'bison-mode "bison-mode" "mode for bison" t)
(add-to-list 'auto-mode-alist '("\\.l$" . bison-mode))
(add-to-list 'auto-mode-alist '("\\.y$" . bison-mode))
;;(when (load "bison-mode" t)
;;)
;; web
(add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
(add-to-list 'auto-mode-alist '("\\.html$" . xml-mode))
;; vala
(autoload 'vala-mode "vala-mode" "Major mode for editing Vala code." t)
(add-to-list 'auto-mode-alist '("\\.vala$" . vala-mode))
(add-to-list 'auto-mode-alist '("\\.vapi$" . vala-mode))
(add-to-list 'file-coding-system-alist '("\\.vala$" . utf-8))
(add-to-list 'file-coding-system-alist '("\\.vapi$" . utf-8))
;; all programing language
(when (load "highlight-indent-guides" t)
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode)
(add-hook 'nxml-mode-hook 'highlight-indent-guides-mode)
)
)
;; 見栄え
(progn
;; FONT
;; フォント名の一覧を知るには:
;; (dolist (x (x-list-fonts "*")) (print x))
;; "Monospace" "Liberation Mono" "DejaVu Sans Mono"
;; "VL Pゴシック" "VL ゴシック" "Noto Sans Mono CJK JP-regular" など
;; character setの一覧を知るには:
;; M-x list-character-sets
;; ascii japanese-jisx0208 など
;;
;;;; dejavu-sans-mono-fonts-2.37-23.fc40.noarch ;;fonts-dejavu-mono
(set-face-attribute 'default nil :family "DejaVu Sans Mono" :height 110)
(set-fontset-font t 'japanese-jisx0208 (font-spec :family "VL ゴシック"))
(set-fontset-font t 'cyrillic-iso8859-5 (font-spec :family "Monapo")) ;;"YOzNF"
(set-fontset-font t 'greek-iso8859-7 (font-spec :family "Monapo"))
(set-fontset-font t 'symbol (font-spec :family "Monapo"))
;;
;; 英数と漢字のバランス
;; (setq face-font-rescale-alist '(("VL ゴシック" . 1.2))) ;; 1.2 だと 英2:日1 方式になる
;; 最近は、英数5文字に日本語3文字が対応するのが流行りらしい。
;; 日本語を1.2倍すると等幅になるってことは、emacs標準でそうなってる…はずなんだけど、
;; 英字のサイズによって狂うらしく、"DejaVu Sans Mono" 110 はきれいに英5:日3になるが、それ以外だとダメポ
;; abcdeABCDEabcdeABCDE
;; あいう日本語あいう日本語
;; East Asian Ambiguous Width問題 ... フォントによるらしい
;; AαД・◯あ→
;; 絵文字対策
(setq use-default-font-for-symbols nil)
;;
;; tab character
;;(standard-display-ascii ?\t "» ")
;; /usr/include/ 以下は linux スタイルで開く
(dir-locals-set-class-variables
'linux-include-directory
'((nil . ((tab-width . 8)
(c-file-style . "linux")
))))
(dir-locals-set-directory-class
"/usr/include/" 'linux-include-directory)
)
(progn
(defun reset-frame-parameter (frame)
(sleep-for 0.1)
;;(set-frame-parameter frame 'height 32)
;;(modify-frame-parameters frame '((width . 112) (height . 32) ) )
(modify-frame-parameters frame default-frame-alist)
)
;;(add-hook 'after-make-frame-functions #'reset-frame-parameter)
;;(reset-frame-parameter (selected-frame))
)