Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치 :: 2007/07/11 17:11



Notepad++ 4.1.2 버전의 경우 형식 메뉴에서 인코딩 방식을 유니코드로 변경한 다음 ANSI로 돌아오면 코드 페이지가 엉뚱하게 설정됩니다. 그래서 한글 조합이 이상하게 되는 현상이 발생하죠. 이는 일본어, 중국어등의 특수한 코드 페이지를 사용하는 곳에서는 공통으로 발생하는 현상입니다. 아래 실행 파일로 덮어 씌우면 제대로 된 코드 페이지로 설정됩니다.



제가 지금껏 제공했던 Scintilla용 IME 패치에서 문제점으로 지적된 것들을 고친 버전입니다. 이 버전은 Scintilla를 DLL 형태로 사용하는 대다수 프로젝트에 모두 사용할 수 있습니다. Notepad++, TSVN 아무 때나 DLL만 덮어 씌우면 됩니다. 패치에 사용된 소스는 현재 Scintilla 홈페이지에서 배포하고 있는 1.74 버전입니다. 수정 내용은 아래와 같습니다.
  1. 유니코드, ANSI 모드에서 모두 정상적으로 캐럿 출력
  2. Undo 사용 시에 한글이 한자씩 지워지도록 수정
  3. 영문 삭제 Undo가 한번에 발생하는 것을 한글자씩 되도록 수정
  4. 2000에서 한글 IME 창이 아래 쪽에 출력되는 문제 수정
  5. 코드 페이지 변경 시에 Undo 히스토리 삭제


삽질 에피소드
Scintilla의 Undo는 다른 것들과는 조금 다릅니다. 대표적인 예가 치환의 경우입니다. 블록을 잡고 치환할 경우 다른 에디터들은 치환을 하나의 Undo 과정으로 처리합니다. 하지만 Scintilla는 삭제, 추가라는 두 단계의 Undo 과정을 거치죠.

어제 테스트 하던 중 발견한 이상한 현상은 이런 것이었습니다. "abcd^"상태에서 d를 지웁니다. "abc^"가 되겠죠. 여기서 Undo를 수행하면 "abcd^"가 되는게 정상입니다. 그런데 "abc^d"가 되는 겁니다. ^는 카렛의 위치를 나타냅니다. 그래서 저는 Undo 시에 카렛 위치가 계산이 잘못되어서 그랬구나 하고 관련 부분을 고쳤습니다. 에러가 나더군요. 계산이 중복 적용되면서 나는 에러였습니다. 이상한 일이었습니다. 소스 상에는 모든 것이 완벽한데 카렛은 계속 앞에 있는 것이었죠.

결국 알고 봤더니 원인은 제가 테스트 하던 Notepad++이란 프로그램에 있었습니다. 그쪽에서 자꾸 앞으로 가도록 메시지를 날리고 있었던 것이었죠. 제 PC에 설치된 버전이 4.0.2였는데, 4.1.2를 설치하니 그 문제가 해결되더군요. 이 것 때문에 날린 시간을 생각하면 ^^

스폰서
글타래

  • 2주간 인기 글
  • 2주간 인기글이 없습니다.
