개발/Visual Studio Code

커맨드 팔레트 55부: Notebook 셀 접기 전후 Context Keys 비교하기

반응형
VS CODE 초보자 시리즈 · 커맨드 팔레트 55부

Notebook 셀 접기 전후 Context Keys 비교하기

같은 셀의 입력을 접기 전과 후 두 Snapshot으로 Collapse·Expand 조건이 교대하는 경계를 확인합니다.

notebookCellInputIsCollapsed가 false → true로 바뀌는 순간을 직접 관찰합니다.

셀과 포커스를 고정하고 펼치기로 복구하며 파일·키 바인딩 변경 0건을 확인합니다.

1. 시작하기 전에

초보자가 Notebook 셀 입력 접힘 상태와 같은 Chord의 When 조건을 안전하게 연결하는 읽기 전용 관찰 실습입니다.

준비할 것

  • VS Code Stable 1.139.0 portable 격리 Profile — 최신 Stable UI 확인
  • 코드 셀 하나가 있는 샘플 Notebook — kernel·셀 실행 불필요
  • Developer Tools Console — Context 객체 확인
  • Notebook과 User keybindings.json 원본 — 변경 0건 비교

적용 환경 2026-09-23 · Windows 11 · VS Code Stable 1.139.0 · PowerShell · 영어 기본 UI·사용자 확장 0개·내장 Notebook 지원 활성

안전하게 시작하기 셀 실행·저장·단축키 편집을 하지 않습니다. Collapse 후 Expand로 표시 상태를 복구합니다. 중단 조건: 같은 셀과 포커스를 유지할 수 없거나 파일이 바뀌면 중단합니다.

2. 알아둘 핵심 개념

FACT · notebookCellInputIsCollapsed

선택된 Notebook 셀 입력이 접혔는지를 나타내는 Boolean Context key입니다.

FACT · 두 When 식

Collapse는 notebookCellListFocused && !notebookCellInputIsCollapsed && !inputFocus, Expand는 notebookCellListFocused && notebookCellInputIsCollapsed입니다.

FACT · 상태 변경

Stable 1.139.0 소스는 Collapse에서 isInputCollapsed = true, Expand에서 false로 설정합니다.

PROCEDURE · 두 Snapshot

같은 셀 컨테이너를 클릭해 접기 전 A와 접은 후 B를 만들고 세 key를 표로 비교합니다.

EXAMPLE · 격리 관찰

A는 true / false / false, B는 true / false / true였고 두 When 결과가 교대했습니다.

RECOMMENDATION · 한 변수만 바꾸기

셀·포커스·클릭 위치는 고정하고 접힘 상태만 바꿉니다.

UNCONFIRMED · 환경 차이

확장, UI 언어, 선택 DOM과 내부 Context key는 독자 환경에서 다를 수 있으므로 실제 Snapshot을 기준으로 합니다.

3. 순서대로 진행하기

각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.

1. 격리 Notebook과 읽기 전용 경계 확인

목적 업무 Notebook과 User 단축키를 보호한다.

주의·되돌리기 즉시 닫고 저장하지 않은 뒤 격리 샘플에서 STEP-01로 재합류한다.
  1. 한 개 코드 셀만 있는 샘플 Notebook을 열고 셀 실행·저장·키 바인딩 편집을 하지 않기로 확인한다.

입력 위치 격리 폴더의 collapse-context.ipynb

kernel 미선택 / outputs 빈 배열 / User keybindings.json 원본
정상 결과 샘플 셀 입력이 펼쳐져 보인다.

확인 코드 두 줄과 출력 0건을 확인한다.

실패 신호 업무 Notebook이 열렸거나 셀이 실행됐다.

복구와 재합류 즉시 닫고 저장하지 않은 뒤 격리 샘플에서 STEP-01로 재합류한다.

2. 비교할 두 When 식 적기

목적 상태 변화 전에 판정식을 고정한다.

주의·되돌리기 현재 Stable 버전과 commit을 다시 기록하고 STEP-02로 돌아온다.
  1. Stable 소스의 Collapse와 Expand Cell Input When 식을 실습 메모에 그대로 적는다.

입력 위치 공식 Stable cellCommands.ts

Collapse: listFocused && !inputCollapsed && !inputFocus / Expand: listFocused && inputCollapsed
정상 결과 두 식의 차이가 inputCollapsed 부정 여부로 표시된다.

확인 명령 ID와 식을 한 줄씩 대조한다.

실패 신호 출처 버전이나 명령 ID가 없다.

복구와 재합류 현재 Stable 버전과 commit을 다시 기록하고 STEP-02로 돌아온다.

3. Developer Tools Console 준비

목적 Context 객체가 출력될 위치를 연다.

