Posts by Category

uncategorized

org-roam 느린 함수를 memoize로 극복

1 minute read

Org-roam으로 관리하는 노드 개수가 늘면서 언제부턴가 노드를 검색하는 org-roam-node-find 함수와 노드를 삽입하는 org-roam-node-insert 함수가 느려지고 있다. 여기서 org-roam은 Emacs에 구현한 개인 지식 관리 모드다. Emacs 맛 Ob...

doom doctor로 doom emacs 개인 설정에 필요한 프로그램 설치 검사

3 minute read

Emacs를 설치하고 Doom Emacs 세팅한 후 실행하면 뭔가 비주얼이 이상하다. 필요한 폰트를 설치 안 했구나. Mermaid 같을 걸 실행하면 실패한다. 필요한 프로그램을 설치 안 했구나. 이런 걸 미리 편하게 검사할 수 있지 않을까? 설치하는 김에 한 번에 설치를 다 하게...

Doom emacs 로컬 설정 파일 config.local.el

less than 1 minute read

머신마다 다르게 설정할 게 있다면 auth-source를 사용해 퉁치고 있다. 단순 문자열이면 상관이 없는데, 리스트 같은 자료형을 사용하려니 꽤 귀찮다. 물론 리스트도 사용은 가능하다. 문자열을 받아서 eval 함수를 호출해 Emacs Lisp 자료형으로 만들면 된다. 하지만 한...

Flycheck 에러를 Eldoc 패키지로 표시

1 minute read

Emacs 하단에 있는 Echo Area에 간단한 문서를 즉시 볼 수 있게 해주는 Emacs 패키지다. 겸손한 알림이 가장 큰 장점이다. 관련된 정보가 있다면 슬그머니 Echo Area에 보여준다. 문서 작성을 방해하지 않는다.

unwind-protect로 timer를 설정하고 안전하게 해지하는 방법

less than 1 minute read

vertico에서 한글 증분 완성(incremental completion)을 지원하려고 timer를 적용했다. 0.01초마다 입력을 검사해서 완성 후보를 골라서 출력한다. vertico 모드가 종료될 때 이 timer를 잘 해제해야 한다. 제대로 해제가 안 되면 편집 중에도 이 ...

라이더(rider)에서 현재 파일을 emacs로 열기

less than 1 minute read

C# IDE로 라이더(rider)를 사용하고 있다. 간간히 emacs로 열어서 편집할 일이 생겨서 ’emacs server - 파일을 한 곳에서 열자’ 글에서 세팅한 것처럼 라이더에서도 현재 파일을 emacs로 열 수 있게 세팅했다.

doom emacs에서 org 구획 제목(heading) 사이에 빈 줄 추가하기

less than 1 minute read

org mode 구획 제목(heading) 사이에 빈 줄을 넣는 걸 선호한다. org mode로 볼 때야 있던 없던 상관이 없다. 간혹 그냥 텍스트를 볼 때가 있는데, 빈 줄이 있고 없고가 가독성에 큰 영향을 준다. 그래서 구획 제목 사이에 빈 줄을 넣는 걸 선호한다.

최근 명령어(command) 반복하기

less than 1 minute read

evil package를 사용한다면 repeat-evil 함수에 바인딩된 . 키를 눌러 최근 수정 명령어를 반복할 수 있다. 수정 명령어 반복은 잘 되지만 일반 모드에서 emacs 함수 호출은 반복이 되지 않는다. 될 때도 있는데, 지원하는 명령어가 따로 있는 것 같다.

emacs로 웹브라우저 검색을 편하게 하자

1 minute read

원하는 URL을 조합해 웹브라우저로 여는 대화형 함수 만들기 - elixir 문서 편하게 검색 글로 적은 것처럼 emacs에서 elixir 문서 검색 단어를 입력받아 주소를 조합해 웹브라우저로 여는 함수를 만들어 사용하고 있다. 써보니 편해서 이걸 더 확장했다.

Org-mode에서 C-c C-RET 키로 링크를 다른 윈도우에서 열기

less than 1 minute read

org mode에서 커서를 링크에 두고 RET 키를 누르면 현재 윈도우에 링크를 연다. 디폴트 동작으로 다른 윈도우로 링크를 열게 할까 했다. C-o, C-i 키로 이전, 이후 커서 위치 점프가 더 편해서 doom emacs 디폴트 설정을 유지하게 했다. 그래도 가끔은 다른 윈도우...

PowerShell 개발 환경

less than 1 minute read

(doom! :lang (sh +lsp +powershell) ; she sells {ba,z,fi}sh shells on the C xor )

링크를 열 때 사이트에 따라 다른 브라우저로 열기

less than 1 minute read

emacs에서 링크를 열 때, OS에서 정의한 웹 브라우저(web browser)를 사용해서 연다. 회사에서 사용하는 웹 브라우저를 기본 웹 브라우저로 세팅해서 개인적으로 사용하는 웹 브라우저와 분리해서 쓰고 있다. emacs에서 여는 링크도 기본 웹 브라우저로 열리는 게 불편해서...

미니 버퍼(minibuffer)에 입력한 문자 전체를 지우기

