{"id":5004,"date":"2022-03-19T10:52:52","date_gmt":"2022-03-19T01:52:52","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5004"},"modified":"2022-03-23T18:00:01","modified_gmt":"2022-03-23T09:00:01","slug":"install-emacs-on-windows-10","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5004","title":{"rendered":"Install Emacs on Windows 10"},"content":{"rendered":"<h1>Install Emacs on Windows 10<\/h1>\n<h2>Emacs \uc124\uce58<\/h2>\n<p><a href=\"https:\/\/www.gnu.org\/software\/emacs\/\">https:\/\/www.gnu.org\/software\/emacs\/<\/a> \uc5d0\uc11c \uc774\ub9e5\uc2a4\ub97c \ub2e4\uc6b4\ubc1b\uc544 \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<h2>\ud658\uacbd \ubcc0\uc218 \uc124\uc815<\/h2>\n<p>HOME \ud658\uacbd\ubcc0\uc218\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.skyer9.pe.kr\/wordpress\/wp-content\/uploads\/2022\/03\/2022-03-19-01.png\" alt=\"\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.skyer9.pe.kr\/wordpress\/wp-content\/uploads\/2022\/03\/2022-03-19-02.png\" alt=\"\" \/><\/p>\n<h2>Emacs \uc2e4\ud589<\/h2>\n<p>\uc6b0\uc120 Emacs \ub97c \uc2e4\ud589\uc2dc\ucf1c \ubd05\ub2c8\ub2e4.<br \/>\n(\uc124\uce58\ub41c \ud3f4\ub354 \uc548\uc5d0 bin \ub514\ub809\ud1a0\ub9ac\uac00 \uc788\ub294\ub370 \uadf8 \uc548\uc73c\ub85c \ub4e4\uc5b4\uac00\uba74 emacs.exe \uac00 \uc788\uc2b5\ub2c8\ub2e4.)<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.skyer9.pe.kr\/wordpress\/wp-content\/uploads\/2022\/03\/2022-03-19-03.png\" alt=\"\" \/><\/p>\n<p>\uac00\uc7a5 \uc911\uc694\ud55c Ctrl-C\/Ctrl-V \uac00 \uc624\uc791\ub3d9\ud558\ub294\uac83\uc744 \uad50\uc815\ud558\uae30 \uc704\ud574 \uc544\ub798 \uc124\uc815\uc744 \ud569\ub2c8\ub2e4.<br \/>\n\uba54\ub274 &gt; Options &gt; Use CUA Keys \uccb4\ud06c.<\/p>\n<p>\ud3f0\ud2b8\uac00 \ub9d8\uc5d0 \uc54a\ub4e4\uba74 \uc544\ub798\uc640 \uac19\uc774 \ud569\ub2c8\ub2e4.<br \/>\n\uba54\ub274 &gt; Options &gt; Set Default Font \ub97c \uc120\ud0dd\ud558\uba74 \ud3f0\ud2b8\ub97c \uace0\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud234\ubc14\uac00 \uc54a\uc774\uc058\uba74 \uc544\ub798\uc640 \uac19\uc774 \ud569\ub2c8\ub2e4.<br \/>\n\uba54\ub274 &gt; Options &gt; Show\/Hide &gt; Tool-bar<\/p>\n<p>\uc635\uc158\uc815\ubcf4\ub97c \uc800\uc7a5\ud558\uc9c0 \uc54a\uc73c\uba74 \uc774\ub9e5\uc2a4\ub97c \uc7ac\uc2e4\ud589 \ud588\uc744 \ub54c \ub2e4\uc2dc \ud3f0\ud2b8\uac00 \ub514\ud3f4\ud2b8\ub85c \ubc14\ub01d\ub2c8\ub2e4.<br \/>\n\uadf8\ub798\uc11c \uba54\ub274 &gt; Options &gt; Save Option \ub97c \uc120\ud0dd\ud574\uc11c \uc635\uc158\uc815\ubcf4\ub97c \uc800\uc7a5\ud574 \uc90d\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub9e5\uc2a4\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4.<\/p>\n<h2>Emacs \uc124\uc815 \ubcc0\uacbd\ud558\uae30<\/h2>\n<p>\uc774\ub9e5\uc2a4\ub97c \uc2e4\ud589\ud558\uace0, C-X C-F \ub97c \uc785\ub825 \ud6c4 ~\/.emacs \ud30c\uc77c\uc744 \uc5f4\uc5b4\uc90d\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.skyer9.pe.kr\/wordpress\/wp-content\/uploads\/2022\/03\/2022-03-19-04.png\" alt=\"\" \/><\/p>\n<p>\uc544\ub798 \ub0b4\uc6a9\uc744 \uc785\ub825\ud574 \uc90d\ub2c8\ub2e4.<br \/>\n\uc544\ub798 \ub0b4\uc6a9\uc744 \uc801\uc6a9\ud558\uae30 \uc704\ud574 \ud544\uc694\ud55c \uba85\ub839\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud30c\uc77c\uc5f4\uae30 : C-X C-F (Find)<br \/>\n\ud30c\uc77c\uc800\uc7a5 : C-X C-S (Save)<br \/>\n\uc774\ub9e5\uc2a4\uc885\ub8cc : C-X C-C (Close)<\/p>\n<pre><code class=\"language-cl\">;; -*- coding: utf-8 -*-\n\n;; =============================================================================\n;; \uc2dc\uc791\ud558\uae30 \uc804\uc5d0\n;; =============================================================================\n\n;; - \uba54\ub274 &gt; Options &gt; Use CUA Keys \uccb4\ud06c\n;; - \uba54\ub274 &gt; Options &gt; Show\/Hide &gt; Tool-bar \uccb4\ud06c\ud574\uc81c\n;; - \uba54\ub274 &gt; Options &gt; Set Default Font\n;; - \uba54\ub274 &gt; Options &gt; Save Options\n;; - C-x C-c \ub85c \uc774\ub9e5\uc2a4\ub97c \uc885\ub8cc \ud6c4 \uc7ac\uc2e4\ud589\ud55c\ub2e4.\n\n;; =============================================================================\n;; \ud328\ud0a4\uc9c0 \uc2dc\uc2a4\ud15c(MELPA)\n;; =============================================================================\n\n(require &#039;package)\n\n;; \ud328\ud0a4\uc9c0 \uc0ac\uc774\ud2b8(org, melpa) \ucd94\uac00\n;; (add-to-list &#039;package-archives &#039;(&quot;melpa&quot; . &quot;http:\/\/melpa.milkbox.net\/packages\/&quot;) t)\n(add-to-list &#039;package-archives &#039;(&quot;melpa&quot; . &quot;https:\/\/melpa.org\/packages\/&quot;))\n(add-to-list &#039;package-archives &#039;(&quot;org&quot; . &quot;http:\/\/orgmode.org\/elpa\/&quot;) t)\n\n;; \ud328\ud0a4\uc9c0 \uc2dc\uc2a4\ud15c \ucd08\uae30\ud654\n(package-initialize)\n\n(defalias &#039;lp &#039;list-packages)\n\n;; =============================================================================\n;; use-package\n;;\n;; \uc0d8\ud50c\ucf54\ub4dc\n;; (use-package helm\n;;   :ensure t                                ;; \ud328\ud0a4\uc9c0\uac00 \uc124\uce58 \uc548\ub418\uc5b4 \uc788\uc73c\uba74 \uc124\uce58\n;;   :init                                    ;; \ud328\ud0a4\uc9c0 \ub85c\ub529 \uc804 \uc2e4\ud589\n;;   (add-hook &#039;after-init-hook &#039;helm-mode)\n;;   :config                                  ;; \ud328\ud0a4\uc9c0 \ub85c\ub529 \ud6c4 \uc2e4\ud589\n;;   (helm-autoresize-mode 1))\n;; =============================================================================\n\n(unless (package-installed-p &#039;use-package)\n  (package-refresh-contents)\n  (package-install &#039;use-package))\n\n(require &#039;use-package)\n\n;; =============================================================================\n;; \uae30\ubcf8 \uc124\uc815\n;; =============================================================================\n\n(add-to-list &#039;load-path (expand-file-name &quot;~\/my-package&quot;))\n\n;; \ud29c\ud1a0\ub9ac\uc5bc \uba54\uc2dc\uc9c0 \uc5c6\uc560\uae30\n(setq inhibit-startup-message t)\n\n;; \uc0c1\ud0dc\ud45c\uc2dc\uc904\uc5d0 \uac00\ub85c \uc138\ub85c \uc704\uce58 \ud45c\uc2dc\n(column-number-mode t)\n(line-number-mode t)\n\n;; yes\/no \uc785\ub825 \ub300\uc2e0 y\/n \uc785\ub825\ud558\ub3c4\ub85d \ubcc0\uacbd\n(fset &#039;yes-or-no-p &#039;y-or-n-p)\n\n;; remove all trailing space when you save\n(add-hook &#039;write-file-hooks\n   &#039;delete-trailing-whitespace)\n\n;; \ubbf8\ub2c8\ubc84\ud37c \ud788\uc2a4\ud1a0\ub9ac\ub97c \uc800\uc7a5\ud55c\ub2e4.\n(savehist-mode 1)\n\n;; \ub300\uc751\ud558\ub294 \uad04\ud638 \uc790\ub3d9\uc785\ub825\n(when (&gt;= emacs-major-version 24)\n  (electric-pair-mode 1))\n\n;; \uc708\ub3c4\uc6b0 \uc81c\ubaa9 \uc124\uc815\n(setq frame-title-format &quot;Emacs - %b&quot;)\n(setq icon-title-format &quot;Emacs - %b&quot;)\n\n;; \ucee4\uc11c\uac00 \uae5c\ube61\uc784 \uc911\ub2e8 \uc548\ud558\uae30\n(setq blink-cursor-blinks 0)\n\n;; \uc790\ub3d9 \uc904\ubc14\uafc8 \uc548\ud558\uae30\n(setq-default truncate-lines 1)\n\n;; \ubc31\uc5c5\ud30c\uc77c \uc704\uce58 \uc9c0\uc815\n(setq backup-directory-alist &#039;((&quot;&quot; . &quot;~\/.emacs.d\/emacs-backup&quot;)))\n\n;; \ub3c4\uc6c0\ub9d0 \ud45c\uc2dc\uae30\ub2a5 \uc0ac\uc6a9\ud55c\ud568\n(setq global-eldoc-mode nil)\n\n;; =============================================================================\n;; \uae30\ubcf8\ud0a4 \ubcc0\uacbd\n;;\n;; C-a (\ub77c\uc778 \ub9e8 \ucc98\uc74c\uc73c\ub85c \uc774\ub3d9 =&gt; \uc804\uccb4 \uc120\ud0dd)\n;; C-e (\ub77c\uc778 \ub05d\uc73c\ub85c \uc774\ub3d9 =&gt; \ud604\uc7ac \ub77c\uc778 \uc0ad\uc81c)\n;; C-f (\ucee4\uc11c \uc624\ub978\ucabd\uc73c\ub85c \uc774\ub3d9 =&gt; \uac80\uc0c9)\n;; C-s (\uac80\uc0c9 =&gt; \uc800\uc7a5)\n;; &lt;F1&gt; (\ub3c4\uc6c0\ub9d0 =&gt; \ud604\uc7ac\ucc3d \ud558\ub098\ub9cc \ub0a8\uae30\uae30)\n;; C-l (\ubc84\ud37c \ub0b4 \ucee4\uc11c\uc774\ub3d9 =&gt; \ub77c\uc778 \uc774\ub3d9)\n;; =============================================================================\n\n;; select all\n(define-key global-map (kbd &quot;C-a&quot;) &#039;mark-whole-buffer)\n\n;; DELETE LINE\n(defun delete-whole-line ()\n  &quot;delete whole line&quot;\n  (interactive)\n  (delete-region (line-beginning-position) (line-end-position))\n  (if (&gt;= (point-max) (point))\n      (delete-char 1)))\n(define-key global-map (kbd &quot;C-e&quot;) &#039;delete-whole-line)\n\n;; \uc99d\uac00\uac80\uc0c9 \ub2e8\ucd95\ud0a4 \ubcc0\uacbd(isearch)\n(define-key global-map (kbd &quot;C-f&quot;) &#039;isearch-forward)\n\n;; \uc99d\uac00\uac80\uc0c9 \ub2e8\ucd95\ud0a4 \ubcc0\uacbd(isearch)\n(add-hook &#039;isearch-mode-hook\n   (lambda ()\n     (define-key isearch-mode-map (kbd &quot;C-f&quot;) &#039;isearch-repeat-forward)\n     (define-key isearch-mode-map (kbd &quot;C-v&quot;) &#039;isearch-yank-kill)))\n\n;; \uc800\uc7a5\ud558\uae30 \ub2e8\ucd95\ud0a4 \ubcc0\uacbd(save-buffer)\n(global-set-key (kbd &quot;C-s&quot;) &#039;save-buffer)\n\n;; \ud604\uc7ac \ucc3d\ub9cc \ub0a8\uae30\uace0 \ub2e4\ub978 \ucc3d \ubaa8\ub450 \ub2eb\uae30\n(define-key global-map (kbd &quot;&lt;f1&gt;&quot;) &#039;delete-other-windows)\n\n;; goto-line\n(define-key global-map (kbd &quot;C-l&quot;) &#039;goto-line)\n\n;; =============================================================================\n;; \ub098\ub9cc\uc758 \ud0a4 \uc124\uc815\n;; =============================================================================\n\n;; M-x \ub300\uc6a9\n(global-set-key (kbd &quot;&lt;f8&gt;&quot;) &#039;execute-extended-command)\n\n;; \ud604\uc7ac \ucc3d \ub2eb\uae30\n(define-key global-map (kbd &quot;C-x c&quot;) &#039;kill-this-buffer)\n\n;; \ud604\uc7ac\ud30c\uc77c\uc758 \uc778\ucf54\ub529 \ubcc0\uacbd\n(global-set-key (kbd &quot;C-c u&quot;) (lambda() (interactive) (set-buffer-file-coding-system &#039;utf-8) (message &quot;Encoding changed to UTF-8&quot;)))\n(global-set-key (kbd &quot;C-c k&quot;) (lambda() (interactive) (set-buffer-file-coding-system &#039;cp949) (message &quot;Encoding changed to CP949&quot;)))\n\n;; ============================================================================\n;; SMART HOME KEY\n;; ============================================================================\n(defun smart-beginning-of-line ()\n  &quot;Move point to first non-whitespace character or beginning-of-line.&quot;\n  (interactive &quot;^&quot;) ; Use (interactive &quot;^&quot;) in Emacs 23 to make shift-select work\n  (let ((oldpos (point)))\n    (back-to-indentation)\n    (and (= oldpos (point))\n         (beginning-of-line))))\n\n;; CUA \ubaa8\ub4dc\uc5d0\uc11c Shift Home \uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc791\ub3d9\ud558\uac8c \uc124\uc815\n;;(put &#039;smart-beginning-of-line &#039;CUA &#039;move)\n\n(global-set-key (kbd &quot;&lt;home&gt;&quot;) &#039;smart-beginning-of-line)\n\n;; ============================================================================\n;; \ucd5c\uadfc \uc5f4\uc5c8\ub358 \ud30c\uc77c \uac00\uc838\uc624\uae30\n;; ============================================================================\n\n(recentf-mode 1)\n\n;; \ucd5c\uadfc\uc5f4\uc5c8\ub358 \ud30c\uc77c 1200\uae4c\uc9c0 \uc800\uc7a5\ud558\uae30\n(setq recentf-max-saved-items 1200)\n\n;; \uc81c\uc678\ud560 \ud30c\uc77c\n(add-to-list &#039;recentf-exclude &quot;Temporary Internet Files&quot;)\n(add-to-list &#039;recentf-exclude &quot;\/.emacs.d\/recentf&quot;)\n\n;; \uc790\ub3d9 \uc800\uc7a5\uae30\ub2a5 \ud65c\uc131\ud654\n;; (setq recentf-auto-save-timer\n;;   (run-with-idle-timer 60 t &#039;recentf-save-list))\n\n(global-set-key [f12] &#039;recentf-open-files)\n\n;; ============================================================================\n;; \uc0c1\ud0dc\ud45c\uc2dc\uc904\uc5d0 \ub514\ub809\ud1a0\ub9ac\ub97c \ud3ec\ud568\ud55c \ud30c\uc77c\uba85 \ud45c\uc2dc\n;; ============================================================================\n\n(setq-default mode-line-buffer-identification\n  (list &#039;buffer-file-name\n    (propertized-buffer-identification &quot;%12f&quot;)\n    (propertized-buffer-identification &quot;%12b&quot;)))\n\n(add-hook &#039;dired-mode-hook\n  (lambda ()\n    ;; TODO: handle (DIRECTORY FILE ...) list value for dired-directory\n    (setq mode-line-buffer-identification\n      ;; emulate &quot;%17b&quot; (see dired-mode):\n      &#039;(:eval\n        (propertized-buffer-identification\n          (if (&lt; (length default-directory) 17)\n            (concat default-directory\n              (make-string (- 17 (length default-directory))\n                ?\\s))\n            default-directory))))))\n\n;; ============================================================================\n;; \ub2e8\ucd95\uba85\ub839\n;; ============================================================================\n\n(defalias &#039;qrr &#039;query-replace-regexp)\n(defalias &#039;qr &#039;query-replace)\n\n(defalias &#039;sh &#039;shell)\n\n(defalias &#039;eb &#039;eval-buffer)\n(defalias &#039;er &#039;eval-region)\n(defalias &#039;ed &#039;eval-defun)\n\n;; ============================================================================\n;; Only on Windows-NT Emacs\n;; ============================================================================\n\n;; \uc774\ub9e5\uc2a4 \uc11c\ubc84\ubaa8\ub4dc \ud65c\uc131\ud654\n(if (eq system-type &#039;windows-nt)\n  (server-start)\n  (message &quot;* Running with server&quot;))\n\n;; ============================================================================\n;; \ucee4\uc11c\uc704\uce58 \uc800\uc7a5\ud558\uae30\n;; ============================================================================\n\n;; \ud30c\uc77c \ud3b8\uc9d1 \uc704\uce58 \uae30\uc5b5\n(if (&lt; emacs-major-version 25)\n    (progn\n      (require &#039;saveplace)\n      (setq-default save-place t))\n  (save-place-mode 1))\n\n;; ============================================================================\n;; \uc120\ud0dd \uc601\uc5ed \uac80\uc0c9\n;; ============================================================================\n\n(defvar search-selection-last-searched-string nil)\n\n(defun search-selection-or-last-searched (direction)\n  &quot;search for selected or last searched text&quot;\n  (let ((search-str search-selection-last-searched-string))\n (when (region-active-p)\n   (setq search-str (buffer-substring (region-beginning) (region-end)))\n   (setq search-selection-last-searched-string search-str))\n (if search-str\n  (cond ((eq direction &#039;forward)\n      (when (search-forward search-str nil t 1)\n     (deactivate-mark)\n     (setq found t)\n     (set-mark (- (point) (length search-str)))))\n     ((eq direction &#039;backward)\n      (when (search-backward search-str nil t 1)\n     (deactivate-mark)\n     (setq found t)\n     (set-mark (+ (point) (length search-str)))))\n     (t\n      (beep)\n      (message &quot;Unknown error.&quot;)))\n   (beep)\n      (message &quot;No keyword for search.&quot;))))\n\n(define-key global-map (kbd &quot;&lt;f3&gt;&quot;) (lambda() (interactive) (search-selection-or-last-searched &#039;forward)))\n(define-key global-map (kbd &quot;C-&lt;f3&gt;&quot;) (lambda() (interactive) (search-selection-or-last-searched &#039;backward)))\n\n;; ============================================================================\n;; \ubc84\ud37c \uc120\ud0dd \ud234\n;; ============================================================================\n\n(require &#039;bs)\n\n(global-set-key [C-tab] &#039;bs-show)\n\n;; (setq bs-default-configuration &quot;all&quot;)\n(setq bs-default-configuration &quot;files-and-scratch&quot;)\n\n(defun my-bs--get-modification-time-string (_start-buffer _all-buffers)\n  &quot;Return last modified time of file&quot;\n  (let ((file (buffer-file-name)))\n    (if (and file (listp (visited-file-modtime)))\n (if (eq (car (visited-file-modtime)) -1)\n     (string)\n   (format-time-string &quot;%Y-%m-%d %H:%M:%S&quot; (visited-file-modtime)))\n      (string))))\n\n(setq bs-attributes-list\n      &#039;((&quot;&quot;       1   1 left  bs--get-marked-string)\n (&quot;M&quot;      1   1 left  bs--get-modified-string)\n (&quot;R&quot;      2   2 left  bs--get-readonly-string)\n (&quot;Buffer&quot; 50 50 left  bs--get-name)\n (&quot;&quot;       2   2 left  &quot;  &quot;)\n (&quot;Size&quot;   8   8 right bs--get-size-string)\n (&quot;&quot;       2   2 left  &quot;  &quot;)\n (&quot;Last Modified&quot;   19   19 left my-bs--get-modification-time-string)\n (&quot;&quot;       2   2 left  &quot;  &quot;)\n (&quot;Mode&quot;   20 20 left bs--get-mode-name)\n (&quot;&quot;       2   2 left  &quot;  &quot;)\n (&quot;File&quot;   20 20 left  bs--get-file-name)))\n\n;; =============================================================================\n;; paste-and-indent\n;; =============================================================================\n\n(defun paste-and-indent ()\n  (interactive)\n  (if (and cua-delete-selection (region-active-p))\n      (cua-delete-region))\n  (yank)\n  (indent-region (save-excursion (exchange-point-and-mark) (point)) (point)))\n\n(global-set-key &quot;\\C-y&quot; &#039;paste-and-indent)\n\n;; =============================================================================\n;; MS Windows \uc785\ub825\uae30 \uc0ac\uc6a9\uc54a\ud568\n;; \ud544\uc694 : AutoHotkey, https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5001\n;; =============================================================================\n\n(set-language-environment &quot;Korean&quot;)\n(setq default-input-method &quot;korean-hangul&quot;)\n(global-set-key (kbd &quot;&lt;S-SPC&gt;&quot;) &#039;toggle-input-method)\n;; (global-set-key (kbd &quot;&lt;Hangul&gt;&quot;) &#039;toggle-input-method)\n;; (global-set-key [(kana)] &#039;toggle-input-method)\n(global-set-key [(kanji)] &#039;hangul-to-hanja-conversion)\n\n;; =============================================================================\n;; \ubd81\ub9c8\ud06c\n;; =============================================================================\n\n;; \ubd81\ub9c8\ud06c \uc124\uc815\uc2dc \uc790\ub3d9\uc800\uc815\n(setq bookmark-save-flag 1)\n\n(global-set-key [f9] &#039;bookmark-bmenu-list)\n(global-set-key [C-f9] &#039;bookmark-set)\n\n;; =============================================================================\n;; auto-complete\n;; (\ud544\uc694 : melpa, auto-complete)\n;; =============================================================================\n\n(use-package auto-complete\n  :ensure t)\n\n(require &#039;auto-complete-config)\n\n;; \uc790\ub3d9\uc644\uc131 \ud65c\uc131\ud654\n(global-auto-complete-mode t)\n\n;; 2\uae00\uc790 \uc785\ub825\uc2dc \uc790\ub3d9\uc644\uc131 \uc2dc\uc791\n(setq ac-auto-start 2)\n\n;; 0.1 \ucd08 \ud6c4 \ubaa9\ub85d \ud45c\uc2dc\ud568\n(setq ac-auto-show-menu 0.1)\n\n(ac-config-default)\n\n;; TAB \ud0a4 \ub204\ub974\uba74 \uc790\ub3d9\uc644\uc131 \uc2dc\uc791\n(ac-set-trigger-key &quot;TAB&quot;)\n\n;; \ud65c\uc131\ud654\ud560 \ubaa8\ub4dc \ucd94\uac00(M-x major-mode RET)\n(add-to-list &#039;ac-modes &#039;sql-mode)\n(add-to-list &#039;ac-modes &#039;text-mode)\n\n;; =============================================================================\n;; yasnippet\n;; (\ud544\uc694 : melpa, yasnippet)\n;; =============================================================================\n\n(use-package yasnippet\n  :ensure t)\n\n;; yasnippet \ud65c\uc131\ud654\n(yas-global-mode 1)\n\n;; Remove Yasnippet&#039;s default tab key binding\n(define-key yas-minor-mode-map (kbd &quot;&lt;tab&gt;&quot;) nil)\n\n(define-key yas-minor-mode-map (kbd &quot;C-c y&quot;) &#039;yas-expand)\n\n;; prog mode\n(add-hook\n &#039;prog-mode-hook\n (lambda ()\n   (setq ac-sources\n         (append &#039;(ac-source-yasnippet) ac-sources))))\n\n;; =============================================================================\n;; cursor-chg\n;; (\ud544\uc694 : https:\/\/www.emacswiki.org\/emacs\/cursor-chg.el)\n;; =============================================================================\n\n(require &#039;cursor-chg)\n\n(change-cursor-mode 1)\n\n;; \uae30\ubcf8 \ucee4\uc11c \uc0c9\uc0c1\n;; (setq curchg-default-cursor-color &quot;Black&quot;)\n\n;; \ud55c\uae00 \uc785\ub825\uc2dc \ucee4\uc11c \uc0c9\uc0c1\n;;(setq curchg-input-method-cursor-color &quot;Red&quot;)\n\n;; \uae30\ubcf8 \ucee4\uc11c \ubaa8\uc591\n(setq curchg-default-cursor-type &#039;bar)\n\n;; \ub36e\uc5b4\uc4f0\uae30 \ub610\ub294 read-only \ubc84\ud37c\uc77c \ub54c \ucee4\uc11c \ubaa8\uc591\n(setq curchg-overwrite\/read-only-cursor-type &#039;box)\n\n;; =============================================================================\n;; Visual bookmark\n;; (\ud544\uc694 : MELPA, bm)\n;; =============================================================================\n\n(use-package bm\n  :ensure t)\n\n;; M$ Visual Studio key setup.\n(global-set-key (kbd &quot;&lt;C-f2&gt;&quot;) &#039;bm-toggle)\n(global-set-key (kbd &quot;&lt;f2&gt;&quot;)   &#039;bm-next)\n(global-set-key (kbd &quot;&lt;S-f2&gt;&quot;) &#039;bm-previous)\n\n;; =============================================================================\n;; MinGW \uc124\uc815\n;; (\ud544\uc694 : http:\/\/www.mingw.org\/)\n;; \ucd94\uac00\ub85c ~\/.bashrc \uc5d0 \ud328\uc2a4\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ucd94\uac00\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4.\n;; export PATH=\/bin:\/usr\/bin:$PATH\n;; =============================================================================\n\n(setq shell-file-name &quot;bash.exe&quot;)\n(setq explicit-shell-file-name &quot;C:\/MinGW\/msys\/1.0\/bin\/bash.exe&quot;)\n(setq exec-path (cons &quot;C:\/MinGW\/msys\/1.0\/bin\/&quot; exec-path))\n\n;; =============================================================================\n;; browse-kill-ring\n;; (\ud544\uc694 : MELPA, browse-kill-ring)\n;; =============================================================================\n\n(use-package browse-kill-ring\n  :ensure t)\n\n;; \uc5ec\ub7ec \ub77c\uc778\uc758 \ubcf5\uc0ac\ubcf8\uc744 \ud55c\uc904\ub85c \ud45c\uc2dc(separator \ud45c\uc2dc \uc54a\ud568)\n(setq browse-kill-ring-display-style &#039;one-line)\n\n;; \ubcf5\uc0ac\ubcf8 \ucd94\uac00\uc2dc \uc911\ubcf5\ub418\ub294 \ubcf5\uc0ac\ubcf8 \uc0ad\uc81c(browse-kill-ring \uc5d0\uc11c\ub9cc \uc791\ub3d9\ud55c\ub2e4.)\n(setq browse-kill-ring-no-duplicates t)\n\n;; \uc911\ubcf5\ub418\ub294 \ubcf5\uc0ac\ubcf8 \ud45c\uc2dc\uc54a\ud568\n(setq browse-kill-ring-display-duplicates nil)\n\n;; \uac00\uc7a5 \ucd5c\uadfc \uc911\ubcf5 \ubcf5\uc0ac\ubcf8 \ud45c\uc2dc\n(setq browse-kill-ring-display-leftmost-duplicates t)\n\n;; \ucd5c\ub300 60\uae00\uc790\ub9cc \ud45c\uc2dc\n(setq browse-kill-ring-maximum-display-length 120)\n\n;; \ubbf8\ub9ac\ubcf4\uae30 \ud45c\uc2dc\n(setq browse-kill-ring-show-preview t)\n\n;; \uc885\ub8cc\uc2dc browse-kill-ring \ucc3d \ub2eb\uae30\n(setq browse-kill-ring-quit-action &#039;save-and-restore)\n\n;; \ubcf5\uc0ac \ubaa9\ub85d \uc22b\uc790 \ub298\ub9ac\uae30(\ub514\ud3f4\ud2b8 60\uac1c)\n(setq kill-ring-max 200)\n\n;; \uc18d\uc131\uc740 \uc81c\uc678\ud558\uace0 \ubcf5\uc0ac\ud55c\ub2e4.(\uc0c9\uc0c1 \ub4f1)\n(setq browse-kill-ring-depropertize t)\n\n(global-set-key [f7] &#039;browse-kill-ring)\n\n;; =============================================================================\n;; prog mode \uc124\uc815\ud558\uae30(emacs 24+ only)\n;; =============================================================================\n\n(add-hook &#039;prog-mode-hook\n  (lambda ()\n    ;; \ub4e4\uc5ec\uc4f0\uae30 \ud560 \ub54c \uc2e4\uc81c \ud0ed\ubb38\uc790 \uc785\ub825\n    (setq indent-tabs-mode t)\n    ;; \ud0ed \uc0ac\uc774\uc988 4\n    (setq tab-width 4)\n    ;; \ub300\uc751\ud558\ub294 \uad04\ud638 \ud45c\uc2dc\n    (show-paren-mode t)\n    ;; \uc5d4\ud130 \uc785\ub825\uc2dc \ub4e4\uc5ec\uc4f0\uae30\n    (local-set-key (kbd &quot;RET&quot;) &#039;newline-and-indent)\n    ))\n\n;; =============================================================================\n;; elisp\n;; =============================================================================\n\n(add-hook &#039;emacs-lisp-mode-hook\n          (lambda ()\n            (setq indent-tabs-mode nil)\n            (setq tab-width 2)))\n\n;; =============================================================================\n;; Web Mode\n;; (\ud544\uc694 : MELPA, web-mode)\n;; =============================================================================\n\n(use-package web-mode\n  :ensure t)\n\n(add-to-list &#039;auto-mode-alist &#039;(&quot;\\\\.jsp\\\\&#039;&quot;   . web-mode))\n(add-to-list &#039;auto-mode-alist &#039;(&quot;\\\\.asp\\\\&#039;&quot;   . web-mode))\n(add-to-list &#039;auto-mode-alist &#039;(&quot;\\\\.php\\\\&#039;&quot;   . web-mode))\n(add-to-list &#039;auto-mode-alist &#039;(&quot;\\\\.html?\\\\&#039;&quot; . web-mode))\n(add-to-list &#039;auto-mode-alist &#039;(&quot;\\\\.erb\\\\&#039;&quot;   . web-mode))\n\n(setq web-mode-engines-alist\n      &#039;((&quot;asp&quot; . &quot;\\\\.asp\\\\&#039;&quot;)))\n\n(setq web-mode-enable-auto-pairing nil)\n(setq web-mode-script-padding 0)\n(setq web-mode-style-padding 0)\n\n;; (defun my-web-mode-hook ()\n;;   (setq web-mode-enable-auto-pairing nil)\n;;   (electric-indent-local-mode -1))\n\n;; (add-hook &#039;web-mode-hook  &#039;my-web-mode-hook)\n\n;; =============================================================================\n;; \ucee4\uc11c \uc704\uce58 \ub300\uc18c\ubb38\uc790 \ubcc0\ud658\n;; =============================================================================\n\n(defun my-upcase-char-or-region ()\n  &quot;change char or selected region to upper case.&quot;\n  (interactive)\n  (if (region-active-p)\n      (progn\n        (upcase-region (region-beginning) (region-end))\n        (setq deactivate-mark nil))\n    (upcase-region (point) (+ (point) 1))))\n\n(defun my-downcase-char-or-region ()\n  &quot;change char or selected region to lower case.&quot;\n  (interactive)\n  (if (region-active-p)\n      (progn\n        (downcase-region (region-beginning) (region-end))\n        (setq deactivate-mark nil))\n    (downcase-region (point) (+ (point) 1))))\n\n(global-set-key (kbd &quot;&lt;f5&gt;&quot;) &#039;my-upcase-char-or-region)\n(global-set-key (kbd &quot;C-&lt;f5&gt;&quot;) &#039;my-downcase-char-or-region)\n\n;; =============================================================================\n;; zenburn-theme\n;; (\ud544\uc694 : MELPA, zenburn-theme)\n;; =============================================================================\n\n(use-package zenburn-theme\n  :ensure t)\n\n(load-theme &#039;zenburn t)\n\n;; (set-face-background hl-line-face &quot;#222222&quot;)\n;; (set-face-attribute &#039;region nil :background &quot;#4169e1&quot;)\n\n(set-face-attribute &#039;region nil :background &quot;#4169E1&quot;)\n(set-face-attribute &#039;isearch nil :background &quot;#4169E1&quot;)\n;; (set-face-background &#039;hl-line &quot;MidnightBlue&quot;)\n\n;; ;;(setq curchg-input-method-cursor-color &quot;Red&quot;)\n\n;; ;; (setq curchg-default-cursor-color &quot;Red&quot;)\n\n;; ;; ;;(set-face-attribute &#039;region nil :background &quot;#666&quot;)\n;; ;; ;;(set-face-attribute &#039;region nil :background &quot;#4169e1&quot;)\n;; (set-face-attribute &#039;region nil :background &quot;#4169e1&quot;)\n;; (set-background-color &quot;#000000&quot;)\n;; (set-face-background hl-line-face &quot;#222222&quot;)\n\n;; ============================================================================\n;; \uc708\ub3c4\uc6b0 \uc704\uce58 &amp; \uc0ac\uc774\uc988 \uc124\uc815(GUI \ubc84\uc804)\n;; ============================================================================\n\n;; ;; \uc2dc\uc791\uc2dc \ud654\uba74\ud06c\uae30 \ucd5c\ub300\ub85c\n;; (add-to-list &#039;default-frame-alist &#039;(fullscreen . maximized))\n\n;; \uc774\ub9e5\uc2a4 \ud504\ub798\uc784 \ucd5c\ub300\ud654\n(when (&gt;= emacs-major-version 24)\n  (toggle-frame-maximized))\n\n;; ============================================================================\n;; \ud3f0\ud2b8\uc5d0\uc11c bold \ub97c \ubaa8\ub450 \uc5c6\uc564\ub2e4.\n;; ============================================================================\n\n(mapc\n (lambda (face)\n        (when (eq (face-attribute face :weight) &#039;bold)\n          (set-face-attribute face nil :weight &#039;normal)))\n (face-list))\n\n(custom-set-variables\n ;; custom-set-variables was added by Custom.\n ;; If you edit it by hand, you could mess it up, so be careful.\n ;; Your init file should contain only one such instance.\n ;; If there is more than one, they won&#039;t work right.\n &#039;(cua-mode t nil (cua-base))\n &#039;(package-selected-packages &#039;(use-package))\n &#039;(tool-bar-mode nil))\n(custom-set-faces\n ;; custom-set-faces was added by Custom.\n ;; If you edit it by hand, you could mess it up, so be careful.\n ;; Your init file should contain only one such instance.\n ;; If there is more than one, they won&#039;t work right.\n &#039;(default ((t (:family #(&quot;\uad74\ub9bc\uccb4&quot; 0 3 (charset cp949)) :foundry &quot;outline&quot; :slant normal :weight normal :height 90 :width normal)))))\n<\/code><\/pre>\n<h2>Emacs \uc544\uc774\ucf58 \uc0dd\uc131\ud558\uae30<\/h2>\n<p>\uc774\ub9e5\uc2a4\ub97c \uc2e4\ud589\ud558\uba74 \ub3c4\uc2a4\ucc3d\ub3c4 \ub3d9\uc2dc\uc5d0 \ub728\uae30\uc5d0, \ub3c4\uc2a4\ucc3d \uc5c6\uc774 \uc774\ub9e5\uc2a4\ub97c \uc2e4\ud589\ud574 \ubd05\ub2c8\ub2e4.<\/p>\n<p>bin \ud3f4\ub354\uc5d0 launch-emacs-client.vbs \ub77c\ub294 \uc774\ub984\uc758 \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\uace0,<br \/>\n\uc544\ub798 \ub0b4\uc6a9\uc744 \uc785\ub825\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-vbs\">Set objShell = WScript.CreateObject(&quot;WScript.Shell&quot;)\nSet fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)\n\nIf WScript.Arguments.Count = 1 Then\n\n  strComputer = &quot;.&quot;\n\n  Set objWMIService = GetObject(&quot;winmgmts:\\\\&quot; &amp; strComputer &amp; &quot;\\root\\cimv2&quot;)\n\n  Set colItems = objWMIService.ExecQuery(&quot;Select * From Win32_Process&quot;)\n\n  Dim isRunning\n  isRunning = False\n\n  For Each objItem in colItems\n    If InStr(objItem.CommandLine, &quot;emacs.exe&quot;) Then\n      isRunning = True\n    End If\n  Next\n\n  If isRunning Then\n    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) &amp; &quot;\/emacsclientw.exe -n &quot;&quot;&quot; &amp; WScript.Arguments(0) &amp; &quot;&quot;&quot;&quot;)\n  Else\n    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) &amp; &quot;\/runemacs.exe &quot;&quot;&quot; &amp; WScript.Arguments(0) &amp; &quot;&quot;&quot;&quot;)\n  End If\n\nElse\n  objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) &amp; &quot;\/runemacs.exe&quot;)\nEnd If<\/code><\/pre>\n<p>launch-emacs-client.vbs \ub97c \uc2e4\ud589\ud558\uba74 \ub3c4\uc2a4\ucc3d\uc5c6\uc774 \uc774\ub9e5\uc2a4\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n<h2>\ud55c\uc601\uc804\ud658\ud0a4 \uc624\ub958 \uc218\uc815\ud558\uae30<\/h2>\n<p>\ud55c\uc601\uc804\ud658\uc740 Shift-Space \ub85c \uc804\ud658\ud560 \uc218 \uc788\uc9c0\ub9cc,<br \/>\n\ud55c\uc601\uc804\ud658\ud0a4\ub294 \uc774\uc0c1\ud558\uac8c \uc624\uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5001\">https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5001<\/a> \ub97c \ucc38\uc870\ud574\uc11c \uc624\ub958\ub97c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Install Emacs on Windows 10 Emacs \uc124\uce58 https:\/\/www.gnu.org\/software\/emacs\/ \uc5d0\uc11c \uc774\ub9e5\uc2a4\ub97c \ub2e4\uc6b4\ubc1b\uc544 \uc124\uce58\ud569\ub2c8\ub2e4. \ud658\uacbd \ubcc0\uc218 \uc124\uc815 HOME \ud658\uacbd\ubcc0\uc218\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. Emacs \uc2e4\ud589 \uc6b0\uc120 Emacs \ub97c \uc2e4\ud589\uc2dc\ucf1c \ubd05\ub2c8\ub2e4. (\uc124\uce58\ub41c \ud3f4\ub354 \uc548\uc5d0 bin \ub514\ub809\ud1a0\ub9ac\uac00 \uc788\ub294\ub370 \uadf8 \uc548\uc73c\ub85c \ub4e4\uc5b4\uac00\uba74 emacs.exe \uac00 \uc788\uc2b5\ub2c8\ub2e4.) \uac00\uc7a5 \uc911\uc694\ud55c Ctrl-C\/Ctrl-V \uac00 \uc624\uc791\ub3d9\ud558\ub294\uac83\uc744 \uad50\uc815\ud558\uae30 \uc704\ud574 \uc544\ub798 \uc124\uc815\uc744 \ud569\ub2c8\ub2e4. \uba54\ub274 &gt; Options &gt; Use CUA Keys \uccb4\ud06c.\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5004\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5004","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5004"}],"version-history":[{"count":11,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5004\/revisions"}],"predecessor-version":[{"id":5032,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5004\/revisions\/5032"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}