Size: a a a

Emacs — русскоговорящее сообщество

2020 August 04

VS

Vadim Selin in Emacs — русскоговорящее сообщество
теперь я могу сделать debug-on-entry для typescript-insert-and-indent
функция выглядит так:
(defun typescript-insert-and-indent (key)                                                                                                                                                      
 "Run the command bound to KEY, and indent if necessary.                                                                                                                                      
Indentation does not take place if point is in a string or                                                                                                                                    
comment."                                                                                                                                                                                      
 (interactive (list (this-command-keys)))                                                                                                                                                    
 (call-interactively (lookup-key (current-global-map) key))                                                                                                                                  
 (let ((syntax (save-restriction (widen) (syntax-ppss))))                                                                                                                                    
   (when (or (and (not (nth 8 syntax))                                                                                                                                                        
                  typescript-auto-indent-flag)                                                                                                                                                
             (and (nth 4 syntax)                                                                                                                                                              
                  (eq (current-column)                                                                                                                                                        
                      (1+ (current-indentation)))))                                                                                                                                          
     (indent-according-to-mode))))                                                                                                                                                            
(put 'typescript-insert-and-indent 'delete-selection t)                                                                                                                                        

и если я правильно понимаю меня в ней должен интересовать typescript-auto-indent-flag
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Aragaer
о, крч если выключить FontLock, то проблемы нету
почему я не удивлён
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Vadim Selin
Спасибо! Похоже именно этого кусочка информации мне не доставало.
Получается вот что:
я ввожу Ctrl-h k и запятую
мне выводится:
, runs the command typescript-insert-and-indent (found in typescript-mode-map),                                                                                                                
which is an interactive compiled Lisp function in ‘typescript-mode.el’.                                                                                                                        
                                                                                                                                                                                             
It is bound to ,, ;, :, ), (, }, {.                                                                                                                                                            
                                                                                                                                                                                             
(typescript-insert-and-indent KEY)                                                                                                                                                            
                                                                                                                                                                                             
Run the command bound to KEY, and indent if necessary.                                                                                                                                        
Indentation does not take place if point is in a string or                                                                                                                                    
comment.
лол, у меня там почему-то self-insert-command
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
@vadim_selin тестируй фикс
источник

VS

Vadim Selin in Emacs — русскоговорящее сообщество
Pig Greenest
@vadim_selin тестируй фикс
О, спасибо! Я ещё до туда не дочитал
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
ну у нас там старые раны открылись дальше, нафлудили прилично
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
если фикс работает и ничего не ломает, то я пошлю его в апстрим
источник

I

I Апрельский... in Emacs — русскоговорящее сообщество
Vadim Selin
теперь я могу сделать debug-on-entry для typescript-insert-and-indent
функция выглядит так:
(defun typescript-insert-and-indent (key)                                                                                                                                                      
 "Run the command bound to KEY, and indent if necessary.                                                                                                                                      
Indentation does not take place if point is in a string or                                                                                                                                    
comment."                                                                                                                                                                                      
 (interactive (list (this-command-keys)))                                                                                                                                                    
 (call-interactively (lookup-key (current-global-map) key))                                                                                                                                  
 (let ((syntax (save-restriction (widen) (syntax-ppss))))                                                                                                                                    
   (when (or (and (not (nth 8 syntax))                                                                                                                                                        
                  typescript-auto-indent-flag)                                                                                                                                                
             (and (nth 4 syntax)                                                                                                                                                              
                  (eq (current-column)                                                                                                                                                        
                      (1+ (current-indentation)))))                                                                                                                                          
     (indent-according-to-mode))))                                                                                                                                                            
(put 'typescript-insert-and-indent 'delete-selection t)                                                                                                                                        

и если я правильно понимаю меня в ней должен интересовать typescript-auto-indent-flag
Можешь сделать C-h f и ввести функции
источник

VS

Vadim Selin in Emacs — русскоговорящее сообщество
Pig Greenest
учитывая все вышесказанное, тут надо смотреть на работу typescript--proper-indentation
ага, туда дальше можно прийти через indent-according-to-mode, который для typescript вызывает typescript--proper-indentation
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Pig Greenest
лол, у меня там почему-то self-insert-command
почему я не удивлён
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Зато #til post-self-insert-hook
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
т.е тайпскипт навешал на обычные клавиши своим команды?
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
возмутительно
источник

VS

Vadim Selin in Emacs — русскоговорящее сообщество
если я правильно понял, ты там закомментировал кусок, который, собственно, делает отступ
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Valeriy L
т.е тайпскипт навешал на обычные клавиши своим команды?
Не, я же тоже в тайпскрипт моде это все делал
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Vadim Selin
если я правильно понял, ты там закомментировал кусок, который, собственно, делает отступ
Только тот, который отвечает за отступ элементов списка
источник

VS

Vadim Selin in Emacs — русскоговорящее сообщество
Pig Greenest
если фикс работает и ничего не ломает, то я пошлю его в апстрим
На мой взягляд, это не то чтобы баг. Просто авторы этого кода считают, что comma-first списки надо выравнивать вот так, а мне кажется, что надо так, как это делаю я. Вкусовщина.
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Офк, поэтому будет настройка
источник

VS

Vadim Selin in Emacs — русскоговорящее сообщество
вот что написано про typescript-auto-indent-flag:
(defcustom typescript-auto-indent-flag t                                                                                                                                                       
 "Whether to automatically indent when typing punctuation characters.                                                                                                                        
If non-nil, the characters {}();,: also indent the current line                                                                                                                                
in typescript mode."                                                                                                                                                                          
 :type 'boolean                                                                                                                                                                              
 :group 'typescript)
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
во выстави в него nil
источник