less than 1 minute read

M-x 키를 누르든지 해서 미니 버퍼(minibuffer)에 입력할 경우 전체 문자를 지울 일이 생긴다. 그럴 때마다 백스페이스(backspace)키를 꾹 누르고 있거나 C-backspace 를 눌러 단어 단위로 지우곤 했다. 전체를 선택해서 지우는 방법이 있을 것 같아 찾아봤다.

Org-mode로 이력서(resume, CV) 작성 (feat. LaTeX)

2 minute read

이력서를 쓸 일이 있어서 microsoft word 앱을 실행했다. 당최 익숙해지지 않는다. plain text에 너무 익숙해졌다. 글을 쓰는 것과 예쁘게 꾸미는 걸 분리하고 싶은데, word로는 못하겠다. 약간의 시간 여유가 있어 이참에 LaTeX로 이력서를 써볼까 하는 생각이 ...

Doom Emacs에 CSharp 개발 환경 구축하기

4 minute read

doom emacs로 설정하는 방법을 설명한다. doom emacs 설정 프레임워크를 사용하지 않는다면 doom emacs 모듈에서 사용하는 패키지 정보를 참고해서 구축하면 된다.

Doom Emacs 전환 후기

1 minute read

2013년부터 진지하게 emacs를 사용하고 있다. 지금까지 핸드메이드 init.el 설정 파일을 유지했다. 필요한 설정을 메뉴얼에서 찾거나 관련 블로그에서 정보를 얻어서 세팅했다. 조금씩 emacs가 내 손에 맞아떨어지는 재미가 있었다.

GitLab 이슈 문자열을 찾아 웹브라우저로 이슈 페이지 열기

1 minute read

redmine 이슈 번호를 #1234 같은 식으로 사용한 문서가 있다. 이슈 번호를 복사하고 웹페이지를 열어 /issues 주소 뒤에 1234 이슈 번호를 붙여서 확인하는 게 귀찮아서 간단한 함수를 만들었다. 이슈 번호가 있는 줄에서 #숫자 를 찾아서 URL을 생성해 웹브라우저로 ...

gitlab 상태를 휴가로 바꾸는 emacs lisp 대화형(interactive) 함수

1 minute read

휴가일 때, slack status를 :palm_tree: 휴가 로 바꾸고 있다. 멘션을 하려고 아이디를 타이핑하다 보면 휴가 상태가 바로 보여서 압박감을 준다. 진짜 급한 일이 아니면 휴가 중에 멘션을 받지 않는 좋은 효과가 있어서 휴가를 쓰면 꼭 설정한다.

#orgmode 코드 블럭 계산 결과도 html로 export하는 방법

1 minute read

마크다운(markdown) 같은 마크업(markup) 언어는 코드 블럭(code block) 문법을 지원한다. 구문 강조(Syntax highlighting)를 하거나 본문과 달리 고정 폭 글꼴을 사용해 렌더링할 수 있게 pre 태그로 감싸서 익스포트하기 위해서다.

#evil evil-surround 모드로 괄호를 감싸고 지우고 변경한다

1 minute read

괄호 쌍을 만들어주는 패키지를 추가했다. 코드를 추가할 땐, 불편함이 없다. 아니 닫는 괄호를 신경 쓰지 않아도 되니 편하다. 하지만 코드를 수정할 때, 필요 없는 닫는 괄호가 추가돼서 불편하다. 괄호 쌍을 만들어주는 패키지를 추가했다면 선택한 코드를 괄호로 감싸는 기능을 추가해야...

gitlab todo 항목 10개를 여는 함수

1 minute read

gitlab todo 기능 마음에 든다. 날 멘션(@mention) 하거나 담당자(assignee)로 설정했을 때, gitlab 시스템이 todo 목록으로 추가한다. 한눈에 내가 읽거나 답변해야 할 목록을 볼 수 있다. gitlab 기본 페이지로 해놓고 쓰고 있다.

#orgmode 설명 목록(description list)

1 minute read

Unordered list items start with ‘-’, ‘+’, or ‘*’10 as bullets. Ordered list items start with a numeral followed by either a period or a right par...

즉석 구문 검사 패키지 flycheck

less than 1 minute read

즉석 구문 검사(on-the-fly syntax checking) 패키지다. emacs 내장 flymake를 사용하다가 지원하는 언어가 많은 flycheck로 갈아탔다.

doom modeline을 설치한 김에 테마도 doom one으로 바꾸다

less than 1 minute read

modeline을 doom modeline으로 바꾸니 2013년부터 사용해 지겨워진 solarized light 테마도 바꾸고 싶다. 밝은 테마를 오래 써서 이번엔 어두운 테마를 쓰고 싶다. doom modeline을 찾을 때, 같이 본 doom themes로 결정했다.

#orgmode 9.2.1 업그레이드

2 minute read

org mode를 9.1.9 버전에서 9.2.1 버전으로 업그레이드했다. <#orgmode 최신 버전 사용하기> 글을 참고해 최신 버전으로 설치했다. emacs 26.1 버전에는 org mode 9.1.9 버전이 설치되어 있다.

