2018년 4월 26일 목요일

Emacs - Spawning Child Process: Invalid Argument

I tried to fix it for 3 hours at mid-night with my laptop at home.

[ When? ]
* when you call a external program on emacs.

[ My case ]
* when
"M-x slime" or "M-x run-lisp"
=> emacs error message - Spawning Child Process: Invalid Argument

* Error
(setq inferior-lisp-program "C:/myprog/clisp-2.49/clisp.exe")
(add-to-list 'load-path "C:/myprog/slime-2.20")
∙∙∙∙

* Solution
(setq inferior-lisp-program "clisp.exe")
(add-to-list 'load-path "C:/myprog/slime-2.20")
∙∙∙∙

[ Tip ]
* I don't know exactly the reason(why the error is happened).
 Because "full path" has no problem on the other computer in office.
 Anyway only the different is
 => I am using winddows 10 and I installed lisp with install file(clisp-2.49-win32-mingw-big). But slime is a zip file(slime-2.20.zip).
* There are various reasons it is happend.
  But common reason is "failed to call a external program on emacs".

  good luck.

-------
Lisp 실행파일을 지정할 때 절대경로를 쓰지 않으니 해결되었습니다.
사무실에서 쓰는 데스크탑에서는 전체 경로를 지정해도 아무런 문제가 없었는데 노트북에 처음 설치할 때 발생했고 원인을 몰라서 몇 시간을 고생했습니다. 어쨌거나 해결되는 순간 묘한 쾌감은 있었네요.

EMACS - MELPA 연동(Package 설치 준비)


.emacs 편집

;; load emacs 24's package system. Add MELPA repository.
(when (>= emacs-major-version 24)
  (require 'package)
  (add-to-list
   'package-archives
   ;; '("melpa" . "http://stable.melpa.org/packages/") ; many packages won't show if using stable
   '("melpa" . "http://melpa.milkbox.net/packages/")
   t))

M-X list-package "Enter"

This list is shown in package-menu-mode. In this mode, here's the most useful keys:

【Enter】 (package-menu-describe-package) → Describe the package under cursor.
【i】 (package-menu-mark-install) → mark for installation.
【u】 (package-menu-mark-unmark) → unmark.
【d】 (package-menu-mark-delete) → mark for deletion (removal of a installed package).
【x】 (package-menu-execute) → for “execute” (start install/uninstall of marked items).
【r】 (package-menu-refresh) → refresh the list from server.
(For complete list of keys, Alt+x describe-mode 【Ctrl+h m】)


;; "expand-region" package 적용
(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region) ; 영역확장 키
(global-set-key (kbd "C--") 'er/contract-region ; 영역축소 키

emacs, lisp의 훌륭한 정보와 자료가 있는 링크들

[ Emac ]

* 이막스(emacs) 홈페이지. 설치 프로그램 및 메뉴얼 다운가능(영어)
  https://www.gnu.org/software/emacs/

* 한글로된 최고의 이막스(emacs) 안내서. 개인적으로 이분게 감사드립니다.
  http://softy.co.kr/220949139216

* 이막스(emacs) 기본 명령어들 소개(한글)
  https://blog.naver.com/gyurse/221231242695

* 이막스(emacs) 경험자의 경험담과 기능 소개(한글)
  http://meetup.toast.com/posts/133

* 이막스(emacs) + 슬림(slime) + 퀵리습(quicklisp) 설치가이드(영언)
  영어를 이해 못 해도 화면 보고 따라해볼 수 있음.
  https://www.youtube.com/watch?v=VnWVu8VVDbI

* 이막스(emacs) + 슬림(slime)을 사용하는 방법 시연(영어)
  영어를 이해 못 해도 화면 보고 따라해볼 수 있음.
  https://www.youtube.com/watch?v=BKFcznZ28BE

* 이막스(emacs) 네이버 카페(한글)
  http://cafe.naver.com/gnuemacs

* 이막스(emacs)에 대한 몇 가지 도움이 되는 안내들(한글)
  http://spaceofsirius.tistory.com/category/emacs/General



[ LISP ]

* CLISP 홈페이지(영어)
 http://clisp.org/
 https://common-lisp.net/

*리습(lisp) 교제. pdf 다운로드 가능(영어)
 오래된 고전 이지만 충분히 도움이 됨.
 https://www.cs.cmu.edu/~dst/LispBook/

* 슬림(slime) 다운로드, 메뉴얼(영어)
  https://common-lisp.net/project/slime/

* 리습(lisp) 네이버 카페(한글)
  http://cafe.naver.com/lisper

* 리습(lisp)에 대한 이해를 돕는 글과 좋은 자료들(한글)
  원하는 글을 찾아 보기가 쉽지는 않으나 투자 가치는 있음.
  http://lisp.tistory.com/entry/Why-Lisp-2

* 리습(lisp) 튜토리얼(영어)
  리습 문법을 조금 이라도 아는 사람은 화면보고 충분히 이해할 수 있음.
  https://www.youtube.com/watch?v=ymSq4wHrqyU


01. 함수와 데이터-2

1.6 특별한 심볼 T와 NIL
    * T => True(참), Yes
    * NIL => False(거짓), emptiness(비어 있음), No
    * yes(T)-or-no(NIL) function => predicate(술어)라고 함

1.7 몇 가지 단순한 술어들(predicates)
    * NUMBERP : 입력이 숫자(number)인가 아닌가를 판단
   

    * SYMBOLP : 입력이 상징(symbol)인가 아닌가를 판단

    * ZEROP : 입력이 0인가 아닌가를 판단

    * ODDP : 입력이 홀수인가 아닌가를 판단
    * EVENP : 입력이 짝수인가 아닌가를 판단

    * < : 첫째 입력이 작으면 T, 반대는 NIL
    * > : 첫째 입력이 크면 T, 반대는 NIL

1.8 EQUAL 술어
    * EQUAL : 두 개의 입력값이 같은가 다른가를 판단

01. 함수와 데이터-1

1.1 소개
    * 데이터(data)
      : 정보(information)를 의미한다.
      : ex) 수(numbers), 단어(words), 목록(lists of things)
    * 함수(function):
      : 함수는 데이터가 지나가는 하나의 상자로 생각할 수있다.
       상자(함수)를 지나는 데이터는 어떤 방식으로 가공(조작)되게 된다.
       상자를 나올 때 데이터는 그 가공의 결과(result)가 되어 나온다.
       (프로그래밍 표현으로 결과result를 반환return한다.)

1.2 수와 관련된 함수들
[ 더하기 함수 ]

[ 절대값 함수 ]

    * +  두 수를 더한다.
    * -  첫 번째 수에서 두 번째 수를 뺀다.
    * *  두 수를 곱한다.
    * /  두 번째 수로 첫 번째 수를 나눈다.
    * ABS  수의 절대값을 구한다.
    * SQRT  수의 제곱근을 구한다.

1.3 수의 3가지 유형
    * 정수(integers)
    * 부동소수점(floating point)
    * 비율(ratio)
[input 정수 => return 부동소수점]

[LISP에서 비율 표시: input 정수 => return 분수]

[LISP에서 비율 표시: input 정수, 부동소수점 => return 부동소수점 ]

1.4 함수에 입력되는 데이터 순서의 중요성

1.5 심볼(SYMBOLS)
    * LISP에서는 심볼도 데이터의 한 종류이다.
    * 심볼은 "문자(letter)", "문자 + 숫자"로 만들 수 있다.
    * 예) X                        ZORCH
          BANANAS            R2D2
          COMPUTER         WINDOW-WASHER
          LORETTA            WARP-ENGINES
          ABS                      GARBANZO-BEANS
          YEAR-TO-DATE    BEEBOP

EMACS - 환경설정(.emacs) 편집




< 편집화면의 Background Color 및 글자색 변경하기 >
M-X customize-face "Enter" default "Enter"
* Foreground (글자색) => White 또는 원하는 색을 선택
* Background (배경색) => Black 또는 원하는 색을 선택

< .emacs 파일 편집 >
;; 한글 입력 / 한-영변환키 "Shift + Space bar"
(setq default-input-method "korean-hangul")


;; utf-8 직원
(prefer-coding-system 'utf-8)


;; 한글 파일명 읽기, 저장하기 문제 해결
(set-file-name-coding-system 'cp949-dos)

;; 처음 실행시 첫 화면(튜토리얼 및 안내) 비활성화
(setq inhibit-startup-message t)

;; 디폴트 작업 디렉토리 설정
(setq default-directory "D:/dir_path/")

;; Cursor 타입설정
(setq-default cursor-type 'bar)     ;; │ 타입 (가장 일반적임)
;; (setq-default cursor-type 'box)   ;; ▌타입
;; (setq-default cursor-type 'hbar)  ;; _ 타입

2017년 7월 3일 월요일

EMACS - 검색 및 바꾸기


C-s : 증분 검색(앞으로)
C-s C-s : 검색 반복(앞으로)
C-r : 증분 검색(뒤로)
C-r C-r : 증분 검색 반복(뒤로)

C-s C-w : 현재 커서뒤에 있는 단어를 검색어로 자동 입력
C-s C-y : 클립보드에 있는 텍스트를 검색어로 자동 입력
C-s M-y : 클립보드에 있는 텍스트를 검색어로 자동 입력
             M-y를 반복해서 누르면 텍스트가 번갈아가며 교체됨

C-s (Enter) : 1회 검색(앞으로)
                 C-s를 또 누르면 검색한 단어로 계속 검색 가능
C-r (Enter) : 1회 검색(뒤로)
                 C-r를 또 누르면 검색한 단어로 계속 검색 가능

M-s : 단어 검색
M-s w (Enter) : 단어 검색(앞으로). 단어 전체 일치만 검색
M-s w C-r (Enter): 단어 검색(뒤로), 단어 전체 일치만 검색

M-x replace-string (Enter) "변경전 단어" (Enter) "변경후 단어"(Enter)

M-% (찾는 문자열) (Enter) (변경할 문자열)
            : Space Bar or y  문자 변경하고 다음 찾기
            : Del or n          문자 변경하지 않도 다음 찾기
            : .                    현재 문자열을 바꾸고 종료
            : ,                    변경 후 이동전에 변경 결과 확인
            : !                    이후 모두 바꿔버림
            : ^                   이전 바꿨던 문자열로 이동
            : Enter or q       종료
            : e                   바꿀 문자열 수정
            :  C-r               재귀적 수정
            : C-w               지금
            : C-M-c            재귀적 수정 종료 후 계속 변경 진행
            : C-]                 재귀적 수정 종료, 문자열 변경 종료

C-s Esc Esc : 이전 명령 불러오기
           : M-n   다음번 명령
           : M-p   이전 명령

M-/ : 약어 찾아 넣기