manywaypark's Blog
개발, 검색, 함수

eshell buffer 내용 지우기

emacs 2019.01.16 16:43 by manywaypark

개발 도중에 eshell buffer에서 server 프로그램 등을 실행하는 경우가 있는데 가끔 며칠 동안 로그가 쌓이면 텍스트 검색 등이 무지하게 느려진다.

다음 함수를 *scratch* buffer 등에서 한번 eval(C-x, C-e)해주거나 초기화 과정에서 eval될 수 있도록 설정한 후에 eshell buffer에서 clear를 입력해주면 버퍼가 깨끗이 비워진다.

(defun eshell/clear ()

  "Clear the eshell buffer."

  (let ((inhibit-read-only t))

    (erase-buffer)

    (eshell-send-input)))

이걸 왜 여태껏 모르고 살았던 거지? Orz.


ref: https://emacs.stackexchange.com/questions/12503/how-to-clear-the-eshell


happy hackin'


PS. 컥... eshell/clear는 기본 함수구나.... eshell-truncate-buffer(C-c C-t)를 쓰면 될듯.

https://github.com/cpitclaudel/emacs/blob/master/lisp/eshell/esh-mode.el

Emacs Shell에서 PATH 문제

tips & tricks/Mac 2018.11.03 00:17 by manywaypark

예전에는 이 문제가 안생겼던거같은데, 모하비 업그레이드 후에 생긴것같다.

purcell의 emacs.d를 사용하면 자동으로 exec-path-from-shell을 호출하는 것으로 보이는데 이상하다.


일단 향후 해결을 위해 글을 남김.


TBD


refs: 

https://emacs.stackexchange.com/questions/10722/emacs-and-command-line-path-disagreements-on-osx

https://emacs.stackexchange.com/questions/461/configuration-of-eshell-running-programs-from-directories-in-path-env-variable

http://ergoemacs.org/emacs/emacs_env_var_paths.html

TAG emacs, Mac, OSX, path

build emacs for windows 64

emacs 2017.12.05 12:06 by manywaypark

window에서 emacs 직접 build 하는 방법:

(chocolatey에 포함된 emacs64 package 만드는 사람이 작성한 것)

https://github.com/zklhp/emacs-w64/wiki/Guideline-for-building-Emacs-in-MSYS2-MinGW-w64-system


happy hackin'

emacs

emacs -mm


emacsclient

아래 방법들 중 하나로 한다.

emacsclient -c -F "'(fullscreen . fullboth)"

emacsclient -c -F "'(fullscreen . maximized)"

alias ecx="emacsclient -c -F \"'(fullscreen . maximized)\""

emacsclient -c -F "((width . 100) (height . 100) (left . 400))"


ref: https://stackoverflow.com/questions/20285965/how-can-i-launch-emacsclient-maximized-from-the-commandline


happy hackin'

ModuleNotFoundError: No module named 'jedi'

emacs 2017.03.31 00:16 by manywaypark

어젠가 그젠가 melpa를 통해 emacs package들을 업데이트 했는데 그 이후로 python anaconda mode에서 아래와 같은 에러가 났다. (linux와 mac 양쪽에서 공통으로 발생)


Traceback (most recent call last):

  File "<string>", line 4, in <module>

  File "/Users/airdh/.emacs.d/anaconda-mode/0.1.7/anaconda_mode-0.1.7-py3.6.egg/anaconda_mode.py", line 17, in <module>

    from jedi import Script, NotFoundError

ModuleNotFoundError: No module named 'jedi'


해결 방법은 jedi를 수동으로 설치하는 것이다.

git clone https://github.com/davidhalter/jedi
cd jedi
git checkout v0.10.0
python setup.py sdist
cd dist
PYTHONPATH=$HOME/.emacs.d/anaconda-mode/0.1.7 easy_install -d $HOME/.emacs.d/anaconda-mode/0.1.7 -S $HOME/.emacs.d/anaconda-mode/0.1.7 -a -Z jedi-0.10.0.tar.gz

