<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>25013</bug_id>
          
          <creation_ts>2011-02-03 01:18:56 +0300</creation_ts>
          <short_desc>vim в xterm меняет раскраску файлов</short_desc>
          <delta_ts>2011-03-05 15:47:05 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>vim-enhanced</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kirill A. Shutemov">kas</reporter>
          <assigned_to name="Gleb F-Malinovskiy">glebfm</assigned_to>
          <cc>admsasha</cc>
    
    <cc>crux</cc>
    
    <cc>dd1email</cc>
    
    <cc>force</cc>
    
    <cc>george</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>vsu</cc>
    
    <cc>vvk</cc>
    
    <cc>vx8400</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117888</commentid>
    <comment_count>0</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-03 01:18:56 +0300</bug_when>
    <thetext>vim (точнее vim-enhanced в xterm&apos;е) при открытии файла отображает только statusline (или как там его) пока не нажмёшь любую клавишу (за исключением модификаторов). Затем всё приходит в норму.

Сломалось после обновления до 7.3.112-alt1.

Смена мэйнтейнера не осталась незамеченной. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117889</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-03 01:39:25 +0300</bug_when>
    <thetext>Не воспроизводится.  Проверял в двух конфигурациях.

Основная:
$ echo $TERM
rxvt-unicode
$ readlink -ev /usr/bin/vim |xargs -r rpmquery -f
vim-console-7.3.112-alt1

Тестовая:
$ echo $TERM
xterm
$ hsh --init &amp;&amp; hsh-install vim-enhanced &amp;&amp; hsh-shell</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117895</commentid>
    <comment_count>2</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-03 09:54:45 +0300</bug_when>
    <thetext>У меня в хэшере после нажатия, например, на Enter меняется раскраска файлов (смотрел на /etc/bashrc). Это тоже не воспроизводится?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117897</commentid>
    <comment_count>3</comment_count>
    <who name="Vladimir Lettiev">crux</who>
    <bug_when>2011-02-03 10:52:52 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; У меня в хэшере после нажатия, например, на Enter меняется раскраска файлов
&gt; (смотрел на /etc/bashrc). Это тоже не воспроизводится?

У меня в xterm воспроизводится, а в gnome-terminal и urxvt нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117899</commentid>
    <comment_count>4</comment_count>
    <who name="Victor Forsyuk">force</who>
    <bug_when>2011-02-03 11:22:31 +0300</bug_when>
    <thetext>У меня не воспроизводится ни в одном из терминалов. Кирилл, попробуйте проверить от новосозданного юзера.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117917</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-03 15:37:06 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; У меня в хэшере после нажатия, например, на Enter меняется раскраска файлов
&gt; (смотрел на /etc/bashrc). Это тоже не воспроизводится?

Нет, не воспроизводится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117996</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-05 01:56:42 +0300</bug_when>
    <thetext>Гипотеза: наверное, у нас xterm&apos;ы разных версий.
Я сумел воспроизвести мигание раскраски, только устанавливая xterm и rxvt-unicode из Сизифа в hasher, и запуская эти xterm/urxvt прямо внутри hasher.
Так что я склонен полагать, что дело тут не совсем в vim или даже совсем не в vim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117997</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-05 02:05:58 +0300</bug_when>
    <thetext>Совсем забыл что uxterm==xterm.
В urxvt не воспроизводится даже c версией из Сизифа внутри hasher.
Только с xterm и только c версией из Сизифа внутри hasher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117998</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-05 02:19:42 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; У меня в хэшере после нажатия, например, на Enter меняется раскраска файлов
&gt; (смотрел на /etc/bashrc). Это тоже не воспроизводится?

У кого это воспроизводится, попробуйте запустить под strace&apos;ом:
strace -e pause -o /dev/null vim /etc/bashrc
Изменится ли видимое поведение?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117999</commentid>
    <comment_count>9</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-05 02:41:56 +0300</bug_when>
    <thetext>&gt; У кого это воспроизводится, попробуйте запустить под strace&apos;ом:
&gt; strace -e pause -o /dev/null vim /etc/bashrc
&gt; Изменится ли видимое поведение?

нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118000</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-05 02:46:39 +0300</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; У кого это воспроизводится, попробуйте запустить под strace&apos;ом:
&gt; &gt; strace -e pause -o /dev/null vim /etc/bashrc
&gt; &gt; Изменится ли видимое поведение?
&gt; 
&gt; нет.

А у меня мигание в сизифном xterm внутри hasher при запуске под strace пропадает.
Наверное, у нас ещё и ядра разные.

