• 2025-03-04の日報

    2025年3月4日

    今日やったこと

    Emacs

    org-modeにledgerを導入した。ledgerはテキストベースで複式帳簿を扱えるCLIツール。

    Emacsでの連携方法は2種類ある。

    1つめは普通にledgerファイルを読み書きする方法。

    公式からledger-modeというプラグインが提供されているのでそれを使う。

    2つめはorg-modeを使う方法。

    org-modeは標準でledgerをサポートしているのでこんな感じで書けばorg-babelで実行できる。


    gptelにコンテキストを加える関数が良い感じになった。

    llm.txtとかはmarkitdownにかける必要がないからmarkitdownにかける関数とかけない関数に分離した。

    (defun markitdown (html)
      (let ((proc (make-process
               :name "markitdown"
               :buffer (get-buffer-create "*markitdown*")
               :command '("markitdown")
               :connection-type 'pipe)))
    
        ;; Erase buffer contents
        (with-current-buffer (get-buffer "*markitdown*")
          (erase-buffer))
    
        (process-send-string proc html)
        (process-send-eof proc)))
    
    (defun gptel-add-website (url)
      (interactive "s" "website? > ")
      (require 'request)
    
      (request url
        :success (cl-function
                  (lambda (&key data &allow-other-keys)
            ;; Convert HTML to markdown
            (markitdown data)
            ;; Append to context for gptel
            (with-current-buffer (get-buffer "*markitdown*")
              (gptel-context--add-region (get-buffer "*markitdown*")
                             (point-max)
                             (point-min)))))))
    
    (defun gptel-add-url (url)
      (interactive "s" "url? > ")
      (require 'request)
    
      (request url
        :parser 'buffer-string
        :success (cl-function
                  (lambda (&key data &allow-other-keys)
            (when data
              (with-current-buffer (get-buffer-create "*request*")
                (insert data)
                (gptel-context--add-region (get-buffer "*request*")
                               (point-min)
                               (point-max))))))))

    明日以降やりたいこと

    Emacsのスニペットまわりが気になるので手を加えていきたい。


    ko-fi ☕GitHub Sponsors 🐙