userapps:emacs
差分
このページの2つのバージョン間の差分を表示します。
— | userapps:emacs [2025/04/06 02:25] (現在) – 作成 - 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Emacs ====== | ||
+ | {{indexmenu> | ||
+ | |||
+ | ===== まくら ===== | ||
+ | |||
+ | Emacsはとても古いEditor実装である。自分がEmacsを利用し始めたのは、高校生の時代にX68000を使っていた頃のはず。PC8801-mk2SRの次に入手したのがX68000だったとおもう。 | ||
+ | |||
+ | それまでもPCは使っていた。88の頃は主にゲームばかり。X68000を手に入れてパソコン通信のChatにはまり、PC9801LVを入手してBBSサーバーにしたりはしていたが、普段使いのComputerはX68000だったと思う。 | ||
+ | |||
+ | プログラムを書くようになって最初に手に馴染んだEditorはμEmacsだった。X68000でmicro Emacsを使い始めたのが最初だったと思う。そこからNEmacsに移り、Muleに移り、icam版GNU Emacsに移っていった。当時、TeXにがっつりハマり、pTeX(pLaTeXではない)で縦書き3段組の同人誌を作ったりもしていた。EmacsでTeX modeが非常に便利だったことを覚えている。 | ||
+ | |||
+ | それ以来EditorといえばEmacs系のものを利用している。浪人時代に、中古で買ったSony NEWS(NEWS 1250, NEWS830, NEWS 3860)でThin EthernetでNetworkを組み、X68000をSerial Terminal にしてみたり、大学でSun MicrosystemsのSPARCstation 5, 10, IPC, IPX あたりを利用していたが、その時もEditorは常にEmacsだった。 | ||
+ | |||
+ | 大学時代から、Unix System管理者としては、当然にed, | ||
+ | |||
+ | 社会人になっても、Reportや提出書類の大半はTeXを利用していた(WYSIWYGなんて面倒で不便と思っていた。今でもそう思うことは多い)ので、2000年代前半まではEmacs/ | ||
+ | |||
+ | 最近またEmacsに戻ってきたので、備忘録も兼ねてEmacsの設定などを記載することにした。 | ||
+ | |||
+ | マクラが長い。しかも割と黒歴史だったorz... | ||
+ | | ||
+ | <WRAP info round> | ||
+ | * 2024/11/07 | ||
+ | * Updated for emacs-plus@31 | ||
+ | * Remove poll(Removed from emacs-plus because poll causes problem | ||
+ | * install after commandline, | ||
+ | </ | ||
+ | ===== 環境とInstall ===== | ||
+ | 2024年現在、メイン端末はMacBookProで、管理しているサーバーは大半がFreeBSD(一部NetBSD, | ||
+ | |||
+ | ==== 環境 ==== | ||
+ | |||
+ | ^ 年代 ^ 端末 ^ CPU ^ Memory ^ OS ^ | ||
+ | | 2024年 | MacBookPro 16" 2019 | Intel Core-i9 | 64G | macOS Sonoma/ | ||
+ | | 2024年 | VM(XCP-ng) | AMD Ryzen7 3700X | 4G | FreeBSD 14.1 | | ||
+ | |||
+ | ==== Install ==== | ||
+ | |||
+ | 昔はSource Codeを持ってきてCompileしていたが現在では流石にBinary Packageを利用している。 | ||
+ | |||
+ | === macOS === | ||
+ | |||
+ | MacOSの場合、IMEのInline patchを当てないとMetaコマンド系を入力する際に'' | ||
+ | そのため、少し面倒な対応が必要になる。 | ||
+ | |||
+ | [参考] | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | macOSに [[https:// | ||
+ | |||
+ | < | ||
+ | $ brew tap d12frosted/ | ||
+ | $ brew edit emacs-plus@31 # | ||
+ | .... configuration .... | ||
+ | # | ||
+ | # Patches | ||
+ | # | ||
+ | |||
+ | opoo "The option --with-no-frame-refocus is not required anymore in emacs-plus@30." | ||
+ | local_patch " | ||
+ | local_patch " | ||
+ | local_patch " | ||
+ | patch do | ||
+ | url " | ||
+ | end | ||
+ | .... configuration .... | ||
+ | $ brew install emacs-plus@31 --with-dbus --with-imagemagick --with-modern-pen-icon | ||
+ | $ osascript -e 'tell application " | ||
+ | $ sudo codesign --force --deep --sign - / | ||
+ | $ brew services start d12frosted/ | ||
+ | </ | ||
+ | |||
+ | ここまでを実行すると、 | ||
+ | * / | ||
+ | * LaunchPad にEmacsアイコンが追加され、 | ||
+ | * 起動項目にemacsが追加され、 | ||
+ | * BackgroundでEmacsが起動 | ||
+ | される。一応 Inline-patch を確認するために、一度Emacsを起動し、 | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | が動作するかを確認しておく。 | ||
+ | |||
+ | なお、自明だが、ImageMagickやDBUSを利用する場合には、'' | ||
+ | |||
+ | <WRAP info round> | ||
+ | このIME用 Inline-Patchを適用した場合、init.elに以下のelisp codeを追加しておくと良い。 | ||
+ | <code lisp> | ||
+ | (when (and (memq window-system '(ns nil)) | ||
+ | | ||
+ | (when (version< | ||
+ | ;; Required for some cases when auto detection is failed or the locale is " | ||
+ | (custom-set-variables | ||
+ | ' | ||
+ | (mac-input-method-mode 1)) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP alert round> | ||
+ | Emacs install時の引数に '' | ||
+ | </ | ||
+ | |||
+ | <WRAP info round> | ||
+ | '' | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | <WRAP alert round> | ||
+ | [[https:// | ||
+ | ここにあるように、macOS Sequoiaにおいて、Xcode commandline tools を最新にすると、Emacs.appを実行できない。\\ | ||
+ | sudo codesign --force --deep --sign - / | ||
+ | によってApp FileをSignすると実行できるようになる。注意すること | ||
+ | </ | ||
+ | |||
+ | <WRAP alert round> | ||
+ | Reading directory: Operation not permitted エラーが出て、Emacsからフォルダが開けない場合\\ | ||
+ | macOS SequoiaでEmacsをInstallした後、どうしてもDesktop FolderをEmacsから開けなかった。\\ | ||
+ | こういう時は、一度フルディスクアクセス設定を削除したのち、もう一度フルディスクアクセス設定を行うことで回避できる可能性がある。\\ | ||
+ | Commandlineから sudo tccutil reset All org.gnu.Emacs を実行し、システム環境設定からセキュリティ→フルディスクアクセスに移動し、左下の「+」からEmacs.appを追加。その後、Emacs.appを再度起動すると、Desktopフォルダにアクセスできるようになった。 | ||
+ | </ | ||
+ | |||
+ | === FreeBSD === | ||
+ | |||
+ | 自分はFreeBSDをサーバーとして利用しており、GUIを利用していない。そのため、EmacsをX11経由ではなくConsoleから利用している。ほとんどの接続がssh経由だからこれでよい。 | ||
+ | |||
+ | したがって、EmacsのInstallは | ||
+ | |||
+ | <code bash> | ||
+ | $ doas pkg install emacs-nox # | ||
+ | </ | ||
+ | で終わりである。 | ||
+ | |||
+ | ===== 初期設定 ===== | ||
+ | |||
+ | Emacsはそれ単体では最小限のことしかできない。しかし、Emacs-Lispを組み込み、設定を行うことで色々なことができるようになる。これを称して、昔は、「EmacsはEditorではない。Environmentである」などとも言われていた。 | ||
+ | |||
+ | 以下、個人の設定。 (2024/ | ||
+ | |||
+ | ここで、Packageごとの設定など、細かいことを説明すればいいんだろうけど、かなり面倒なので、コメントで勘弁して。 | ||
+ | |||
+ | このinit.elは、byte-compileするとgo-translate関連の変数が未定義扱いになる。 | ||
+ | 本来は'': | ||
+ | |||
+ | <code lisp init.el> | ||
+ | ;;;; .emacs.d/ | ||
+ | ;;;; | ||
+ | ;;;; last updated: 2024/08/26 | ||
+ | ;;;; Author: HEO SeonMeyong < | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Tips | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;; emacs -nw -q --batch --eval ' | ||
+ | ;; emacs --batch -f batch-byte-compile init.el ; | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Prefix keys memo | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;; C-? : Control+? | ||
+ | ;; M-? : Meta(ESC)+? | ||
+ | ;; s-? : Super(command)+? | ||
+ | ;; S-? : Shift+? | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; コメント定義 | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;; セミコロン 4 つはファイルヘッダのコメント | ||
+ | ;; セミコロン 3 つは段落コメント | ||
+ | ;; セミコロン 2 つはコードブロックコメント | ||
+ | ;; セミコロン 1 つは、行コメント | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Reference site | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;; https:// | ||
+ | ;; | ||
+ | ;; https:// | ||
+ | ;; https:// | ||
+ | ;; https:// | ||
+ | ;; https:// | ||
+ | |||
+ | ;;;; PATH settings | ||
+ | ;; elispのload-path | ||
+ | (setq load-path | ||
+ | (append | ||
+ | (list | ||
+ | (expand-file-name "/ | ||
+ | (expand-file-name " | ||
+ | ) | ||
+ | | ||
+ | ;; Infoのload-path | ||
+ | (add-to-list ' | ||
+ | |||
+ | ;; Magic File Nameを一時的に無効化 | ||
+ | (defconst my: | ||
+ | (setq file-name-handler-alist nil) | ||
+ | (add-hook ' | ||
+ | (lambda () | ||
+ | (setq file-name-handler-alist my: | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Package Management system | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | ;; Package initialization ; | ||
+ | ;; ; 2024/ | ||
+ | (eval-and-compile | ||
+ | (custom-set-variables | ||
+ | ' | ||
+ | (" | ||
+ | (" | ||
+ | )) | ||
+ | ' | ||
+ | (package-initialize) | ||
+ | ;; leaf initialization ; | ||
+ | (unless (package-installed-p 'leaf) | ||
+ | (package-refresh-contents) | ||
+ | (package-install 'leaf t)) | ||
+ | (leaf leaf-keywords | ||
+ | :ensure t | ||
+ | ;; :init | ||
+ | ;; (leaf blackout :ensure t) | ||
+ | ;; (leaf hydra :ensure t) | ||
+ | ;; (leaf el-get | ||
+ | :config | ||
+ | (leaf-keywords-init) | ||
+ | ) | ||
+ | (setq custom-file (expand-file-name " | ||
+ | ) | ||
+ | ; | ||
+ | ; (package-refresh-contents) | ||
+ | ; ) | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;;; Emacs settings for Emacs base | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | ;;; Start-up settings | ||
+ | ;;; EmacsのC言語部分で定義されている変数をcustomで扱えるようにまとめる | ||
+ | ;;; 2024/ | ||
+ | (leaf cus-start | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :bind ((" | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ;; Mail process | ||
+ | | ||
+ | ;; Tab Control like Mac Window and tab control | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ;; Search Dictionary from Dictionaly App on macOS | ||
+ | | ||
+ | (lambda () (interactive) | ||
+ | (let ((url (concat " | ||
+ | (browse-url url)))) ; 辞書検索(カーソルのある位置の単語) | ||
+ | | ||
+ | (lambda (key) (interactive " | ||
+ | (let ((url (concat " | ||
+ | (browse-url url)))) ; 辞書検索(指定) | ||
+ | ) | ||
+ | :hook ((minibuffer-setup-hook . shrink-window-if-larger-than-buffer) ; | ||
+ | ) | ||
+ | :custom ' | ||
+ | (debug-on-error . t) ; Error時、Debuggerを起動し、backtraceを表示する | ||
+ | (frame-resize-pixelwise . t) | ||
+ | (enable-recursive-minibuffers . t) | ||
+ | (history-length . 1000) | ||
+ | (history-delete-duplicates . t) | ||
+ | (scroll-preserve-screen-position . t) | ||
+ | (scroll-conservatively . 101) ; 一気にscrollした場合の挙動変更(カーソルをCentralizeしない) | ||
+ | (visible-bell . t) | ||
+ | ;; | ||
+ | (text-quoting-style . ' | ||
+ | (truncate-lines . t) | ||
+ | (tab-width . 8) ; TAB幅を8文字にする | ||
+ | (line-number-display-limit-width . 10000) ; 行番号を10000行まで表示する | ||
+ | (resize-mini-windows . t) ; mini-buffer auto-resize | ||
+ | (max-mini-window-height . 0.1) ; mini-buffer max height to 10% | ||
+ | (indicate-empty-lines . t) ; 空行を表示する | ||
+ | (indicate-buffer-boundaries . ' | ||
+ | (scroll-step . 1) ; scrollする際のscroll行数 | ||
+ | (scroll-conservatively . 1) ; scrollさせる条件 | ||
+ | (create-lockfiles . nil) ; Lock fileを作成しない | ||
+ | (gc-cons-percentage . 0.2) | ||
+ | (gc-cons-threshold . 134217728) ; | ||
+ | ;; (use-dialog-box . nil) | ||
+ | ;; (use-file-dialog . nil) | ||
+ | (menu-bar-mode . t) ; menu-barを表示(Macの場合、MacのMenu-barに表示される) | ||
+ | (tool-bar-mode . nil) ; tool-barを非表示 | ||
+ | (scroll-bar-mode . nil) ; scroll-barを非表示 | ||
+ | (indent-tabs-mode . nil) ; IndentにTabを利用しない | ||
+ | (linum-mode . t) ; 行数を表示する | ||
+ | (transient-mark-mode . t) ; マーク領域を色付け | ||
+ | (tab-bar-mode . t) ; Tab-barを表示 | ||
+ | ) | ||
+ | :config | ||
+ | (add-function :after after-focus-change-function #' | ||
+ | (defalias ' | ||
+ | (set-display-table-slot standard-display-table 0 ?\ ) ; 文字が画面から飛び出る時にでる$マークを表示させない。 | ||
+ | (set-display-table-slot standard-display-table 'wrap ?\ ) ; 改行の時にバックスラッシュを表示させない | ||
+ | (leaf cus-start-mac | ||
+ | :when (eq system-type ' | ||
+ | :custom | ||
+ | (ns-alternate-modifier . ' | ||
+ | (ns-use-srgb-colorspace . t) ; Use sRGB | ||
+ | )) | ||
+ | |||
+ | (leaf dired | ||
+ | :bind (: | ||
+ | | ||
+ | ) | ||
+ | |||
+ | ;;; language/ | ||
+ | ;;; 多言語環境における基本コマンド | ||
+ | (leaf mule | ||
+ | :doc "basic commands for multilingual environment" | ||
+ | :tag " | ||
+ | :config | ||
+ | (set-language-environment ' | ||
+ | ;; Set coding systems to UTF-8 ; Coding systemをUTF-8にする | ||
+ | (set-terminal-coding-system ' | ||
+ | (set-keyboard-coding-system ' | ||
+ | (set-buffer-file-coding-system ' | ||
+ | (set-file-name-coding-system ' | ||
+ | (set-clipboard-coding-system ' | ||
+ | (prefer-coding-system ' | ||
+ | (set-default buffer-file-coding-system ' | ||
+ | (set-default-coding-systems ' | ||
+ | (leaf language-mac | ||
+ | :when (eq system-type ' | ||
+ | :custom | ||
+ | (default-input-method . " | ||
+ | )) | ||
+ | |||
+ | ;;; GUI Settings ; | ||
+ | ;;; Window systemを利用している場合の設定 | ||
+ | (when (memq window-system '(x mac ns)) ; X11/ | ||
+ | ;; frame settings | ||
+ | (defvar my-frame-parameters ; | ||
+ | ' | ||
+ | (width | ||
+ | (top | ||
+ | (left . 20) ; Position of left(X axis) | ||
+ | (line-spacing | ||
+ | (left-fringe | ||
+ | (right-fringe | ||
+ | (cursor-type | ||
+ | (alpha | ||
+ | (foreground-color . "# | ||
+ | (background-color . "# | ||
+ | (cursor-color | ||
+ | (mouse-color | ||
+ | )) | ||
+ | (setq default-frame-alist my-frame-parameters) | ||
+ | (setq frame-title-format ' | ||
+ | ;; frame.el | ||
+ | (setq blink-cursor-mode t) ; カーソルを点滅させる | ||
+ | (setq frame-inherited-parameters '(font tool-bar-lines)) ; | ||
+ | |||
+ | ;; ns-win.el | ||
+ | ;; lisp side of interface with NeXT/ | ||
+ | (setq ns-pop-up-frames nil) ; 複数ウィンドウを禁止する | ||
+ | |||
+ | ;; face settings / FontFace settings for mac | ||
+ | (when (memq window-system '(mac ns)) | ||
+ | (global-set-key [s-mouse-1] ' | ||
+ | (let* ((size 16) | ||
+ | | ||
+ | ;; (jpfont " | ||
+ | ;; (jpfont "UD Digi Kyokasho N-R") | ||
+ | ;; (jpfont " | ||
+ | | ||
+ | ;; (asciifont " | ||
+ | ;; (asciifont "UD Digi Kyokasho N-R") | ||
+ | ;; (asciifont " | ||
+ | (h (* size 10))) | ||
+ | (set-face-attribute ' | ||
+ | (set-fontset-font t ' | ||
+ | (set-fontset-font t ' | ||
+ | (set-fontset-font t ' | ||
+ | (set-fontset-font t ' | ||
+ | (set-fontset-font t ' | ||
+ | (set-fontset-font t ' | ||
+ | ;; Rescale the font face | ||
+ | (setq face-font-rescale-alist | ||
+ | ' | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | ;; Check font | ||
+ | ;; 1lIi / Oo0 | ||
+ | ;; | ||
+ | |||
+ | ;; mouse.el, mwheel.el 2024/ | ||
+ | ;; マウス制御 | ||
+ | (setq mouse-drag-copy-region t) ; mouseでのDrag and Dropを許可 | ||
+ | ;; mwheel.el 2024/ | ||
+ | (setq | ||
+ | | ||
+ | ; 1行, s[whl] 2行, C[whl] Page | ||
+ | | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Built-in eLisp | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | ;;; which-func.el 2024/ | ||
+ | ;;; modelineに現在行の関数名を表示 | ||
+ | (leaf which-function | ||
+ | :doc "print current function in mode line" | ||
+ | :tag " | ||
+ | :custom ((which-function-mode . 1) ; 現在ポイントがある関数名をモードラインに表示 | ||
+ | )) | ||
+ | |||
+ | ;;; time 2024/ | ||
+ | ;;; modelineに時刻を表示する | ||
+ | (leaf time | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :hook (emacs-startup-hook . display-time-mode) | ||
+ | :custom ((display-time-interval . 1) ; 時刻を1秒毎に更新(default: | ||
+ | | ||
+ | ; 時刻表示のフォーマット指定 | ||
+ | | ||
+ | )) | ||
+ | |||
+ | ;;; browse-url.el 2024/ | ||
+ | ;;; Cursor位置のURLをSystem Browserで表示する | ||
+ | (leaf browse-url | ||
+ | :doc "pass a URL to a web browser" | ||
+ | :tag " | ||
+ | :custom ((browse-url-browser-function . ' | ||
+ | ) | ||
+ | :config | ||
+ | (leaf browse-url-mac | ||
+ | :when (eq system-type ' | ||
+ | :custom ((browse-url-generic-program . " | ||
+ | ))) | ||
+ | |||
+ | ;;; time-stamp 2024/ | ||
+ | ;;; 2024/ | ||
+ | ;;; Last Updateを更新する | ||
+ | (leaf time-stamp | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :hook (before-save-hook . time-stamp) | ||
+ | :custom ((time-stamp-active . t) ; timestampを利用する | ||
+ | | ||
+ | | ||
+ | | ||
+ | )) | ||
+ | |||
+ | ;;; Completion / ido-mode 2024/ | ||
+ | ;;; 2024/ | ||
+ | ;;; ファイル名補完など | ||
+ | ;; (leaf ido | ||
+ | ;; :doc " | ||
+ | ;; :tag " | ||
+ | ;; :init | ||
+ | ;; | ||
+ | ;; : | ||
+ | ;; )) | ||
+ | |||
+ | ;;; Emacs EasyPG Assistant (EPA) 2024/ | ||
+ | ;;; 2024/ | ||
+ | ;;; 2024/ | ||
+ | ;;; Support GPG encryptiom & decryption | ||
+ | (leaf epa-file | ||
+ | :doc "the EasyPG Assistant, transparent file encryption" | ||
+ | :tag " | ||
+ | :require t | ||
+ | :config | ||
+ | (epa-file-enable) | ||
+ | (leaf epg-config.el | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :custom ((vepg-pinentry-mode . ' | ||
+ | | ||
+ | ))) | ||
+ | |||
+ | ;;; Whitespace-mode (minor-mode) 2024/ | ||
+ | ;;; 2024/ | ||
+ | ;;; White spaceのHandling | ||
+ | (leaf whitespace | ||
+ | :doc "minor mode to visualize TAB, (HARD) SPACE, NEWLINE" | ||
+ | :tag " | ||
+ | :require t | ||
+ | :hook (find-file-hook . (lambda () (whitespace-mode t))) ; ファイルを開いた時にwhitespace-modeを設定する | ||
+ | :custom ((whitespace-style . ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ;; | ||
+ | ;; | ||
+ | )) | ||
+ | | ||
+ | ) | ||
+ | :config | ||
+ | (set-face-foreground ' | ||
+ | (set-face-background ' | ||
+ | (set-face-attribute ' | ||
+ | :foreground " | ||
+ | :background " | ||
+ | :underline t) | ||
+ | (set-face-attribute ' | ||
+ | :foreground " | ||
+ | :background " | ||
+ | :underline t) | ||
+ | (set-face-attribute ' | ||
+ | :background " | ||
+ | :foreground " | ||
+ | :weight 'bold | ||
+ | :underline t) | ||
+ | (set-face-attribute ' | ||
+ | :foreground " | ||
+ | :background " | ||
+ | :underline t) | ||
+ | (global-whitespace-mode t) ; Whitespace-modeを全てのmodeで有効化 | ||
+ | ) | ||
+ | |||
+ | ;;; paren 2024/ | ||
+ | ;;; highlight matching paren | ||
+ | (leaf paren | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :hook (emacs-startup-hook . show-paren-mode) | ||
+ | :custom ((show-paren-delay . 0) ; 範囲表示の遅延を0秒にする(default: | ||
+ | | ||
+ | )) | ||
+ | |||
+ | ;;; simple 2024/ | ||
+ | ;;; 基本的な編集コマンド | ||
+ | (leaf simple | ||
+ | :doc "basic editing commands for Emacs" | ||
+ | :tag " | ||
+ | :custom ((kill-ring-max . 100) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | )) | ||
+ | |||
+ | ;;; files 2024/ | ||
+ | ;;; file操作関連・特にbackup関連設定 | ||
+ | (leaf files | ||
+ | :doc "file input and output commands for Emacs" | ||
+ | :tag " | ||
+ | :custom ( | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ;; (auto-save-file-name-transforms . ' | ||
+ | ;; (backup-directory-alist . ' | ||
+ | ;; | ||
+ | ; backupとauto-saveファイルは.emacs/ | ||
+ | )) | ||
+ | |||
+ | ;;; startup 2024/ | ||
+ | (leaf startup | ||
+ | :doc " | ||
+ | :tag " | ||
+ | :custom `((init-file-debug . t) ; init.elをdebugする | ||
+ | (auto-save-list-file-prefix . , | ||
+ | ; auto-save listの設定をする(files参照) | ||
+ | (inhibit-startup-screen . t) ; スタートアップ画面を表示させない | ||
+ | (inhibit-startup-message . t) ; スタートアップメッセージを表示させない | ||
+ | (inhibit-startup-echo-area-message . t) ; スタートアップ時、echoエリアメッセージを表示させない | ||
+ | (initial-scratch-message . "" | ||
+ | )) | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;; Additional Packages | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | ;;; company-mode 2024/ | ||
+ | ;;; 2024/ | ||
+ | (leaf company | ||
+ | :doc " | ||
+ | :req " | ||
+ | :tag " | ||
+ | :url " | ||
+ | :emacs>= 24.3 | ||
+ | :ensure t | ||
+ | ;; :blackout t | ||
+ | :leaf-defer nil | ||
+ | :bind ((" | ||
+ | | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | (" | ||
+ | ("< | ||
+ | ) | ||
+ | | ||
+ | (" | ||
+ | (" | ||
+ | )) | ||
+ | ;; :hook (emacs-lisp-mode-hook . company-mode) ; | ||
+ | :custom ((company-idle-delay . 0.3) ; companyが動作するまでのタイムラグ | ||
+ | | ||
+ | | ||
+ | ; (company-transformers . ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) | ||
+ | ;; : | ||
+ | : | ||
+ | (company-tooltip | ||
+ | `((t :foreground "# | ||
+ | (company-tooltip-common | ||
+ | `((t :foreground " | ||
+ | (company-tooltip-selection | ||
+ | `((t :foreground "# | ||
+ | (company-tooltip-common-selection | ||
+ | `((t :foreground " | ||
+ | (company-scrollbar-fg | ||
+ | `((t :background "# | ||
+ | (company-scrollbar-bg | ||
+ | `((t :background "# | ||
+ | ) | ||
+ | |||
+ | ;;; lua-mode 2024/ | ||
+ | ;;; 2024/ | ||
+ | (leaf lua-mode | ||
+ | :ensure t | ||
+ | :mode (" | ||
+ | : | ||
+ | :custom ((lua-indent-level . 2) ; Indent offset | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | :config | ||
+ | (leaf company-lua | ||
+ | :ensure t | ||
+ | :hook (add-hook ' | ||
+ | )) | ||
+ | |||
+ | ;;; caddyfile-mode (cnfiguration mode) 2024/ | ||
+ | ;;; 2024/ | ||
+ | (leaf caddyfile-mode | ||
+ | :ensure t | ||
+ | :mode ((" | ||
+ | | ||
+ | :hook (caddyfile-mode-hook . my-caddyfile-hook) | ||
+ | :config | ||
+ | (defun my-caddyfile-hook () | ||
+ | " | ||
+ | (setq-local tab-width 4) ; Default: 8 | ||
+ | (setq-local indent-tabs-mode nil)) ; Default: t | ||
+ | ) | ||
+ | |||
+ | ;;; nginx mode 2024/ | ||
+ | ;;; 2024/ | ||
+ | (leaf nginx-mode | ||
+ | :ensure t | ||
+ | :mode (" | ||
+ | :hook (nginx-mode-hook . company-mode) ; | ||
+ | :config | ||
+ | (leaf company-nginx | ||
+ | :ensure t | ||
+ | :hook (add-hook ' | ||
+ | )) | ||
+ | |||
+ | ;;; w3m 2024/ | ||
+ | ;;; Emacs W3m browser support. | ||
+ | (leaf w3m | ||
+ | :ensure t | ||
+ | ) | ||
+ | |||
+ | ;;; vc-fossil 2024/ | ||
+ | ;;; Fossil vc backend. | ||
+ | (leaf vc-fossil | ||
+ | :ensure t | ||
+ | :init (add-to-list ' | ||
+ | ) | ||
+ | |||
+ | ;;; go-translate 2024/ | ||
+ | ;;; Text translator for Emacs. | ||
+ | ;;; https:// | ||
+ | (leaf go-translate | ||
+ | :ensure t | ||
+ | :bind ("C-c t" . gt-do-translate) | ||
+ | :config | ||
+ | (setq gt-langs '(en ja)) | ||
+ | (setq gt-default-translator | ||
+ | (gt-translator | ||
+ | : | ||
+ | : | ||
+ | ;; (gt-bing-engine) ; | ||
+ | | ||
+ | | ||
+ | ; DeepL Translator | ||
+ | ) | ||
+ | : | ||
+ | ) | ||
+ | |||
+ | ;;; my: | ||
+ | ;; Deepl translation on web page(Web経由) | ||
+ | (leaf my: | ||
+ | :bind ("C-c T" . my: | ||
+ | :preface | ||
+ | (defun my: | ||
+ | (interactive) | ||
+ | (setq string | ||
+ | (cond ((stringp string) string) | ||
+ | ((use-region-p) | ||
+ | | ||
+ | (t | ||
+ | | ||
+ | (let (s) | ||
+ | | ||
+ | | ||
+ | (setq s (point)) | ||
+ | | ||
+ | | ||
+ | (run-at-time 0.1 nil ' | ||
+ | (browse-url | ||
+ | | ||
+ | " | ||
+ | (url-hexify-string string) | ||
+ | )))) | ||
+ | |||
+ | ;;; Specific Configuration | ||
+ | ;;; for mu4e | ||
+ | (load " | ||
+ | |||
+ | (provide 'init) | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ;;;; init.el ends here | ||
+ | |||
+ | ;; Local Variables: | ||
+ | ;; coding: utf-8 | ||
+ | ;; comment-column: | ||
+ | ;; version-control: | ||
+ | ;; kept-old-versions: | ||
+ | ;; kept-new-versions: | ||
+ | ;; End: | ||
+ | </ |
userapps/emacs.1730911718.txt.gz · 最終更新: 2024/11/07 01:50 (外部編集)