주의·되돌리기 Help > Toggle Developer Tools로 다시 열고 STEP-03에 재합류한다.
  1. Command Palette에서 Developer: Toggle Developer Tools를 실행하고 Console을 선택한다.

입력 위치 Command Palette → Developer Tools Console

Console
정상 결과 Console 입출력 영역이 보인다.

확인 Developer Tools 상단의 Console 탭을 확인한다.

실패 신호 Console이 없거나 별도 창을 찾을 수 없다.

복구와 재합류 Help > Toggle Developer Tools로 다시 열고 STEP-03에 재합류한다.

4. 셀을 command mode로 선택

목적 inputFocus가 거짓인 같은 측정 위치를 만든다.

주의·되돌리기 Esc를 한 번 누르고 셀 컨테이너를 다시 클릭해 STEP-04를 반복한다.
  1. Notebook 셀 왼쪽 여백을 클릭하고 Esc를 눌러 편집 caret을 없앤다.

입력 위치 Notebook cell container

selected cell / no input caret
정상 결과 셀 선택 표시가 남고 코드 입력 caret은 없다.

확인 선택 테두리와 caret 부재를 함께 확인한다.

실패 신호 코드 입력 caret이 깜박인다.

복구와 재합류 Esc를 한 번 누르고 셀 컨테이너를 다시 클릭해 STEP-04를 반복한다.

5. 접기 전 Context snapshot

목적 초기 inputCollapsed 값을 같은 셀에서 수집한다.

주의·되돌리기 선택 요소를 기록하고 STEP-04부터 다시 측정한다.
  1. Developer: Inspect Context Keys를 실행하고 선택된 셀 컨테이너를 한 번 클릭한다.

입력 위치 Command Palette → selected Notebook cell

Snapshot A
정상 결과 Console에 Context 객체 하나가 추가된다.

확인 객체에서 notebookCellListFocused, inputFocus, notebookCellInputIsCollapsed를 찾는다.

실패 신호 객체가 없거나 키가 없다.

복구와 재합류 선택 요소를 기록하고 STEP-04부터 다시 측정한다.

6. Snapshot A 판정

목적 접기 명령이 활성인 이유를 값으로 설명한다.

주의·되돌리기 Snapshot A 한 객체만 다시 읽고 STEP-06을 반복한다.
  1. Snapshot A의 세 값을 Collapse와 Expand 식에 각각 대입한다.

입력 위치 실습 메모

listFocused=true / inputFocus=false / inputCollapsed=false
정상 결과 Collapse=true, Expand=false로 계산된다.

확인 원시 값과 최종 Boolean을 나란히 대조한다.

실패 신호 값을 다른 Context 객체에서 섞었다.

복구와 재합류 Snapshot A 한 객체만 다시 읽고 STEP-06을 반복한다.

7. Notebook: Collapse Cell Input 실행

목적 입력 접힘 상태만 한 번 바꾼다.

주의·되돌리기 Notebook: Expand Cell Input으로 즉시 복구하고 STEP-04로 돌아간다.
  1. Command Palette에서 Notebook: Collapse Cell Input을 실행한다.

입력 위치 Command Palette

notebook.cell.collapseCellInput
정상 결과 코드 입력이 한 줄 높이의 접힌 상태가 된다.

확인 셀의 입력 영역이 접혔고 출력·파일 내용은 바뀌지 않았는지 확인한다.

실패 신호 다른 셀이나 출력이 접혔다.

복구와 재합류 Notebook: Expand Cell Input으로 즉시 복구하고 STEP-04로 돌아간다.

8. 접은 후 Context snapshot

목적 같은 셀에서 바뀐 key만 비교한다.

주의·되돌리기 클릭 대상을 기록하고 Expand로 복구한 뒤 STEP-04부터 다시 시작한다.
  1. 셀 컨테이너 선택을 유지한 채 Developer: Inspect Context Keys를 다시 실행해 같은 위치를 클릭한다.

입력 위치 Command Palette → same Notebook cell

Snapshot B
정상 결과 Console에 두 번째 Context 객체가 추가된다.

확인 두 객체의 세 key를 표로 비교한다.

실패 신호 다른 셀 또는 입력 편집기를 클릭했다.

복구와 재합류 클릭 대상을 기록하고 Expand로 복구한 뒤 STEP-04부터 다시 시작한다.

9. Snapshot B 판정

목적 두 명령의 활성 조건이 교대했음을 확인한다.

주의·되돌리기 환경 차이를 UNKNOWN으로 기록하고 같은 대상·포커스로 STEP-08을 재측정한다.
  1. Snapshot B 값을 같은 두 When 식에 대입한다.

입력 위치 실습 메모

