flat7th

# 最新オレEmacs設定

created 2014-12-20 modified 2023-12-14 

ここに貼るために行頭にスペース1文字を入れるコマンド

sed -e 's/^/ /' < .emacs > dot.emacs.txt

2023年12月


fedora39, emacs29.1

;; .emacs

;; emacs 29.1 の起動時Warning を消す
(setq comp-async-report-warnings-errors nil)

;; 言語、文字コード関係
(progn
  (set-language-environment "Japanese")
  (prefer-coding-system 'utf-8-unix)
  ;; mozc
  ;;(progn
  ;;  (require 'mozc)
  ;;  (setq default-input-method "japanese-mozc")
  ;;  (define-key global-map [zenkaku-hankaku] 'toggle-input-method)
  ;;  (define-key global-map [henkan] 'toggle-input-method)
  ;;  (define-key global-map [muhenkan] 'deactivate-input-method)
  ;;  (defadvice mozc-handle-event (around intercept-keys (event))
  ;;    "Intercept keys muhenkan and zenkaku-hankaku, before passing keys
  ;;to mozc-server (which the function mozc-handle-event does), to
  ;;properly disable mozc-mode."
  ;;    (if (member event (list 'zenkaku-hankaku 'muhenkan))
  ;;      (progn
  ;;        (mozc-clean-up-session)
  ;;        (toggle-input-method))
  ;;      (progn ;(message "%s" event) ;debug
  ;;        ad-do-it)))
  ;;  (ad-activate 'mozc-handle-event)
  ;;  )
  )

;; 実行環境のパス、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
	(define-key global-map "\C-z" 'undo)
	;;(define-key global-map [C-tab] '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-o" 'ff-get-other-file)
	(define-key global-map [C-tab] 'ff-get-other-file)
	(define-key global-map "\M-p" 'backward-list)
	(define-key global-map "\M-n" 'forward-list)
	)
  (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)
	)
  )

;;;; モードごとのカスタマイズ
;; 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 で 通常 -> .始まり隠す -> selinuxの表示 -> 通常 を切り替える
     (defun dired-toggle-dot-files () (interactive)
            (if (not (string-match "Z" dired-actual-switches))
                (if (string-match "a" dired-actual-switches)
                    (setq dired-actual-switches "-l")
                  (setq dired-actual-switches "-laZ")
                  )
              (setq dired-actual-switches dired-listing-switches) ;; "-la"
              )
            (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 にする
;;
(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")
     ))
;;
;;(require 'sr-speedbar)

;; markdown
(progn
  (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))
  )

;; 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)
	)
  (add-hook 'c-mode-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
		'("."
          "../include"
          "../src"
          "../include/*"
          "../src/*"
          "../../include/*"
          "../../src/*"
          "../../../include/*"
          "../../../include/*/*"
          "../../../src/*/*"
          "/usr/include"
          ))
  )

;; ファイル名とモードの対応
(progn
  (add-to-list 'auto-mode-alist '("/Makefile" . makefile-gmake-mode))
  (add-to-list 'auto-mode-alist '("\\.h$" . c++-mode))
  ;;(load-library "bison-mode")
  ;;(add-to-list 'auto-mode-alist '("\\.l$" . bison-mode))
  ;;(add-to-list 'auto-mode-alist '("\\.y$" . bison-mode))
  (add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
  (add-to-list 'auto-mode-alist '("\\.html$" . xml-mode))
  )

;; 見栄え
(progn
  ;; FONT
  ;;   フォント名の一覧 を知るには...
  ;; (dolist (x (x-list-fonts "*")) (print x))
  ;;   "Monospace" "Liberation Mono" "DejaVu Sans Mono"
  ;;   "VL Pゴシック" "VL ゴシック"
  (set-face-attribute 'default nil :family "DejaVu Sans Mono" :height 102)
  (set-fontset-font t 'japanese-jisx0208 (font-spec :family "VL ゴシック"))
  ;; 英数と漢字のバランス
  ;; (setq face-font-rescale-alist '(("VL ゴシック" . 1.2))) ;; 1.2 だと 英2:日1 方式になる
  ;; 最近は、英数5文字に日本語3文字が対応するのが流行りらしい。
  ;; 日本語を1.2倍すると等幅になるってことは、emacs標準でそうなってる…はずなんだけど、
  ;; 英字のサイズによって狂うらしく、"DejaVu Sans Mono" 110 はきれいに英5:日3になるが、それ以外だとダメポ
  ;; abcdeABCDEabcdeABCDE
  ;; あいう日本語あいう日本語
  ;;
  ;; 絵文字対策
  (setq use-default-font-for-symbols nil)
  ;;
  ;; tab character
  ;;(standard-display-ascii ?\t "»        ")
  )

;; emacs標準機能によるカスタマイズ
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ansi-color-names-vector
   ["black" "red3" "green3" "yellow3" "dodger blue" "magenta3" "cyan3" "gray90"])
 '(auto-compression-mode t nil (jka-compr))
 '(auto-revert-interval 1)
 '(backup-directory-alist '((".*" . "~/.emacsbak")))
 '(c++-font-lock-extra-types
   '("\\sw+_t" "\\([iof]\\|str\\)+stream\\(buf\\)?" "ios" "string" "rope" "list" "slist" "deque" "vector" "bit_vector" "set" "multiset" "map" "multimap" "hash\\(_\\(m\\(ap\\|ulti\\(map\\|set\\)\\)\\|set\\)\\)?" "stack" "queue" "priority_queue" "type_info" "iterator" "const_iterator" "reverse_iterator" "const_reverse_iterator" "reference" "const_reference" "u_?\\(int\\|long\\|short\\|char\\)"))
 '(c-default-style
   '((c-mode . "cc-mode")
	 (c++-mode . "cc-mode")
	 (java-mode . "java")))
 '(c-echo-syntactic-information-p t)
 '(c-font-lock-extra-types
   '("FILE" "\\sw+_t" "Lisp_Object" "u_?\\(int\\|long\\|short\\|char\\)"))
 '(c-offsets-alist
   '((inline-open . 0)
	 (member-init-cont . c-lineup-multi-inher)
	 (substatement-open . +)
	 (case-label . 0)))
 '(c-tab-always-indent nil)
 '(comint-scroll-to-bottom-on-input t)
 '(default-frame-alist
   '((foreground-color . "white")
	 (background-color . "gray16")
	 (cursor-color . "red")
	 (mouse-color . "red")
	 (width . 98)))
 '(dired-listing-switches "-la")
 '(fill-column 86)
 '(gdb-many-windows t)
 '(generic-define-mswindows-modes t)
 '(global-auto-revert-mode t nil (autorevert))
 '(global-whitespace-mode nil)
 '(grep-find-command
   '("find . -type d -name '.[a-z]*' -prune -o -type f -exec grep --color -nH -e  '{}' +" . 76))
 '(initial-buffer-choice t)
 '(initial-major-mode 'text-mode)
 '(ls-lisp-verbosity nil)
 '(package-selected-packages
   '(markdown-preview-mode php-mode web-mode markdown-mode markdonw-mode))
 '(revert-without-query '(".log$"))
 '(same-window-regexps '("*shell*" "*Buffer List*"))
 '(scroll-step 1)
 '(show-trailing-whitespace t)
 '(skk-egg-like-newline t)
 '(speedbar-show-unknown-files t)
 '(sr-speedbar-right-side nil)
 '(tab-width 4)
 '(tags-case-fold-search nil)
 '(tool-bar-mode nil)
 '(tooltip-mode nil nil (tooltip))
 '(truncate-lines t)
 '(visible-bell t)
 '(woman-fill-frame t)
 '(x-stretch-cursor t))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ansi-color-blue ((t (:background "royal blue" :foreground "royal blue"))))
 '(ansi-color-bright-blue ((t (:background "dodger blue" :foreground "dodger blue"))))
 '(dired-directory ((t (:foreground "SteelBlue1"))))
 '(ediff-even-diff-A ((t (:extend t :background "dim grey"))))
 '(ediff-even-diff-Ancestor ((t (:extend t :background "grey30"))))
 '(ediff-even-diff-B ((t (:extend t :background "dim grey"))))
 '(ediff-even-diff-C ((t (:extend t :background "dim grey"))))
 '(ediff-even-diff-face-Ancestor ((((class color)) (:background "Grey" :foreground "Blue"))))
 '(ediff-even-diff-face-B ((((class color)) (:background "Grey" :foreground "Blue"))))
 '(ediff-odd-diff-A ((t (:extend t :background "Grey50"))))
 '(ediff-odd-diff-B ((t (:extend t :background "Grey50"))))
 '(ediff-odd-diff-C ((t (:extend t :background "Grey50"))))
 '(ediff-odd-diff-face-A ((((class color)) (:background "Grey" :foreground "Blue"))))
 '(ediff-odd-diff-face-C ((((class color)) (:background "Grey" :foreground "Blue"))))
 '(escape-glyph ((t (:foreground "DeepSkyBlue4"))))
 '(font-lock-builtin-face ((t (:foreground "plum"))))
 '(font-lock-comment-face ((t (:foreground "medium sea green"))))
 '(font-lock-doc-face ((t (:foreground "gray"))))
 '(font-lock-function-name-face ((t (:foreground "goldenrod"))))
 '(font-lock-keyword-face ((t (:foreground "DodgerBlue"))))
 '(font-lock-string-face ((t (:foreground "peru"))))
 '(font-lock-type-face ((t (:foreground "deep sky blue"))))
 '(font-lock-variable-name-face ((t (:foreground "wheat"))))
 '(nxml-element-local-name ((t (:foreground "lightblue"))))
 '(speedbar-file-face ((t (:foreground "light gray"))))
 '(trailing-whitespace ((t (:background "dark slate gray")))))

(put 'narrow-to-region 'disabled nil)