미니 버퍼와 클립보드

less than 1 minute read

버퍼에서 클립보드를 사용하는 방법과 같다. evil-mode가 통하지 않는 미니버퍼에서 살아남으려면 익혀야 한다.

의존 라이브러리가 포함된 windows gnu emacs 26

less than 1 minute read

gnu emacs 다운로드 파일 이름 구성이 달라졌다. 의존 라이브러리 포함이 기본이 됐다. 64bit는 emacs-26.1-x86_64.zip 파일을 받으면 된다. emacs-26.1-x86_64-no-deps.zip 파일은 의존 라이브러리가 없는 파일이다.

TRAMP로 원격 파일을 로컬 파일처럼 편집 - windows

less than 1 minute read

<TRAMP로 원격 파일을 로컬 파일처럼 편집> 글은 쓰면서 macOS에서 테스트했다. windows에서 똑같이 테스트해봤다. windows에서 bash를 emacs shell로 사용하고 있어서 ssh 명령어를 실행할 수 있다. 잘 되겠지?

with-eval-after-load 매크로로 라이브러리 로드 후에 실행

less than 1 minute read

라이브러리 개인 설정은 어디에 둬야 할까? 라이브러리를 로드한 후에 두면 된다. 위치에 상관없이 정의하고 특정 라이브러리가 로드된 후에 실행할 수 있을까? 버전 컨트롤 안 하는 init.local.el 파일에 라이브러리 로드 후에 실행할 설정 파일을 추가하고 싶다.

#gitlab 연관된 merge request가 없는 commit을 org todo로 만들기

1 minute read

merge request는 org todo로 만들어서 잘 쓰고 있다. merge request 단위로는 계속 읽고 있는데, 아쉽게도 이게 다가 아니다. master에 직접 push도 허용하고 있어서 연관된 merge request가 없는 커밋(commit)도 있다. 주로 아티스트 ...

버전 컨트롤 안하는 init.el 설정은 어떻게 관리하지?

less than 1 minute read

<#gitlab issue 또는 merge request의 링크와 제목 삽입하기> 글에서 짠 함수를 사용하려면 personal access tokens가 필요하다. github에 올려놓은 init.el 파일에 적어놓는 건 아닌 것 같다. id와 password를 공개 장...

#helm 내부 프로세스 죽이기

less than 1 minute read

emacs가 느리다. 내부 프로세스를 가장 먼저 의심한다. 버그로 여러 개가 띄어졌는지. 필요 없는 프로세스가 살아있는지 확인한다.

#elisp goodbye-picasa: picasaweb 이미지를 다운로드해서 교체

1 minute read

picasaweb 이미지를 로컬에 다운로드하고 이미지 주소를 교체하는 스크립트를 짰다. 기존에 올린 이미지는 google photos로 자동으로 이관됐다. 엑박 안 뜨고 잘 나오지만 레거시 지원으로 유지되는 거라서 불안하다. 그래서 간단한 스크립트를 짰다.

tail -f [unity 로그 파일]

less than 1 minute read

(defun unity-open-editor-log () (interactive) (let ((path (format "C:/Users/%s/AppData/Local/Unity/Editor/Editor.log" (getenv "USER...

use-package 패키지로 패키지 관리를 더 간단하게

less than 1 minute read

package 설치 코드와 추가 설정 코드를 따로 관리했다. 그러다 보니 init.el 파일 크기가 커져서 분리하고 분리하다 보니 관리 안 되고. 설치와 설정을 같은 코드 블럭으로 관리할 수 있는 use-package 패키지를 설치했다.

#elisp 맘 편히 path 조립

less than 1 minute read

path를 만들 때, 가장 귀찮은 건 디렉터리 구분자를 넣는 것이다. 귀찮은 사람이 어디 한둘이겠나? 그래서 대부분 Path.Combine 같은 helper 함수를 만들어 놓는다.

<pre>org-mode table</pre>

less than 1 minute read

일감에 table을 붙여넣을 일이 있으면 항상 org-mode를 사용한다.

백업 파일, 원하는 곳에 원하는 만큼

1 minute read

같은 디렉토리에 ~ 꼬리를 달아서 백업 파일을 남기는 게 기본 설정이다. 안전빵이니 백업을 남기는 건 좋은데, 지저분하다. 조금만 쪼물락 거리면 원하는 곳에 원하는 만큼 남길 수 있다.

eval, eval, eval

1 minute read

init file을 쓰담쓰담 하다 보면 변경 사항을 반영해야 한다. 이왕이면 바로 반영됐으면 좋겠다. 수정하고 emacs 다시 실행해서 반영했는지 확인하고 다시 수정하고. 이렇게 수정하기는 싫다. 괴로워.

init file - emacs 애정 증폭제

less than 1 minute read

초기화 명령들을 담고 있는 파일을 vim에선 vimrc 라고 부르고 emacs는 init file 이라고 부른다. dotemacs 가 좀 더 간지나지만 메뉴얼에서 init file 이라고 부르니 이 용어를 사용한다.

Back to Top ↑

org-mode

Back to Top ↑