listFocused=true / inputFocus=false / inputCollapsed=true
정상 결과 Collapse=false, Expand=true로 계산된다.

확인 Snapshot A와 비교해 inputCollapsed만 false→true인지 확인한다.

실패 신호 listFocused나 inputFocus도 달라졌다.

복구와 재합류 환경 차이를 UNKNOWN으로 기록하고 같은 대상·포커스로 STEP-08을 재측정한다.

10. Notebook: Expand Cell Input으로 복구

목적 실습 전 표시 상태로 되돌린다.

주의·되돌리기 추가 명령을 중단하고 원문을 보존한 뒤 Expand 명령을 한 번만 다시 확인한다.
  1. Command Palette에서 Notebook: Expand Cell Input을 실행한다.

입력 위치 Command Palette

notebook.cell.expandCellInput
정상 결과 코드 입력 두 줄이 다시 펼쳐진다.

확인 초기 화면과 코드 줄 수를 비교한다.

실패 신호 입력이 계속 접혀 있거나 코드가 달라졌다.

복구와 재합류 추가 명령을 중단하고 원문을 보존한 뒤 Expand 명령을 한 번만 다시 확인한다.

11. 파일과 키 바인딩 변경 0건 확인

목적 상태 관찰 외 변경이 없음을 독립 확인한다.

주의·되돌리기 오류 원문과 현재 파일을 보존하고 백업으로 복원한 뒤 STEP-11을 다시 확인한다.
  1. Notebook 파일과 격리 User keybindings.json을 실습 전 원본과 바이트 비교한다.

입력 위치 PowerShell / 격리 파일

Notebook unchanged / keybindings []
정상 결과 두 파일이 원본과 같고 셀 입력이 펼쳐져 있다.

확인 해시 또는 전체 문자열 비교 결과를 확인한다.

실패 신호 어느 파일이든 달라졌다.

복구와 재합류 오류 원문과 현재 파일을 보존하고 백업으로 복원한 뒤 STEP-11을 다시 확인한다.

4. 완료 확인하기

두 Context 객체와 파일 비교로 교차 확인합니다.

  • Snapshot A — listFocused=true, inputFocus=false, inputCollapsed=false.
  • Snapshot B — 앞 두 값은 같고 inputCollapsed=true.
  • When 판정 — Collapse true→false, Expand false→true.
  • 복구 — Expand 뒤 코드 입력 두 줄이 다시 보인다.
  • 독립 확인 — Notebook과 격리 keybindings.json이 원본과 같다.
완료 기준 두 Snapshot, 두 식의 교대, 펼침 복구, 파일 변경 0건이 모두 확인됐습니다.

5. 문제가 생겼다면

Context 객체가 없음

먼저 확인 Console 탭과 클릭 대상을 확인합니다.

복구 오류 원문을 보존하고 Console을 다시 엽니다.

재합류 STEP-03

inputFocus가 true

먼저 확인 코드 입력 caret이 남아 있는지 봅니다.

복구 Esc로 command mode에 들어갑니다.

재합류 STEP-04

접기 후 key가 false

먼저 확인 같은 셀 컨테이너를 클릭했는지 기록합니다. 원인은 UNKNOWN일 수 있습니다.

복구 Expand로 복구하고 처음부터 다시 측정합니다.

재합류 STEP-04

Expand가 보이지 않음

먼저 확인 접힘 상태와 셀 선택을 확인합니다.

복구 Snapshot B를 보존하고 임의 단축키 편집 없이 Command Palette를 다시 엽니다.

재합류 STEP-10

파일이 달라짐

먼저 확인 현재 파일과 오류 원문을 보존합니다.

복구 추가 저장·Reset을 중단하고 백업으로 복원합니다.

재합류 STEP-11

핵심 판단 같은 셀·포커스가 아니면 두 Snapshot 비교는 무효입니다. 원인을 UNKNOWN으로 남기고 다시 측정합니다.

6. 핵심 정리와 공식 자료

  • Collapse와 Expand는 notebookCellInputIsCollapsed 값에 따라 교대한다.
  • Snapshot 비교는 셀·포커스·클릭 위치를 고정한다.
  • Expand로 복구하고 파일·키 바인딩 변경 0건을 확인한다.

공식 자료

아래 자료는 2026-09-23 19:00 KST 기준입니다. 공식 사실과 UI 검증은 Stable 1.139.0 commit 2242ebbb54efeeb0129e08e919e7e8d43033cd83 기준이며 기본 설치본 1.138.0과 구분했습니다.

다음 편 예고 Notebook 셀 출력이 있는 샘플에서 notebookCellOutputIsCollapsed와 notebookCellHasOutputs를 접기 전후 두 Snapshot으로 비교해 출력 Collapse·Expand 경계를 확인합니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.