2023년 10월 29일 일요일

Emacs + slime + SBCL + Windows

 

SBCL

https://www.sbcl.org/

 

Download


설치 위치 예시


Slime

https://github.com/slime/slime

 

MELPA

https://melpa.org/#/getting-started

 

.emacs 추가

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired.  See `package-archive-priorities`
;; and `package-pinned-packages`. Most users will not need or want to do this.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)

 

Slime 설치

M-x package-install RET slime RET

 

.emacs 추가

https://stackoverflow.com/a/29929015/5676460

;; slime + sbcl
(require 'slime)
(setq slime-lisp-implementations '((sbcl ("C:/Program Files/Steel Bank Common Lisp/sbcl.exe" "--core" "C:/Program Files/Steel Bank Common Lisp/sbcl.core"))))


SBCL 설치 위치 확인하여 수정


Slime 실행

M-x slime RET


2023년 10월 26일 목요일

Emacs Daemon

 

 Windows

"C:\Program Files\Emacs\emacs-28.2\bin\runemacs.exe" --daemon 


runemacs.exe 바로가기 만들기

  • 바로가기 속성 -> 대상에 파라메터 추가 (--daemon)


시작 프로그램에 추가

  • 바로가기 복사
  • 바로가기 실행 또는 시스템 재시작

 

emacsclientw.exe 실행


systemd


~/.config/systemd/user/emacs.service 파일 작성

 

[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure

[Install]
WantedBy=default.target

 

서비스 등록 및 시작

systemctl enable --user emacs
systemctl start --user emacs


서비스 상태

systemctl staus emacs --user


Macosx

https://briansunter.com/blog/emacs-daemon-macos


~/Library/LaunchAgents/gnu.emacs.daemon.plist 에 파일 작성


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
<dict>
  <key>Label</key>
  <string>gnu.emacs.daemon</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/emacs</string>
    <string>--daemon</string>
  </array>
 <key>RunAtLoad</key>
 <true/>
 <key>ServiceDescription</key>
 <string>Gnu Emacs Daemon</string>
</dict>
</plist>


  • /usr/local/bin/emacs 대신 실제 emacs 설치 위치 (예: /opt/homebrew/bin/emacs, brew 로 설치함)

 

시작 등록

launchctl load -w ~/Library/LaunchAgents/gnu.emacs.daemon.plist

  • laucnhctl script 위치


또는


시스템 설정 -> 일반 -> 로그인 항목 -> 로그인 시 열기에 .plist 파일 추가


등록 해제

launchctl unload ~/Library/LaunchAgents/gnu.emacs.daemon.plist

  • 시스템 재시작 시 정지 상태 확인 가능

 

실행

emacsclient -cn