2014-05-19 15 views
8

Sono un nuovo utente di Emacs e ho ottenuto un file .emacs da qualcuno nel mio campo che mi ha presentato questa piattaforma di programmazione. Tuttavia, ho riscontrato alcuni problemi durante il tentativo di salvare o creare nuovi file con nomi simili a quelli già esistenti. Se provo a creare un nuovo file con un nome relativamente simile a uno esistente, anche se si trova in una directory diversa, verrà aperto il file esistente. Quando si tenta di salvare un file con un nome più breve o simile a un file già esistente, Emacs tenta di sovrascrivere il file anziché crearne uno nuovo.Come interrompere il completamento automatico dalla sovrascrittura di un file che si chiama allo stesso modo

Ad esempio, sto tentando di salvare il file growth_loglike.tpl ma ho già il file growth_loglike_ADMB2_End.tpl nella directory. Quando vado a salvare e scrivere in growth_loglike.tpl mostra [growth_loglike_ADMB2_End.tpl] in verde a destra. Quando premo Invio, mi chiede se voglio sovrascrivere growth_loglike_ADMB2_End.tpl. Penso che questo sia un problema con il plugin auto-complete. C'è un modo per spegnere temporaneamente il auto-complete? Guardando il file auto-complete.el la mia ipotesi è che ho bisogno di cambiare questa variabile, ma non sono sicuro di cosa (o se è anche corretto). Qualsiasi aiuto con questo sarebbe estremamente utile.

