go-template-modeのインストール

go-templateのためのメジャーモードがないかと探していたらGistに簡易なものがあった。 https://gist.github.com/anonymous/1654113 が最初だが、Forkされたもの https://gist.github.com/grafov/10985431 のほうが状態がよさそうだったの...

 · 1 min · しむどん三度無視

Emacsでコマンドを実行するための関数をカスタマイズした

ansi-termを使ってターミナルエミュレータを起動していたが、引数を直接渡せないなどの細かい挙動が気になりだした。 考えつく限り自分の要求に合うように関数の挙...

 · 1 min · しむどん三度無視

Emacs 28でel-getをrequireしようとするとdefine-obsolete-function-aliasでエラーする

開発版版のEmacs (28.0.50) をソースからビルドして使っている。 el-getをrequireしようとしたところ以下のエラーが発生した。 Debugger entered--Lisp error: (wrong-number-of-arguments (3 . 4) 2) #f(compiled-function (obsolete-name current-name when &optional docstring) "Set OBSOLETE-NAME's function...

 · 2 min · しむどん三度無視

org-modenのアウトラインを一括で開閉する

org-modeでアウトラインを開閉を行うには以下のコマンドを用いる。 動作 コマンド名 開く outline-show-all 閉じる outline-hide-other どんなショートカットにバインドされているかは環境によって異なる...

 · 1 min · しむどん三度無視

process-environmentの復元

Emacsを使って複数のprojectで開発しているとprocess-environmentを頻繁に 書きかえる必要が出てくる。projectの切り替えはproj...

 · 1 min · しむどん三度無視

Editorモードで作成するファイルをファイルスタイルとディレクトリスタイルの両方に対応した

動機 Emacsのカスタマイズをした。Blogを書くときは自作のEditorモードを用いて いる。これは書いた内容を特定のディレクトリに配置してGitに登録するツー...

 · 3 min · しむどん三度無視

Emacsで使われるbashコマンドを指定する

