관심있는 것들 정리
chatGTP를 이용하여 c/c++ 개발환경 configuration 생성 본문
테스트 환경: MacOS Ventura
Emacs version: 28.2
처음에는 company와 company-lsp 패키지를 이용하는 방식으로 configuration을 제공받았으나, 계속 loading 시 패키지를 찾지 못하는 문제가 발생하여 다른 방식을 제안해 달라고했고, 제안 받은 내용은 다음과 같다.
;; Package 관리자 설정
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; use-package 패키지 설치
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(require 'use-package)
;; C/C++ 개발 환경 설정
(use-package cc-mode
:ensure t
:config
;; 자동 들여쓰기 설정
(setq c-default-style "linux"
c-basic-offset 4
indent-tabs-mode nil) ; tab 대신 space 사용
(add-hook 'c-mode-hook 'electric-pair-mode)
(add-hook 'c++-mode-hook 'electric-pair-mode))
;; company-mode 설정 (자동 완성)
(use-package company
:ensure t
:config
(add-hook 'after-init-hook 'global-company-mode))
;; lsp-mode 설정 (Language Server Protocol)
(use-package lsp-mode
:ensure t
:commands lsp
:hook
(c-mode . lsp)
(c++-mode . lsp)
:config
(setq lsp-prefer-flymake nil))
;; lsp-ui 설정 (LSP와 UI 통합)
(use-package lsp-ui
:ensure t
:commands lsp-ui-mode
:config
(setq lsp-ui-sideline-enable nil) ; 사이드라인 비활성화
(add-hook 'lsp-mode-hook 'lsp-ui-mode))
;; 테마 설정 (원하는 테마로 변경 가능)
(use-package doom-themes
:ensure t
:config
(load-theme 'doom-one t))
;; 사용자 설정 파일
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file)
문제없이 loading 잘 되고, 자동 완성, class 내부 member function, member variable에 대한 자동 완성도 깔끔하게 잘 된다.
욕심이 자꾸 생겨, switch() 구문에 대해 case 들여쓰기가 되도록 추가 후 tab을 이용해서도 자동완성이 되도록 수정
;; Package 관리자 설정
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; use-package 패키지 설치
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(require 'use-package)
;; C/C++ 개발 환경 설정
(use-package cc-mode
:ensure t
:config
;; 자동 들여쓰기 설정
(setq c-default-style "linux"
c-basic-offset 4
indent-tabs-mode nil) ; tab 대신 space 사용
(add-hook 'c-mode-hook 'electric-pair-mode)
(add-hook 'c++-mode-hook 'electric-pair-mode)
;; switch 문의 case 구문 들여쓰기 설정
(setq c-offsets-alist
'((case-label . +)))) ; case 구문 들여쓰기 설정
;; company-mode 설정 (자동 완성)
(use-package company
:ensure t
:config
; (add-hook 'after-init-hook 'global-company-mode)
(setq company-idle-delay 0.2
company-minimum-prefix-length 1
company-selection-wrap-around t
company-require-match nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil
company-tooltip-margin 0)
(define-key company-active-map (kbd "TAB") 'company-complete-selection)
(define-key company-active-map (kbd "<tab>") 'company-complete-selection)
(define-key company-active-map (kbd "RET") 'company-complete-selection)
(define-key company-active-map (kbd "<return>") 'company-complete-selection)
(define-key company-active-map (kbd "SPC") nil)
(define-key company-active-map (kbd "M-SPC") nil))
;; company-quickhelp 설정 (자동완성 도움말 팝업)
(use-package company-quickhelp
:ensure t
:after company
:config
;; 팝업 창 지연 시간 설정
(setq company-quickhelp-delay 0.5)
(company-quickhelp-mode 1))
;; lsp-mode 설정 (Language Server Protocol)
(use-package lsp-mode
:ensure t
:commands lsp
:hook
(c-mode . lsp)
(c++-mode . lsp)
:config
(setq lsp-prefer-flymake nil))
;; lsp-ui 설정 (LSP와 UI 통합)
(use-package lsp-ui
:ensure t
:commands lsp-ui-mode
:config
(setq lsp-ui-sideline-enable nil) ; 사이드라인 비활성화
(add-hook 'lsp-mode-hook 'lsp-ui-mode))
;; 테마 설정 (원하는 테마로 변경 가능)
(use-package doom-themes
:ensure t
:config
(load-theme 'doom-one t))
;; 사용자 설정 파일
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file)
반응형
'utility 사용법 > emacs' 카테고리의 다른 글
chatGTP에게 요청해본 org 모드 사용가능한 configuration (1) | 2023.05.20 |
---|---|
emacs compile시 필요한 library (Ubuntu Linux) (0) | 2021.06.02 |
spacemacs에 LSP 설정관련 사이트 (0) | 2021.05.02 |
M1 Macbook에서 Emacs에 ruby를 사용하기 위한 간단 설정 (0) | 2021.04.24 |
Doom Emacs (0) | 2020.07.12 |