diff options
-rw-r--r-- | doc/misc/trampver.texi | 2 | ||||
-rw-r--r-- | lisp/frame.el | 3 | ||||
-rw-r--r-- | lisp/net/tramp-cache.el | 2 | ||||
-rw-r--r-- | lisp/net/tramp.el | 19 | ||||
-rw-r--r-- | lisp/net/trampver.el | 7 | ||||
-rw-r--r-- | src/dispnew.c | 8 | ||||
-rw-r--r-- | src/fileio.c | 1 | ||||
-rw-r--r-- | src/w32fns.c | 3 | ||||
-rw-r--r-- | src/w32term.h | 4 | ||||
-rw-r--r-- | src/xdisp.c | 65 |
10 files changed, 84 insertions, 30 deletions
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index 6ee69117387..478ec7037a8 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -8,7 +8,7 @@ @c In the Tramp GIT, the version numbers are auto-frobbed from @c tramp.el, and the bug report address is auto-frobbed from @c configure.ac. -@set trampver 2.4.3 +@set trampver 2.4.3.27.1 @set tramp-bug-report-address tramp-devel@@gnu.org @set emacsver 24.4 diff --git a/lisp/frame.el b/lisp/frame.el index c533e5a23fb..16ee7580f89 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -2725,6 +2725,9 @@ See also `toggle-frame-maximized'." line-prefix wrap-prefix truncate-lines + mode-line-format + header-line-format + tab-line-format display-line-numbers display-line-numbers-width display-line-numbers-current-absolute diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index d4f6aa00263..b81a1a23d5f 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -474,7 +474,7 @@ used to cache connection properties of the local machine." tramp-persistency-file-name)) (error "\n")) ";; Tramp connection history. Don't change this file.\n" - ";; You can delete it, forcing Tramp to reapply the checks.\n\n" + ";; Run `M-x tramp-cleanup-all-connections' instead.\n\n" (with-output-to-string (pp (read (format "(%s)" (tramp-cache-print cache))))))))))) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 1e52fae49f0..85330e98aa2 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1329,6 +1329,25 @@ entry does not exist, return nil." (string-match-p tramp-file-name-regexp name) t)) +;; This function bypasses the file name handler approach. It is NOT +;; recommended to use it in any package if not absolutely necessary, +;; because it won't work for remote file names not supported by Tramp. +;; However, it is more performant than `file-local-name', and might be +;; useful where performance matters, like in operations over a bulk +;; list of file names. +(defun tramp-file-local-name (name) + "Return the local name component of NAME. +This function removes from NAME the specification of the remote +host and the method of accessing the host, leaving only the part +that identifies NAME locally on the remote system. NAME must be +a string that matches `tramp-file-name-regexp'. The returned +file name can be used directly as argument of ‘process-file’, +‘start-file-process’, or ‘shell-command’." + (save-match-data + (and (tramp-tramp-file-p name) + (string-match (nth 0 tramp-file-name-structure) name) + (match-string (nth 4 tramp-file-name-structure) name)))) + (defun tramp-find-method (method user host) "Return the right method string to use depending on USER and HOST. This is METHOD, if non-nil. Otherwise, do a lookup in diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index e5f628d8537..dacdd44102f 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -39,7 +39,7 @@ (defvar inhibit-message) ;;;###tramp-autoload -(defconst tramp-version "2.4.3" +(defconst tramp-version "2.4.3.27.1" "This version of Tramp.") ;;;###tramp-autoload @@ -73,7 +73,7 @@ ;; Check for Emacs version. (let ((x (if (not (string-lessp emacs-version "24.4")) "ok" - (format "Tramp 2.4.3 is not fit for %s" + (format "Tramp 2.4.3.27.1 is not fit for %s" (replace-regexp-in-string "\n" "" (emacs-version)))))) (unless (string-equal "ok" x) (error "%s" x))) @@ -92,7 +92,8 @@ ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2") ("2.2.13.25.2" . "25.3") ("2.3.3" . "26.1") ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2") - ("2.3.5.26.3" . "26.3"))) + ("2.3.5.26.3" . "26.3") + ("2.4.3.27.1" . "27.1"))) (add-hook 'tramp-unload-hook (lambda () diff --git a/src/dispnew.c b/src/dispnew.c index b2a257090cc..9af1ce259d4 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -534,6 +534,14 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y eassert (left >= 0 && right >= 0); matrix->left_margin_glyphs = left; matrix->right_margin_glyphs = right; + + /* If we are resizing a window, make sure the previous mode-line + row of the window's current matrix is no longer marked as such. */ + if (w && matrix == w->current_matrix + && matrix->nrows > 0 + && dim.height != matrix->nrows + && matrix->nrows <= matrix->rows_allocated) + MATRIX_MODE_LINE_ROW (matrix)->mode_line_p = false; } /* Number of rows to be used by MATRIX. */ diff --git a/src/fileio.c b/src/fileio.c index 6e2fe2f0b82..34934dd6df6 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4975,6 +4975,7 @@ Optional fourth argument APPEND if non-nil means Optional fifth argument VISIT, if t or a string, means set the last-save-file-modtime of buffer to this file's modtime and mark buffer not modified. +If VISIT is t, the buffer is marked as visiting FILENAME. If VISIT is a string, it is a second file name; the output goes to FILENAME, but the buffer is marked as visiting VISIT. VISIT is also the file name to lock and unlock for clash detection. diff --git a/src/w32fns.c b/src/w32fns.c index 75e0d531a23..61e22e57009 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2146,6 +2146,9 @@ w32_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_val | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) = false; } + + f->output_data.w32->dwStyle = GetWindowLong (hwnd, GWL_STYLE); + unblock_input (); } diff --git a/src/w32term.h b/src/w32term.h index 5a54f542365..737764b8942 100644 --- a/src/w32term.h +++ b/src/w32term.h @@ -371,6 +371,10 @@ struct w32_output /* Non-hourglass cursor that is currently active. */ HCURSOR current_cursor; + /* The window style for this frame. Set up when the frame is + created and updated when adding/removing decorations in + w32_set_undecorated. Used by w32_set_window_size to adjust the + frame's window rectangle. */ DWORD dwStyle; /* This is the Emacs structure for the display this frame is on. */ diff --git a/src/xdisp.c b/src/xdisp.c index 6b677b63ae4..4856a7b13b6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1093,44 +1093,59 @@ window_box_height (struct window *w) /* Note: the code below that determines the mode-line/header-line/tab-line height is essentially the same as that contained in the macro - CURRENT_{MODE,HEADER}_LINE_HEIGHT, except that it checks whether - the appropriate glyph row has its `mode_line_p' flag set, - and if it doesn't, uses estimate_mode_line_height instead. */ + CURRENT_{MODE,HEADER,TAB}_LINE_HEIGHT, except that it checks whether + the appropriate glyph row has its `mode_line_p' flag set, and if + it doesn't, uses estimate_mode_line_height instead. */ if (window_wants_mode_line (w)) { - struct glyph_row *ml_row - = (w->current_matrix && w->current_matrix->rows - ? MATRIX_MODE_LINE_ROW (w->current_matrix) - : 0); - if (ml_row && ml_row->mode_line_p) - height -= ml_row->height; + if (w->mode_line_height >= 0) + height -= w->mode_line_height; else - height -= estimate_mode_line_height (f, CURRENT_MODE_LINE_FACE_ID (w)); + { + struct glyph_row *ml_row + = (w->current_matrix && w->current_matrix->rows + ? MATRIX_MODE_LINE_ROW (w->current_matrix) + : 0); + if (ml_row && ml_row->mode_line_p) + height -= ml_row->height; + else + height -= estimate_mode_line_height (f, + CURRENT_MODE_LINE_FACE_ID (w)); + } } if (window_wants_tab_line (w)) { - struct glyph_row *tl_row - = (w->current_matrix && w->current_matrix->rows - ? MATRIX_TAB_LINE_ROW (w->current_matrix) - : 0); - if (tl_row && tl_row->mode_line_p) - height -= tl_row->height; + if (w->tab_line_height >= 0) + height -= w->tab_line_height; else - height -= estimate_mode_line_height (f, TAB_LINE_FACE_ID); + { + struct glyph_row *tl_row + = (w->current_matrix && w->current_matrix->rows + ? MATRIX_TAB_LINE_ROW (w->current_matrix) + : 0); + if (tl_row && tl_row->mode_line_p) + height -= tl_row->height; + else + height -= estimate_mode_line_height (f, TAB_LINE_FACE_ID); + } } if (window_wants_header_line (w)) { - struct glyph_row *hl_row - = (w->current_matrix && w->current_matrix->rows - ? MATRIX_HEADER_LINE_ROW (w->current_matrix) - : 0); - if (hl_row && hl_row->mode_line_p) - height -= hl_row->height; - else - height -= estimate_mode_line_height (f, HEADER_LINE_FACE_ID); + if (w->header_line_height >= 0) + height -= w->header_line_height; + { + struct glyph_row *hl_row + = (w->current_matrix && w->current_matrix->rows + ? MATRIX_HEADER_LINE_ROW (w->current_matrix) + : 0); + if (hl_row && hl_row->mode_line_p) + height -= hl_row->height; + else + height -= estimate_mode_line_height (f, HEADER_LINE_FACE_ID); + } } /* With a very small font and a mode-line that's taller than |