В общем, я не понимаю, как это нормально воспроизводить и что с этим делать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118001</commentid>
    <comment_count>11</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-05 02:54:06 +0300</bug_when>
    <thetext>(In reply to comment #10)
&gt; В общем, я не понимаю, как это нормально воспроизводить и что с этим делать.

Возможно, имеет смысл по-bisect&apos;ить vim? Предыдущая версия же работает. Может наведёт на какие-то мысли...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118002</commentid>
    <comment_count>12</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-05 03:04:11 +0300</bug_when>
    <thetext>также воспроизводится в федоре с 7.3.107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118003</commentid>
    <comment_count>13</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-05 03:07:32 +0300</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; В общем, я не понимаю, как это нормально воспроизводить и что с этим делать.
&gt; 
&gt; Возможно, имеет смысл по-bisect&apos;ить vim? Предыдущая версия же работает. Может
&gt; наведёт на какие-то мысли...

Прежде чем бисектить, хорошо бы узнать, не меняется ли поведение vim в результате простой пересборки той версии, которая раньше работала без мигания.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118004</commentid>
    <comment_count>14</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-05 03:28:07 +0300</bug_when>
    <thetext>Откатил 91&apos;ый патч. Как будто бы починилось.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118488</commentid>
    <comment_count>15</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-17 04:23:27 +0300</bug_when>
    <thetext>(In reply to comment #14)
&gt; Откатил 91&apos;ый патч. Как будто бы починилось.

Ты предлагаешь откатить этот коммит?  Тогда хотелось бы понять, что именно он ломает и почему, чтобы это можно было как-то отрепортить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118494</commentid>
    <comment_count>16</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-17 09:31:49 +0300</bug_when>
    <thetext>Мне сложно сказать почему именно этот патч.
Я нашёл его проверяя коммиты которые потенциально могут что-то похожее сломать. Угадал с первого раза.
Что именно делает этот коммит представляю слабо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118624</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-02-21 16:42:20 +0300</bug_when>
    <thetext>Оно и до патча 091 моргало, только сразу при старте, без ожидания.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118678</commentid>
    <comment_count>18</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2011-02-22 16:12:14 +0300</bug_when>
    <thetext>(В ответ на комментарий №17)
&gt; Оно и до патча 091 моргало, только сразу при старте, без ожидания.

Пристальное изучение процесса редактирования spec-файла показало, что vim некорректно использует ответ xterm-а о количестве поддерживаемых цветов.

В первый раз он раскрашивает картинку исходя из 8-цветного режима:
(цитата из редактирования спека xterm-а):
&quot;\33[1;1H\33[33mProvides\33[m\33[35m:\33[m xvt, \33[35m%\33[m\33[36m_bindir\33[m/xvt\r\n\33[1m\33[34m~&quot;
Во второй раз -- из многоцветного:
&quot;\7\33[32;61H  \33[1;1H\33[m\33[H\33[2J\33[1;1H\33[38;5;130mProvides\33[m\33[35m:\33[m xvt, \33[35m%\33[m\33[36m_bindir\33[m/xvt\r\n\33[94m~&quot;

Обратите внимание на числа перед Provides и ~ -- это цвета. Причём:
\33[33mProvides -- это цвет #3 (8 цветов)
\33[38;5;130mProvides -- это цвет #130 (256 цветов)
\33[34m~ -- это цвет #4 (8 цветов)
\33[94m~ -- это цвет #12 (16-цветный режим NB!)

У нас xterm собран с 256 цветами. По умолчанию собирается с 16. Но если собрать с 8, ситуация во второй раз станет такой:
&quot;\7\33[32;61H  \33[1;1H\33[27m\33[m\33[H\33[2J\33[1;1H\33[33mProvides\33[m\33[35m:\33[m xvt, \33[35m%\33[m\33[36m_bindir\33[m/xvt\r\n\33[94m~:

Т. е. &quot;~&quot; рисуется опять исходя из 16-цветного режима. NB!

Делаю предположение, что где-то в недрах vim-а прибит или неправильно определяется режим xterm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118855</commentid>
    <comment_count>19</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-02-26 13:57:07 +0300</bug_when>
    <thetext>http://lists.altlinux.org/pipermail/community/2011-February/669592.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118879</commentid>
    <comment_count>20</comment_count>
    <who name="vx8400">vx8400</who>
    <bug_when>2011-02-27 03:15:15 +0300</bug_when>
    <thetext>Моргает при второй перерисовке экрана. Например, после первого движения курсором.
После вызова syn_cterm_attr2entry() для всех символов в окне цвета становятся правильными. Backtrace:

          aep = syn_cterm_attr2entry(attr); at screen.c: 7271
        screen_start_highlight(attr); at screen.c: 7487
      screen_char( ...) at screen.c: 7445
    screen_puts_len(text, -1, row, col, attr); at screen.c:6694
  screen_puts(showcmd_buf, (int)Rows - 1, sc_col, 0); at normal.c:3999
 display_showcmd();  at normal.c: 3931
add_to_showcmd(typebuf.tb_buf[typebuf.tb_off at getchar.c:2762
#0  vgetorpeek (advance=1) at getchar.c:2855
#1  0x080e5921 in vgetc () at getchar.c:1557
#2  0x080e5d34 in safe_vgetc () at getchar.c:1763
#3  0x0813510a in normal_cmd (oap=0xbf93f130, toplevel=1) at normal.c:666
#4  0x080f6605 in main_loop (cmdwin=0, noexmode=0) at main.c:1260
#5  0x080f98fa in main (argc=2, argv=0xbf93f3a4) at main.c:963

syn_cterm_attr2entry() не вызывается из первого update_screen(), который рисует в xterm неправильными цветами:
http://lists.altlinux.org/pipermail/community/2011-February/669592.html

Куда вставить syn_cterm_attr2entry(), чтобы атрибуты устанавливались правильно до первого update_screen()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119004</commentid>
    <comment_count>21</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-03-03 16:32:04 +0300</bug_when>
    <thetext>http://groups.google.com/group/vim_dev/msg/25a920eed6a143a9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119008</commentid>
    <comment_count>22</comment_count>
    <who name="Kirill A. Shutemov">kas</who>
    <bug_when>2011-03-03 18:36:00 +0300</bug_when>
    <thetext>В 7.3.137 починили. Проверял на сборке от raorn@.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119011</commentid>
    <comment_count>23</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-03-03 21:07:30 +0300</bug_when>
    <thetext>Собрал 7.3.137-alt1, можно проверить:
http://git.altlinux.org/repo/39769/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119040</commentid>
    <comment_count>24</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2011-03-05 15:47:05 +0300</bug_when>
    <thetext>vim-4:7.3.137-alt1 -&gt; sisyphus:

* Thu Mar 03 2011 Dmitry V. Levin &lt;ldv@altlinux&gt; 4:7.3.137-alt1
- Updated to 7.3.137 (closes: #25013).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>