(defcustom ac-use-overriding-local-map nil 
"Non-nil means `overriding-local-map' will be used to hack for overriding key events on auto-copletion." 
    :type 'boolean 
    :group 'auto-complete) 

Di seguito è il file .emacs che sto utilizzando.

;; This emacs configuration file will activate common packages 

and 
;; functionality used in the QFC Reproducable Reseach Workshop. 
;; change this path to point to emacs directory in workshop on your computer: 
;; (don't forget to include a trailing slash!) 
(defvar workshop-root "C:/Users/vince151/Documents/workshop/") 

(defvar emacs-root (concat (file-name-as-directory workshop-root) "emacs/")) 

;;============================================================================= 
;;============================================================================= 
;; 1. Misc Plug-ins 
;; here are some paths to look for additional scripts and functions: 
(add-to-list 'load-path (concat emacs-root "plugins/")) 


;;============================================================================= 
;; 2. YASnippet 
(add-to-list 'load-path (concat emacs-root "plugins/yasnippet")) 
(require 'yasnippet) ;; not yasnippet-bundle 
(setq yas-snippet-dirs (concat emacs-root "plugins/yasnippet/snippets")) 
(yas-global-mode 1) 

;; timestamp used in some yasnippets 
(defun now() 
    "Insert string for the current time formatted like '2:34 PM'." 
    (interactive)     ; permit invocation in minibuffer 
    (insert (format-time-string "%D %-I:%M %p"))) 

;;============================================================================= 
;; 3. Swap Slashes 
;; swap slashes and backslashes in current line -- useful for converting paths to be Windows-readable 
;;http://www.xsteve.at/prg/emacs/.emacs.txt 
(defun xsteve-exchange-slash-and-backslash() 
    "Exchanges/with \ and in the current line or in the region when a region-mark is active." 
    (interactive) 
    (save-match-data 
    (save-excursion 
     (let ((replace-count 0) 
      (eol-pos (if mark-active (region-end) (progn (end-of-line) (point)))) 
      (bol-pos (if mark-active (region-beginning) (progn (beginning-of-line) (point))))) 
     (goto-char bol-pos) 
     (while (re-search-forward "/\\|\\\\" eol-pos t) 
      (setq replace-count (+ replace-count 1)) 
      (cond ((string-equal (match-string 0) "/") (replace-match "\\\\" nil nil)) 
       ((string-equal (match-string 0) "\\") (replace-match "/" nil nil))) 
      (message (format "%d changes made." replace-count))))))) 

(global-set-key (kbd "M-\\") 'xsteve-exchange-slash-and-backslash) 


;;============================================================================== 
;; 4. Parenthesis highlighting 

(require 'highlight-parentheses) 
(setq hl-paren-colors '("DodgerBlue1" "IndianRed" "cyan" "ForestGreen" "magenta" "SlateGrey")) 
(defun hpm-on() 
(highlight-parentheses-mode t)) 
(add-hook 'admb-mode-hook 'hpm-on) 
(add-hook 'ess-mode-hook 'hpm-on) 
(add-hook 'inferior-ess-mode-hook 'hpm-on) 
(add-hook 'latex-mode-hook 'hpm-on) 
(add-hook 'LaTeX-mode-hook 'hpm-on) 

;;============================================================================= 
;; 5. ESS 
;; path to current version of R: (This shouldn't be needed if PATH is correct) 
;;(setq-default 
;; inferior-R-program-name 
;; "C:/R/R-2.15.0/bin/i386/Rterm.exe") 

(load (concat emacs-root "ESS/ess-13.09/lisp/ess-site")) 
(setq ess-fancy-comments nil) 
;; make pdflatex the default sweave compiler (removes texi2pdf) 
(setq ess-swv-pdflatex-commands '("pdflatex" "xelatex" "make")) 


;;============================================================================= 
;; 6. ADMB-ide 
;; don't forget to edit setADMBpaths.bat to point to your admb installation 
(setq admb-init (concat emacs-root "setADMBpaths & ")) 
;; these commands were cut from admb.el 
(load (concat emacs-root "plugins/admb")) 
;; Edit .emacs so that `admb-mode' is autoloaded and assigned to *.tpl files: 
(autoload 'admb-mode "admb" "Edit ADMB code." t) 
(add-to-list 'auto-mode-alist '("\\.tpl$" . admb-mode)) 
;; If you're running Emacs in MS Windows, add a line so *.tpl files are not treated as binary: 
(setq file-name-buffer-file-type-alist nil) 
;; You may want to assign a mode that recognizes #comments in *.dat files (perl-mode, conf-space-mode, or R-mode): 
(add-to-list 'auto-mode-alist '("\\.dat$" . perl-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . admb-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . easy-admb-hook)) 

;;added Monday, March 29, 2010 so that we can run models from within dat files 
(add-hook 'perl-mode-hook 
    (lambda() 
    (define-key perl-mode-map [f9] 'admb-run))) 

;;these commands were taken from Arni Magnusen's emacs file distributed with ADMB-IDE 
(defun easy-admb-hook() 
    (local-set-key [f1] 'admb-help    ) ; prefix 
    (local-set-key [f2] 'admb-mode    ) ; prefix 
    ;;(global-set-key [f3] 'conf-space-mode   ) ; kmacro-start-macro-or-insert-counter 
    (local-set-key [f4] 'admb-toggle-window  ) ; kmacro-end-or-call-macro 
    (local-set-key [f7] 'admb-tpl2cpp  ) 
    (local-set-key [f8] 'admb-build   ) 
    (local-set-key [f9] 'admb-run   ) 
    (local-set-key [S-f9] 'admb-run-args  ) 
    (local-set-key [f10] 'admb-rep   ) ; menu-bar-open 
    (local-set-key [S-f10] 'admb-cor   ) 
    (local-set-key [?\C-.] 'admb-toggle-section)) 
(add-hook 'admb-mode-hook 'easy-admb-hook) 
;;---------- 
;; C++ 
;;---------- 
(defun easy-gdb-hook() 
    (message nil) 
    (setq indent-line-function 'gud-gdb-complete-command) 
    ;;(setq gdb-show-main t) 
    (local-set-key [f5]   'gdb-restore-windows) 
    (local-set-key [M-up]  'gdb-io-buffer-off ) 
    (local-set-key [M-down]  'gdb-io-buffer-on ) 
    (local-set-key [?\C-c ?\C-q] 'comint-quit-subjob) 
    (defun gdb-io-buffer-off() "Enable separate IO buffer." (interactive)(gdb-use-separate-io-buffer nil)) 
    (defun gdb-io-buffer-on() "Disable separate IO buffer." (interactive)(gdb-use-separate-io-buffer t))) 
(add-hook 'gdb-mode-hook 'easy-gdb-hook) 

;;================= 
;; enable YASnippet 
(add-hook 'admb-mode-hook 'yas/minor-mode-on) 
(add-hook 'admb-mode-hook 
      (let ((original-command (lookup-key admb-mode-map [tab]))) 
      `(lambda() 
       (setq yas/fallback-behavior '(apply ,original-command)) 
       (local-set-key [tab] 'yas/expand)))) 

;;============================================================================== 
;; 7. Git 
;; path to git executable: (This shouldn't be needed if PATH is correct) 
;; (setq-default 
;; magit-git-executable 
;; "C:/gnu/git/bin/git.exe") 

;;(require 'git) 
(add-to-list 'load-path (concat emacs-root "plugins/git/magit")) 
(load (concat emacs-root "plugins/git/magit/magit.el")) 
(require 'magit) 
;; use Ctrl-C G to start Git: 
(global-set-key "\C-c\C-g" 'magit-status) 

;; from: http://readystate4.com/2011/02/22/emacs-changing-magits-default-diff-colors/ 
;; change magit diff colors 
(eval-after-load 'magit 
    '(progn 
    (set-face-foreground 'magit-diff-add "green3") 
    (set-face-foreground 'magit-diff-del "red3") 
    (when (not window-system) 
     (set-face-background 'magit-item-highlight "black")))) 

;;============================================================================== 
;; 8. autocomplete 
(require 'auto-complete) 
(add-to-list 'ac-dictionary-directories (concat emacs-root "plugins/ac-dict")) 
(require 'auto-complete-config) 
(ac-config-default) 

;;======================================== 
;; 9. Bibtex database: 
(setq reftex-default-bibliography 
     '("C:/Users/vince151/Documents/workshop/utils/references.bib")) 

(setq reftex-default-bibliography 
     (concat workshop-root "utils/references.bib")) 

(defvar reftex-file 
    (concat 
    (file-name-as-directory workshop-root) "utils/references.bib")) 
(setq reftex-default-bibliography reftex-file) 


;; Make TeX and RefTex aware of Snw and Rnw files 
(setq reftex-file-extensions 
     '(("snw" "rnw" "Snw" "Rnw" "nw" "tex" ".tex" ".ltx") ("bib" ".bib"))) 
(setq TeX-file-extensions 
     '("snw" "rnw" "Snw" "Rnw" "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo")) 

(add-hook 'latex-mode-hook 'turn-on-reftex) 

;;======================================== 
;; 10. Some functions to run bibtex and latex 

(defun ac-run-bibtex() 
    "Run BibTex on the current file." 
    (interactive) 
    (save-excursion 
    (let* ((latex-filename (file-name-sans-extension (buffer-file-name))) 
      (tex-buf (get-buffer-create " *ESS-bibtex-output*"))) 
     (message "Running BibTex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "bibtex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running BibTeX")))) 

(defun ac-run-pdflatex() 
    "Run pdflatex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (tex-buf (get-buffer-create " *pdflatex-output*"))) 
     (message "Running pdflatex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running pdflatex")))) 

;; terms associated with base name were added to create index files using makeindex 
;; this function impliments the following sequence of calls: 
;; pdflatex -> bibtex -> pdflatex -> makeindex -> pdflatex 
(defun ac-run-lbll() 
    "Run LaTeX-BibTex-Latex-Latex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (basename (file-name-nondirectory namestem)) 
      (tex-buf (get-buffer-create " *lbll-output*"))) 
     (message "Running LaTeX-BibTex-Latex-Latex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "bibtex" nil tex-buf 1 namestem) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "makeindex" nil tex-buf 1 basename) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running LaTeX-BibTex-Latex-Latex")))) 


(add-hook 'latex-mode-hook 
(lambda() 
    (define-key latex-mode-map [f9] 'ac-run-pdflatex) 
) 
) 


;;======================================== 
;; 10. Other useful functions below this point 

;;ispell - super cool spell checker for emacs 
(setq-default ispell-program-name (concat emacs-root "aspell/bin/aspell.exe")) 
;; get itspell to skip sweave chunks: 
(add-to-list 'ispell-skip-region-alist '("^<<.*>>=" . "^@")) 

;;============================================================================= 
;; use string rectangle for indentng blocks/regions of code 
(global-set-key (kbd "C->") 'string-insert-rectangle) 

;;============================================================================= 
;;ido (from: http://www.emacswiki.org/emacs/InteractivelyDoThings) 
(require 'ido) 
(ido-mode t) 
(setq ido-enable-flex-matching t) ;; enable fuzzy matching 

;;============================================================================= 
;; use ibuffer anytime we would have use buffer-list 
(defalias 'list-buffers 'ibuffer) 

; get rid of prompt that forces you to type full "yes" or "no". 
; y or n is enough 
(defalias 'yes-or-no-p 'y-or-n-p) 

;;============================================================================== 
;; from http://www.joegrossberg.com/archives/000182.html 
;; enable recent file list - bound to C-x C-r 
(require 'recentf) 
(recentf-mode 1) 
(setq recentf-max-menu-items 25) 
(global-set-key "\C-x\ \C-r" 'recentf-open-files) 

;;============================================================================== 
;; from http://www.stokebloke.com/wordpress/2008/04/17/emacs-refresh-f5-key/ 
;; use f3 to refresh file in current buffer 
;;(defun refresh-file() 
;; (interactive) 
;; (revert-buffer t t t) 
;; ) 
;;(global-set-key [f3] 'refresh-file) 
;; 
;;============================================================================== 
;; copy path of current buffer to kill ring 
;; from:http://stackoverflow.com/questions/3669511/ 
(defun copy-full-path-to-kill-ring() 
    "copy buffer's full path to kill ring" 
    (interactive) 
    (when buffer-file-name 
    (kill-new (file-truename buffer-file-name)))) 
(global-set-key "\C-cz" 'copy-full-path-to-kill-ring) 

;;============================================================================== 
;; keep emacs from cluttering working directories with tilde files by 
;; placing them here:(concat emacs-root "tildes") instead of 
;; wherever we're working. 
(defvar user-temporary-file-directory 
    (concat emacs-root "tildes/")) 
(make-directory user-temporary-file-directory t) 
(setq backup-by-copying t) 
(setq backup-directory-alist 
     `(("." . ,user-temporary-file-directory) 
     (,tramp-file-name-regexp nil))) 
(setq auto-save-list-file-prefix 
     (concat user-temporary-file-directory ".auto-saves-")) 
(setq auto-save-file-name-transforms 
     `((".*" ,user-temporary-file-directory t))) 

;;;============================================================================ 


; try to improve slow performance on windows. 
;;Got this from a website that said this would help. 
(setq w32-get-true-file-attributes nil) 
+1

possibile duplicato del [Non selezionando ciò che emacs ido sta suggerendo?] (Http://stackoverflow.com/questions/21007014/not-selecting-what-emacs-ido-is-suggesting) – Chris

+0

anche una possibile duplicato di [Ido mode è troppo intelligente, posso far sì che NON completi un nome file?] (http://stackoverflow.com/questions/812524/ido-mode-is-too-smart-can-i-get-it- a-non-completo-a-nome del file). – legoscia

risposta

14

Questo è il comportamento predefinito della modalità ido. Ci sono due cose che potete fare a questo proposito:

  • Una volta digitato il nome del file che si desidera, hit C-j invece di RET. Questo rende ido-mode usare esattamente il nome del file mentre lo hai digitato.
  • È possibile tornare temporaneamente al comportamento "normale" minibuffer premendo C-f. Quindi è possibile completare il vecchio nome file e modificarlo secondo necessità.
+1

Un'altra opzione che trovo conveniente è '(setq ido-auto-merge-delay-time 1)' (o 2, o 0.5, a seconda della velocità di scrittura e della velocità di completamento automatico) – juanleon

+1

Voglio solo dire grazie ! In qualche modo non sapevo per questo C-j da un anno e ho sempre toccato i file in console e non ho cercato su Google. – ipoteka

Problemi correlati