# Re: Всем привет!
Difrex (tgi,44) → cthulhu – 07:38:12 2026-03-19
Difrex>> А, да, чего бы хотелось: схемы клавишь GNU/Emacs, чтобы всякие C-n C-f и т.д. работали.
cthulhu> Тэк-с. Немножко поправил работу с клавиатурой. Вроде бы получилось не сильно ужасно. Может быть даже всякие C-n C-f заработают с последовательностями.
cthulhu> Но в пульреквесте `TODO: Emacs keystrokes` это для тебя, потому что я ни разу не емаксер. Там в корне есть `show_key.py` на всякий случай.
Сегодня постараюсь потыкать.
cthulhu> P.S.: А Дипсику так и передай, никаким "грасефулли екзит" в его коммите и не пахло.
LLM у меня только коммит мессeджи генерит на основе дифа. Там я try except добавил, чтобы нормально с 0 выходило, а не с эксепшоном.
Быстрофикс для себя, потому что мне нравится выходить по C-c. :)
Вот, кстати, код скрипта и кусок Emacs. Пусть будет, может кому еще пригодится.
+++ Caesium/0.9
Difrex (tgi,44) → cthulhu – 07:38:12 2026-03-19
Difrex>> А, да, чего бы хотелось: схемы клавишь GNU/Emacs, чтобы всякие C-n C-f и т.д. работали.
cthulhu> Тэк-с. Немножко поправил работу с клавиатурой. Вроде бы получилось не сильно ужасно. Может быть даже всякие C-n C-f заработают с последовательностями.
cthulhu> Но в пульреквесте `TODO: Emacs keystrokes` это для тебя, потому что я ни разу не емаксер. Там в корне есть `show_key.py` на всякий случай.
Сегодня постараюсь потыкать.
cthulhu> P.S.: А Дипсику так и передай, никаким "грасефулли екзит" в его коммите и не пахло.
LLM у меня только коммит мессeджи генерит на основе дифа. Там я try except добавил, чтобы нормально с 0 выходило, а не с эксепшоном.
Быстрофикс для себя, потому что мне нравится выходить по C-c. :)
Вот, кстати, код скрипта и кусок Emacs. Пусть будет, может кому еще пригодится.
#!/usr/bin/env python3
"""Generate git commit message based on the diff."""
import os
import sys
from ollama import generate
from ollama import GenerateResponse
MODEL = "deepseek-coder:6.7b"
BASE_PROMPT = """You are a Git commit message writer. Generate a commit message based on the provided git diff of staged changes.
**CRITICAL FORMATTING RULES:**
1. Output MUST be exactly in this format:
```
Title here
Multiline description here
on multiple lines
```
2. Title must be in imperative mood (e.g., "Fix bug" not "Fixed bug")
3. Title must not exceed 79 characters
4. Separate title and description with exactly one blank line
5. Do NOT include the diff itself in output
6. Do NOT add any text before or after the commit message
7. Description should explain WHY the change was made, not WHAT changed
**Content Guidelines:**
- Title: Start with verb, be concise, summarize the change
- Description: Explain the purpose, context, and impact
- Keep technical details minimal unless crucial
Now, generate a commit message for these staged changes:
DIFF:
"""
def get_diff() -> str:
"""Return git diff output."""
return os.popen("git diff --staged").read()
if __name__ == "__main__":
diff = get_diff()
if diff == "":
print("Nothing staged")
sys.exit(0)
prompt = f"""{BASE_PROMPT}
{diff}
"""
response: GenerateResponse = generate(model=MODEL, prompt=prompt)
output = ""
for line in response["response"].split("\n"):
if line.startswith("```"):
continue
output += line + "\n"
print(output + f"[NOTE]: Commit message written with LLM ({MODEL}) support.\n")
(defun difrex/difrex-ai-git-commit-msg (&rest _)
(when (string= (buffer-name) "COMMIT_EDITMSG")
(point-min)
(insert
(shell-command-to-string "git-commit-message.py"))))
(advice-add 'switch-to-buffer :after #'difrex/difrex-ai-git-commit-msg)
+++ Caesium/0.9