Summary: | Сделать выход по ^D из apt-shell | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Rahmatullin <wrar> | ||||
Component: | apt | Assignee: | placeholder <placeholder> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | minor | ||||||
Priority: | P2 | CC: | boyarsh, dottedmag, evg, glebfm, imz, iv, ldv, led, mike, php-coder, placeholder, rider | ||||
Version: | unstable | Keywords: | patch | ||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Andrey Rahmatullin
2008-12-25 11:03:07 MSK
Ctrl+D в readline используется для удаления текущего символа под курсором. Если бы apt-shell не использовал libreadline, то можно было бы вручную проверять на EOF и выходить. Слава, см. документацию на readline: rhttp://tiswww.case.edu/php/chet/readline/readline.html#SEC16 "delete-char (C-d) Delete the character at point. If point is at the beginning of the line, there are no characters in the line, and the last character typed was not bound to delete-char, then return EOF." http://tiswww.case.edu/php/chet/readline/readline.html#SEC24 "If readline encounters an EOF while reading the line, and the line is empty at that point, then (char *)NULL is returned." В apt-shell.cc: line = readline(_config->Find("APT::Shell::Prompt", "apt> ").c_str()); if (!line || !*line) { free(line); continue; } Так что здесь всего лишь надо случай if(!line) рассмотреть отдельно. 2dottedmag@: о, спасибо. Попробую сделать. Вот предлагаемый патч: http://git.altlinux.org/people/php_coder/packages/apt.git?p=apt.git;a=commitdiff;h=7956d444db6d6c92ec675a2b00926b166672c2da *** Bug 6264 has been marked as a duplicate of this bug. *** 0.5.15lorg2-alt22.1 Created attachment 3182 [details] add feedback to Ctrl-D Огромное спасибо за проделанную работу! Однако, есть небольшое замечание. При нажатии Ctrl-D не выполняется переход на новую строку, в результате чего получается следующее: apt> [root@deimos ~]# Как-то... не эстетично ;) Например, bash делает так: http://git.altlinux.org/people/ldv/packages/bash.git?p=bash.git;a=blob;f=bash/builtins/exit.def;h=ddaa5d315cd44f215a0b7e928f7f369ec9106a1a;hb=13bd4196973ac0d4d299b2b24ffb22efbae6d055#l63 Предлагаю дополненный одной строчкой патч, который делает практически также, только на C++. (In reply to comment #7) > Однако, есть небольшое замечание. При нажатии Ctrl-D не выполняется переход на > новую строку, в результате чего получается следующее: > apt> [root@deimos ~]# apt> % [c0der@rock ~]$ У меня в zsh вот так, поэтому я и не заметил неэстетичности. (In reply to comment #7) > Предлагаю дополненный одной строчкой патч, который делает практически > также, только на C++. Присоединяюсь к пожеланию: нужно убрать эту неэстетичность. достаточно: c1out << endl; лучше всё же зафиксить (In reply to comment #10) > лучше всё же зафиксить Будет исправлено в 0.5.15lorg2-alt22.2 Патч принят апстримом: http://apt-rpm.org/scm/?p=apt.git;a=commitdiff;h=c4822097f9a52a5d498640e5d3a16c6fd555b5bc |