Como desativar o emacs aqui conclusão do documento

9

Ao editar um arquivo de script bash com o emacs e tentar inserir <<< , no segundo < emacs insira um modelo para um documento aqui, como no exemplo a seguir:

<<EOF

EOF

Esta não é a saída desejada, porque eu deveria inserir um literal <<< .

No momento, recorro a inserir < < < e, depois, excluir espaços, mas prefiro receber permissão para inseri-lo diretamente.

    
por enzotib 05.09.2011 / 10:58

6 respostas

11

Na verdade, não é necessário que a função my-disable-here-document personalizada de Tom reconecte as chaves. Este recurso pode ser ativado e desativado com sh-electric-here-document-mode :

(add-hook 'sh-mode-hook
          (lambda ()
            (sh-electric-here-document-mode -1)))

(Também pode ser alternado para o buffer ativo via M-x sh-electric-here-document-mode .)

    
por 02.02.2013 / 21:17
6

Ligue < a self-insert-command no modo bash e depois insira apenas o caractere.

Por padrão, ela está vinculada a sh-maybe-here-document quando no modo bash e essa função faz a inserção automática.

Aqui está uma maneira de recuperar a chave:

(add-hook 'sh-set-shell-hook 'my-disable-here-document)

(defun my-disable-here-document ()
  (local-set-key "<" 'self-insert-command))
    
por 05.09.2011 / 11:56
2

Se a única razão pela qual você deseja desabilitar o comportamento here-doc é que ele impede que você insira uma string aqui C-< para uma função que contém (insert "<<<") funcionará e ainda permitirá o auto aqui-doc template

(defun my-here-string() 
  "Insert <<< (eg. for a bash here-string)" 
  (interactive)
  (insert "<<<"))
(global-set-key (kbd  "C-<") 'my-here-string)
    
por 05.09.2011 / 18:28
2

Eu digito <<< como M-3 < no modo shell.

    
por 02.02.2013 / 21:23
1

Digite < C-q < <

    
por 05.09.2011 / 13:42
1

Depois de dar uma olhada em: link Eu criei esta solução:

;; disable the automatic EOF generation in Shell Mode
(defvar sh-use-prefix nil
  "If non-nil when loading, '$' and '<' will be  C-c $  and  C-c < .")
(defvar sh-mode-map
  (let ((map (make-sparse-keymap)))
    (define-key map (if sh-use-prefix "\C-c<" "<")
      (local-set-key "<" 'self-insert-command))
   map)
  "Keymap used in Shell-Script mode.")
    
por 05.08.2013 / 05:04