Trackback Address :: http://jiniya.net/tt/trackback/542
  • 좀 더 나은 메모장을 위해서 - Notepad++ Portable

    Tracked from 작은나라 | 2007/07/20 11:23 | DEL

    Notepad++ 포터블 버전에 한글언어팩과 한글 IME패치를 적용시켜두었어요. 기본적으로 원도우 기본 메모장을 대체 가능하고 그외에 프로그래밍용 편집기로도 사용 가능한 오픈소스 편집기입니..

  • Joseph Chinnock

    Tracked from Joseph Chinnock | 2014/06/28 14:33 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Joseph Chinnock

    Tracked from Joseph Chinnock | 2014/06/29 06:26 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • doug pitassi

    Tracked from doug pitassi | 2014/06/30 09:30 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • doug pitassi

    Tracked from doug pitassi | 2014/06/30 18:01 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Rashmi Patel DDS

    Tracked from Rashmi Patel DDS | 2014/07/01 04:51 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Frank Dellaglio

    Tracked from Frank Dellaglio | 2014/07/01 13:44 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Dr. Rashmi Patel

    Tracked from Dr. Rashmi Patel | 2014/07/01 16:14 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Steve Jacob

    Tracked from Steve Jacob | 2014/07/02 16:36 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Steve Jacob

    Tracked from Steve Jacob | 2014/07/03 06:13 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Belinda Broido

    Tracked from Belinda Broido | 2014/07/04 15:41 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Belinda Broido

    Tracked from Belinda Broido | 2014/07/04 19:55 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Frank Dellaglio

    Tracked from Frank Dellaglio | 2014/07/05 02:58 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Belinda Broido

    Tracked from Belinda Broido | 2014/07/08 09:27 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Belinda Broido

    Tracked from Belinda Broido | 2014/07/08 13:21 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Nishan Kohli

    Tracked from Nishan Kohli | 2014/07/09 00:10 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Link Schwartz

    Tracked from Link Schwartz | 2014/07/11 12:14 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Link Schwartz

    Tracked from Link Schwartz | 2014/07/11 18:16 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Frank Dellaglio

    Tracked from Frank Dellaglio | 2014/07/24 06:54 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Frank Dellaglio

    Tracked from Frank Dellaglio | 2014/07/27 21:57 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Link Schwartz

    Tracked from Link Schwartz | 2014/07/30 07:07 | DEL

    괴짜 프로그래머의 일상사~@@ - Notepad++ 4.1.2 코드 페이지 패치, Scintilla IME 패치

  • Gravatar Image.
    티끌모아 | 2007/08/08 10:19 | PERMALINK | EDIT/DEL | REPLY

    안그래도 한글 입력할때 문제가 됬었는데 너무 감사드립니다. 혹시 ime소스 공개하실수 있나요.
    eclipse도 notepad++처럼 한글입력이 되는 문제가 있어서요. 함 고처볼라고요.

    • Gravatar Image.
      codewiz | 2007/08/08 10:41 | PERMALINK | EDIT/DEL

      기본적인 아이디어는 아래 페이지에서 보실 수 있습니다.
      http://www.jiniya.net/tt/494

      위 소스에서 추가된 부분은 SetIMECompositionWindow 항수를 호출하지 않도록 수정한 것과, UNDO 없이 글자를 추가하는 함수를 수정한 것이 전부입니다.

  • Gravatar Image.
    bluenlive | 2008/04/25 23:00 | PERMALINK | EDIT/DEL | REPLY

    mr-ok 님의 블로그를 통해 알게 되었습니다.
    좋은 자료 감사드립니다. 꾸벅.

  • Gravatar Image.
    bluenlive | 2008/04/25 23:03 | PERMALINK | EDIT/DEL | REPLY

    참, SciLexer가 1.7.5.0으로 업뎃되었던데, 이 놈도 어떻게 안될까요? (굽신굽신)

  • Gravatar Image.
    namkyu | 2008/11/09 01:21 | PERMALINK | EDIT/DEL | REPLY

    한글패치 감사합니다. 아쉬운 점이 하나 있다면 구역을 잡아서 드래그 앤 드롭할 때 커서가 보이지 않아서 놓을 위치를 찾는데 애로가 좀 있습니다. 고쳐 주시면 더욱 감사...안해 주셔도 감사...감사

    • Gravatar Image.
      codewiz | 2008/11/11 12:57 | PERMALINK | EDIT/DEL

      그런 문제가 있었네용...
      혹시 다음번에 작업하게되면 반영하도록 하겠습니다.

  • Gravatar Image.
    땐감 | 2009/06/21 10:00 | PERMALINK | EDIT/DEL | REPLY

    SciLexer.dll 덮어 씌운후
    처음 긴 텍스트 화일을 열면 하단 스크롤바가 안생기고 작업커서 를 끝으로 가야 스크롤바가 생깁니다.
    감사합니다.

  • Gravatar Image.
    비행청소녀L | 2009/08/31 08:58 | PERMALINK | EDIT/DEL | REPLY

    안녕하세요.
    개발 쪽은 문외한인 평범한 엔드유저입니다.
    아끼는 Notepad++의 한글 입력문제에 대한 해법에 대해 찾아다니다 여기까지 오게 되었습니다.
    멋진 IME패치에 대해 정말 머리숙여 감사드립니다.

    덧붙여, 현재(2009.08) Notepad++의 버전 5.45에서 SciLexer.dll은 1.78을 쓰고 있고
    Scintilla 홈페이지에서 배포하고 있는 버전은 무려 2.01이랍니다.
    차후에 작업하실 기회가 되시면 고려를 부탁드릴께요.

    순탄한 하루 되시길 기원합니다.

Name
Password
Homepage
Secret