explicit-shell-file-nameで指定できる。 (custom-set-variables '(explicit-shell-file-name "/usr/local/bin/bash"))...

 · 1 min · しむどん三度無視

.envファイルからprocess-environmentを設定できるようにdotenv-modeを拡張した

.envの定義からprocess-environmentを設定できるようにdotenv-modeをカスタマイズした。 M-x dotenv-load RET で適応される。 dotenvファイルはd...

 · 1 min · しむどん三度無視

run-pythonでの補完がサポートされていないときのワーニング

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native-enable’...

 · 1 min · しむどん三度無視

.dir-locals.elの適応時の警告を抑止する

.dir-locals.elを配置するとファイルを開く際に警告が表示される事がある。 The local variables list in /srv/foo/ contains values that may not be safe (*). Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables...

 · 1 min · しむどん三度無視

スクラッチバッファを作成する

スクラッチバッファのメジャーモードは lisp-interaction-mode です。 新しいバッファを作成しメジャーモードを変更すればスクラッチバッファのように扱うことができます。 (defun scratch-buffer-create (buf-name) "Create new scratch buffer" (interactive "sBuffer Name: ")...

 · 1 min · しむどん三度無視

環境変数を設定してmake-processで子プロセスを起動する

process-environmentという変数に適応する環境変数のリストが収められている。 それをletなどで上書きした状態でmake-processすれば、そ...

 · 1 min · しむどん三度無視

Emacsのdockerfile-modeでimageのデフォルト値が入力されるようにカスタマイズする

(defun dockerfile-read-image-name () "Read a docker image name." (ido-completing-read "Image name: " dockerfile-image-name-history nil nil nil nil (car dockerfile-image-name-history))) (bind-key "C-c C-c" #'dockerfile-build-buffer 'dockerfile-mode-map)...

 · 1 min · しむどん三度無視

EmacsでPlantUMLを使う

この記事は Emacs Advent Calendar 2020 15日目の記事です。 はじめに PlantUMLはUMLを記述するためのツールです。今回はPlantUMLをEmacsから扱う方法をまとめます。 plantuml-mode...

 · 3 min · しむどん三度無視

Pythonのdoctestを実行するflycheckのchecker

Pythonのdoctestを実行するflycheckのcheckerを書いた。 実装 (flycheck-define-checker python-doctest "Python doctest flycheck checker" :command ("python" "-m" "doctest" source-inplace) :modes (python-mode) :enabled (lambda () t) :error-patterns ((error line-start (repeat 70 "\*") "\n" line-start "File " "\"" (file-name) "\", line " line ", in " (+ printing)...

 · 1 min · しむどん三度無視

Org-modeのINCLUDEを使って外部のファイルの内容を差し込む

Org-modeは #+INCLUDE: を使うことで外部のファイルの内容をを取り込みます。今回はこの機能の色々な指定方法を試します。 基本的な使い方 最初のパラメータは含めるファイル名...

 · 2 min · しむどん三度無視

GnuPGでファイルを署名する

Emacsのパッケージがインストールされるのを眺めるで.sigという拡張子のファイルをダウンロードしていました。これはGnuPGの署名ファイルです。今回はこの署...

 · 11 min · しむどん三度無視

transientを使ってMagitのようなUIを実現する

transientはMagitの様なUIを実現するためのライブラリです。元々はmagit-popupという名前のパッケージでしたが、そこから分岐したようです。t...

 · 1 min · しむどん三度無視

EmacSQLでMySQLに接続する

今回はEmacSQLというサードパーティ製のライブラリを使ってMySQLに接続してクエリを実行してみます。 emacsql?emacsql-mysql? emacs...

 · 3 min · しむどん三度無視

package-buildを使ってEmacsのパッケージを作る

Emacsのパッケージとarchive-contentsをpackage-buildを使って作成しました。また作成時のファイルの配置場所などの設定を確認しました...

 · 4 min · しむどん三度無視

Emacsをソースコードからインストールする

ソースコードの取得 まずはソースコードを取得します。 Github上にミラーリポジトリがあるので今回はそこから取得しました。 とりあえず最新のソースだけでよいので --depth 1...

 · 1 min · しむどん三度無視

EmacsのパッケージアーカイブをGithub Pagesでホスティングした

自作したパッケージも依存関係があったりするので外部にホスティングしたいです。ただMELPAに入れようとすると体裁を整えるなどの時間が取られてしまうのでそこまでは...

 · 1 min · しむどん三度無視

Emacs Lispのパッケージアーカイブをまとめる

EmacsWikiにEmacsのパッケージアーカイブについて書かれています。 https://www.emacswiki.org/emacs/ELPA 名前 使用中 説明 URL GNU ELPA o FSFに承認されたパッケージが提供されている https://elpa.gnu.org/packages/ MELPA o 色々なパッ...

 · 1 min · しむどん三度無視

Emacsのパッケージがインストールされるのを眺める

url-retrieve-synchronicallyのデバッグについてでurl-retrieve-synchronouslyのデバッグについて書きました。ur...

 · 5 min · しむどん三度無視

Emacsのパッケージをインストール時の署名の検査の有無を切り替える方法

Emacsのパッケージをインストールする時には署名の検査が行われますが、署名の検査を行わないように設定に設定できます。今回はその際に設定する変数と使われ方につい...

 · 5 min · しむどん三度無視

org-babelのコードブロックの設定を共通化する

Org-modeのプラグインであるorg-babelでドキュメント内に記述したコードを実行する方法と #+PROPERTY: 構文を使った設定設定の共通化の方法をまとめました。 コードブ...

 · 2 min · しむどん三度無視

url-retrieve-synchronicallyのデバッグについて

url-retrieve-synchronicallyはURLで指定されたリソースにアクセスするための関数。 この関数はいろいろと使いにくいところがあるのでデバッ...

 · 2 min · しむどん三度無視

list-buffersで表示されないバッファの条件を調べた

https://sximada.qrunch.io/entries/igZwGMywTUSL9IJdの転載。 Emacsで M-x list-buffers を実行するとバッファ一覧が表示される...

 · 2 min · しむどん三度無視

gitでファイルの修正をafter-save-hookで自動コミットする設定

(add-hook 'before-save-hook #'our-git-commit-and-push-all nil t) our-git-commit-and-push-allはhttps://symdon.ga/posts/1604485779/で定義した関数。...

 · 1 min · しむどん三度無視

magitでgit commitを行う関数を調べる

(require 'magit) (progn (magit-stage-1 "--all") (magit-commit-create '("--message" "Fix.")) (magit-push-matching "origin")) (defun our-git-commit-and-push-all () (magit-stage-1 "--all") (magit-commit-create '("--message" "Fix.")) (magit-push-matching "origin"))...

 · 1 min · しむどん三度無視

org-captureでhook実行時にカレントバッファがどのバッファなのかを確認する

次のようなコードで確認した (add-hook 'org-capture-prepare-finalize-hook (lambda () (message (format "prepare: %s" (buffer-name (current-buffer)))))) (add-hook 'org-capture-before-finalize-hook (lambda () (message (format "before: %s" (buffer-name (current-buffer)))))) (add-hook 'org-capture-after-finalize-hook (lambda () (message (format "after: %s" (buffer-name (current-buffer)))))) 結果 prepare: CAPTURE-.notes before: CAPTURE-.notes Wrote /Users/sximada/.notes after: current.org...

 · 1 min · しむどん三度無視

flycheckをカスタマイズする

準備 (package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/"))) (package-install 'flycheck) (use-package flycheck :ensure t) (require 'flycheck) checkerの定義 要点 flycheck-define-checkerを使う。 定義したチェッカーはchecker-c...

 · 2 min · しむどん三度無視

transientを用いたコマンドの例

このような感じでコマンドを変更した。 (transient-define-prefix editor-save-as () "Editor mode save as..." [("s" "Symdon GA" editor-save-as-kill)]) (bind-keys :map editor-mode-map ("C-x C-s" . editor-save-as)) (bind-key* "C-t C-w" 'editor-create-buffer)...

 · 1 min · しむどん三度無視

transientを使って簡単なコマンドを書いてみた。 (defun hello-world () (interactive) (message "Hello world!!")) (transient-define-prefix testing () "testing" [("a" "A" hello-world) ("b" "B" hello-world)]) 基本的にはこういう使い方でコマンドを追加できる。 グループ化や引数の機能も...

 · 1 min · しむどん三度無視

transientでコマンドを書く場合はmagitやdocker.elが参考になる。 xref-find-definitionsで動いている実装まで即座にジャンプ...

 · 1 min · しむどん三度無視

transient

transientはEmacsのコマンドを作るためのemacs lisp。 Magit Organizationによって開発/管理されている。 以前magitのUI部分はmag...

 · 1 min · しむどん三度無視

まずはeditor-modeを拡張しよう。 今は以下のようにバインドしている。 キーバインド 関数 処理 C-t C-w editor-create-buffer editor-modeの起動 C-x C-s editor-save-as-kill editor-modeで...

 · 1 min · しむどん三度無視

editor-modeでコメントのたびにgit addおよびgit commitをしないといけないのは大変なので C-c C-s したらそれを実行されるように変更する。 (defun editor-save-as-kill () (interactive) (symdon-ga-post...

 · 1 min · しむどん三度無視

DATEエクスポートオプションを更新したい場合、現状では手動で書き換える必要がある。 edit-create-buffer 内部では更新処理を行っているので 切り出して独立して実行できるようにする。 (defun...

 · 1 min · しむどん三度無視

Emacsでtimestampを取得する (float-time) 少数を切り捨てる (truncate (float-time))...

 · 1 min · しむどん三度無視

作成したtextを即座にpostsに書き込めるようにした。 (defcustom symdon-ga-post-directory "/ng/symdon/pages/posts" "Path to directory of symdon-ga posts") (defun symdon-ga-create-new-file-path () (concat (directory-file-name symdon-ga-post-directory) "/" (format "%s.org" (truncate (float-time))))) (defun symdon-ga-post (text) (with-current-buffer (find-file-noselect (symdon-ga-create-new-file-path)) (insert text) (save-buffer) (current-buffer))) (defun editor-get-editor-buffer-text () (with-current-buffer (get-buffer editor-buffer-name) (buffer-substring-no-properties (point-min) (point-max)))) (defun editor-save-as-kill () (interactive) (symdon-ga-post (editor-get-editor-buffer-text)) (kill-buffer editor-buffer-name)) (custom-set-variables '(symdon-ga-post-directory "/ng/symdon/pages/posts")) (bind-keys...

 · 1 min · しむどん三度無視

org-captureのhookを確認する

symbol 実行されるタイミング カレントバッファ 備考 org-capture-mode-hook org-capture-modeが有効化される前 org-capture-prepare-finalize-hook ファイナライズが開始される直前 キャプチャバッファ ナローイングされて...

 · 1 min · しむどん三度無視

EmacsでOrg(org-mode)の上付き文字と下付き文字の記法を切り替える

EmacsのOrg(org-mode)の上付き/下付き文字の設定を変更してHTMLに変換した時にどのように出力されるのかを確認します。また部分的に変換する方法に...

 · 4 min · しむどん三度無視

org-md-export-as-markdownの目次表記をカスタマイズする

org-md-export-as-markdownはorg-modeのテキストをMarkdownに変換します。変換時に自動で挿入される目次の位置と表記をカスタマ...

 · 11 min · しむどん三度無視