크림슨에디터 자유 게시판

- 크림슨에디터 한글 게시판입니다. 에디터와 관련한 버그, 제안 또는 의견을 적어주세요.

2001/10/04 (23:46) Article Number : 59
Delete Modify Ingyu Kang (crimsonware@yahoo.com) Access : 9511 , Lines : 34
Re: 텍스트 에디터 만들기
안녕하세요.

저는 C/C++로는 에디터를 만들었습니다만, 어셈블리언어를 사용해서 만들기는 좀 어려울 것 같네요... 우선은 간략하게 나마 기본적인 것들에 대해 설명을 드리겠습니다만, 이걸로 만족할 만한 설명이 될지는 모르겠네요.

우선은 텍스트의 자료를 담을 수 있는 버퍼를 구성해야 합니다.
저는 double linked list라는 자료구조를 사용했는데요, 클래스로 만들면 인터페이스가 간단하지만, 어셈블리언어는 어떨지 모르겠네요... 간단하게 만들자면 static buffer로 선언을 하면 될 것 같습니다. 하지만 이렇게 하면 텍스트의 용량에 제한이 있기 때문에 범용 에디터로는 사용하지 못하겠지요..

버퍼가 준비가 되면 파일을 열었을때 버퍼로 우선 카피를 해서 메모리 상에서 편집을 할 수 있게 해야 합니다. 참고로 울트라 에디터 같은 경우는 메모리로 텍스트를 모두 올리지 않고 디스크상에서 직접 편집을 한다고 하는 군요. 서로 장단점이 있겠지만, 저는 우선 메모리로 모두 읽어서 올리게 만들었습니다.

다음으로 해야 할 일은 읽혀진 버퍼를 화면에 표시를 해주어서 사용자에게 현재 편집중인 라인과 컬럼의 위치를 알려주는 일입니다. 사실은 이부분이 상당히 까다롭습니다. 옛날의 edlin같은 에디터의 경우라면 현재 편집중인 라인 한줄만 표시를 하기때문에 다소 쉽습니다만, 최근에는 그런 에디터는 사용하지 않죠. 화면상에 텍스트의 내용을 표시하는 부분중 가장 까다로운 부분은 바로 TAB문자의 처리랍니다. 프로그래머의 다소 머리가 아파지는 부분이죠.

여기서 편집기가 되기 위해서는 caret의 위치를 자유롭게 이동할 수 있게 해주는 부분인데요. 우선은 상, 하, 좌, 우로 이동할 수 있게만 해주어도 간단한 편집은 할 수 있죠.

여기까지 되었다면, 일단 text viewer까지는 완성이 되었습니다.

다음은 실제 편집기능입니다. 알파벳 문자의 삽입과 delete, back space, 그리고 enter를 눌렀을때에 메모리상의 버퍼에 글자의 삽입과 삭제가 일어날 수 있게 프로그램을 해주면 됩니다.

마지막으로 저장 기능인데요, 이건 메모리 버퍼에 있는 내용을 다시 디스크에 저장해주면 됩니다.

간략하게 설명을 드리기는 했지만 아무래도 이것만 봐서는 이해하기가 힘들겠죠? 제가 처음에 에디터를 만들때에는 Turbo Pascal을 사용했는데요, 이때에는 고맙게도 교재에 간단한 에디터 소스가 들어 있어서 이걸 보면서 시작 했었죠. 지금도 잘 찾아 보시면 C 나 다른 언어로 되어있는 샘플을 찾을 수 있으리라 생각합니다.


서녕 wrote:
>안녕하세여?
>우선...여기의 크림슨 에디터를 다운로드 받아 조금 사용해보니 정말 괜찮다는 생각이 들었습니다.
>
>그런데 부탁드릴게 있어서 이렇게 글을 씁니다.
>학교에서 어셈블리 언어로 텍스트 에디터를 만들어오라는 숙제를 내주었는데여, 텍스트 에디터를 사용만 해봤지 어떻게 만드는지 알 수가 없어서여....
>
>음...괜찮으시다면, 텍스트 에디터를 만들기 위한 기본 지식이나, 방법들에 대해 알려주셨으면 합니다....
>
>정말 그러면 감사하겠습니다~^^
>안녕히 계세여~~-_-;

Backward Forward Post Reply List