https://github.com/proofit404/anaconda-mode/issues/225


happy hacking'

초간단 emacs package 관리법

emacs 2017.03.21 15:57 by manywaypark

아래 페이지를 방문해서 설치방법을 참고하여 emacs.d를 설치한다.

https://github.com/purcell/emacs.d

이제 emacs를 다시 시작하면 개발자에게 필요한 대부분의 패키지들이 깔려있다. 


가끔 아래 세가지 명령으로 패키지 업데이트를 해준다.

M-x package-refresh-contents

M-x package-list-packages

Ux


아주 가끔 불필요한 패키지를 아래 명령으로 지워준다.

M-x package-autoremove


happy hackin'

doxymacs on cygwin

tips & tricks/Win 2014.10.21 17:27 by manywaypark

의존성은 내 경우 libxml2-devel 이었는데, 기본적인 autotools등도 필요하다.

emacs가 PATH에 있는지 확인

$ which emacs

......

$ git clone git://git.code.sf.net/p/doxymacs/code doxymacs-code

......

$ ./bootstrap

......

$ ./configure --prefix=/usr/local

......

$ make install


일반적인 제대로 된 설정(?)이라면 위와 같이 하면 동작할 것이다.

나는 일종의 종합선물 세트인 emacs.d를 쓰고 있으므로[각주:1] 관리의 편의를 위해 emacs.d쪽으로 옮긴다. 
$ cp /usr/local/share/emacs/site-lisp/*.el ~/.emacs.d/site-lisp/
또한 eshell에서 /usr/local/bin 이 PATH에 걸려있는지 확인한다. (특히 cygwin에서 제공하는 emacs가 아닌 GNU emacs를 따로 설치한 경우 확인 필요)
마지막으로 적당한 곳(~/.emacs 또는 ~/.emacs.d/lisp/init-local.el)에 다음 라인을 추가한다 (추가하기 싫다면 필요시 eval 해도된다).
(require 'doxymacs)

refs:
http://doxymacs.sourceforge.net/
https://www.emacswiki.org/emacs/DoxyMacs

happy hackin'


  1. 사실 .emacs.d에서 쓰는 packaging system인 MELPA에서 doxymacs를 지원했으면 이따위 수고로운 작업따위 필요없었을텐데. 아숩. [본문으로]

gtags는 어디에?

emacs 2014.07.17 14:34 by manywaypark

제법 예전에 만들었던 .emacs파일을 새로 설치한 박스에 복사했더니 다음과같은 에러가 났다.

File error: Cannot open load file, gtags

.emacs 파일을 열어보니 언제 설정했는지도 기억 안나는 설정 항목이 많다. Orz.

틈틈히 정리해줘야겠다.

(require 'gtags) 가 실패해서 생기는 문제였다.

이걸 수동으로 설치했던가? 패키지가 있었던가? 헷갈렸다. 유명한거라 패키지가 있을텐데...
~ $ apt-cache search gtags
perl-modules - 핵심 펄 모듈
seascope - source code navigation tool
~ $ apt-file search gtags | grep gtags.el
emacspeak: /usr/share/emacs/site-lisp/emacspeak/lisp/emacspeak-gtags.el
global: /usr/share/emacs/site-lisp/global/gtags.el

apt-cache 로 찾기는 실패했고 (물론 의존성 걸려있어서 깔렸겠지만), apt-file로는 한방에 성공했다.

결론은 GNU global을 설치하면 해결된다.

~ $ sudo apt-get install global


gtags 단축키 설정 관련 참고: http://www.emacswiki.org/emacs/CyclingGTagsResult


happy hackin'

먹고 살려고 windows 환경에서 emacs를 쓰고 있는데, 어느 순간엔가 제목과 같은 에러가 나면서 emacs가 시작조차 되지 않았다.

emacs가 안되면 나는 아무것도 할 수 없는 상태... 완전 맨붕.

*Messages* buffer의 내용은 아래와 같았다.

......

Desktop: 367.00ms to restore ~/.emacs.d/custom.el

Entering debugger...

condition-case: Variable binding depth exceeds max-specpdl-size

Error in post-command-hook (global-rinari-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size")

Mark activated

rinari-root: Lisp nesting exceeds `max-lisp-eval-depth'

......

검색해봐도 별로 유의미한 것은 없었고 rinari는 ruby 관련 패키지라는 것 말고는 알아낸게 없었다 (난 ruby 쓰지도 않음).

얼마전부터 개별 패키지 설치를 하지 않고(너무 많아서 귀찮음) 대부분의 각종 설정을 해주는 emacs.d를 잘 쓰고 있었는데 거기에는 desktop이라는 패키지도 기본으로 포함되어 있었다. emacs 종료 직전의 상태(열린 파일 즉 버퍼 등)로 복구해주는 아주 유용한 패키지인데, 파일들을 열다가 상기 메시지를 뿌리는 것으로 보아 좀 의심이 갔다. 설정 파일(~/.emacs.d/.emacs.desktop)을 열어 보았다.
에러 메시지를 뿌리기 직전 custom.el을 열고 그 다음에 remote server의 파일(//으로 시작하는 path)을 열면서 에러가 난 것으로 추정되었다.

기억을 더듬어 보니 며칠전에 remote file server에 있는 파일을 drag & drop으로 열려고 시도했는데 제대로 열리지 않아서 local로 옮겨서 열었던것이 용케 떠올랐다 (사실 rebooting 요구하는 windows update만 안했어도 몇주 이상 더 띄워 놓았을 거다).
해당 부분을 파일에서 삭제하고 emacs를 시작했더니 제대로 올라왔다.
해당 부분(lisp expression 이다):
(desktop-create-buffer 206
  "//a.file.server/path/to/file"
  "file"
  'fundamental-mode
  '(anzu-mode global-auto-revert-mode whitespace-cleanup-mode undo-tree-mode whole-line-or-region-mode hes-mode auto-compile-on-load-mode)
  1
  '(nil nil)
  nil
  nil
  '((buffer-file-coding-system . iso-latin-1-dos)))

간만에 구글느님께서도 정답을 알려주지 못하는 문제가 생겨서 삽질좀했다.

happy hackin'



todo list 관리(GTD tool)

tips & tricks 2013.05.11 16:32 by manywaypark

할일 관리를 위해서 쓰는 도구는? 사실 "GTD tools" 정도로 구글링하면 많은 도구와 기법이 나오는데, 내가 지금까지 써봤던 것들을 정리하고자 한다.

  • emacs org-mode 이건 최강이다. 이론의 여지가 없다. 일상적인 다이어리 수준에서부터 개발 프로젝트 관리까지 쓸 수 있다. 그러나 vi를 선호하는 개발자나 개발자가 아닌 일반 사용자들은 emacs 자체를 익숙하게 다루기가 힘들다.
  • orkanizer  근자에 뽀모도로(pomodoro) 테크닉이라는 시간관리 기법을 알게되었는데, 그 방법을 적용할 수 있게 해주는 서비스이다. 기본 기능에 충실하고 잘 동작하긴 하는데, time zone 문제가 있다 (버그리포트 했는데 아직도 안고쳐졌음).
  • todo.txt 간단한 텍스트 파일로 관리한다 (어떻게 보면 org-mode의 단순화된 형태로 보인다. 사실 plain text로 구성하려면 비슷할 수 밖에 없을 것같긴하다). CLI, iOS, Android 등을 지원하는듯... CLI의 경우 "t ls"등 명령행에서 접두사를 포함한 유닉스스타일로 관리할 수 있는건 장점이지만 기능이 조금 제한적인 것같은 느낌도 든다.


happy hackin'


ps. RedToDo는 todo.txt의 CLI와 비슷한 인터페이스를 제공하는데, Redmine용이다.

1 2 
분류 전체보기 (295)
잡담 (20)
함수형 언어 (62)
emacs (16)
java (18)
tips & tricks (147)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)