diff options
| -rw-r--r-- | lisp/menu-bar.el | 98 |
1 files changed, 60 insertions, 38 deletions
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index b7967b858ae..c404145dff4 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el | |||
| @@ -1118,46 +1118,58 @@ The selected font will be the default on both the existing and future frames." | |||
| 1118 | (global-display-line-numbers-mode) | 1118 | (global-display-line-numbers-mode) |
| 1119 | (display-line-numbers-mode))) | 1119 | (display-line-numbers-mode))) |
| 1120 | 1120 | ||
| 1121 | (defun menu-bar--display-line-numbers-mode-visual () | ||
| 1122 | "Turn on visual line number mode." | ||
| 1123 | (interactive) | ||
| 1124 | (menu-bar-display-line-numbers-mode 'visual) | ||
| 1125 | (message "Visual line numbers enabled")) | ||
| 1126 | |||
| 1127 | (defun menu-bar--display-line-numbers-mode-relative () | ||
| 1128 | "Turn on relative line number mode." | ||
| 1129 | (interactive) | ||
| 1130 | (menu-bar-display-line-numbers-mode 'relative) | ||
| 1131 | (message "Relative line numbers enabled")) | ||
| 1132 | |||
| 1133 | (defun menu-bar--display-line-numbers-mode-absolute () | ||
| 1134 | "Turn on absolute line number mode." | ||
| 1135 | (interactive) | ||
| 1136 | (menu-bar-display-line-numbers-mode t) | ||
| 1137 | (setq display-line-numbers t) | ||
| 1138 | (message "Absolute line numbers enabled")) | ||
| 1139 | |||
| 1140 | (defun menu-bar--display-line-numbers-mode-none () | ||
| 1141 | "Disable line numbers." | ||
| 1142 | (interactive) | ||
| 1143 | (menu-bar-display-line-numbers-mode nil) | ||
| 1144 | (message "Line numbers disabled")) | ||
| 1145 | |||
| 1121 | (defvar menu-bar-showhide-line-numbers-menu | 1146 | (defvar menu-bar-showhide-line-numbers-menu |
| 1122 | (let ((menu (make-sparse-keymap "Line Numbers"))) | 1147 | (let ((menu (make-sparse-keymap "Line Numbers"))) |
| 1123 | 1148 | ||
| 1124 | (bindings--define-key menu [visual] | 1149 | (bindings--define-key menu [visual] |
| 1125 | `(menu-item "Visual Line Numbers" | 1150 | '(menu-item "Visual Line Numbers" |
| 1126 | ,(lambda () | 1151 | menu-bar--display-line-numbers-mode-visual |
| 1127 | (interactive) | ||
| 1128 | (menu-bar-display-line-numbers-mode 'visual) | ||
| 1129 | (message "Visual line numbers enabled")) | ||
| 1130 | :help "Enable visual line numbers" | 1152 | :help "Enable visual line numbers" |
| 1131 | :button (:radio . (eq display-line-numbers 'visual)) | 1153 | :button (:radio . (eq display-line-numbers 'visual)) |
| 1132 | :visible (menu-bar-menu-frame-live-and-visible-p))) | 1154 | :visible (menu-bar-menu-frame-live-and-visible-p))) |
| 1133 | 1155 | ||
| 1134 | (bindings--define-key menu [relative] | 1156 | (bindings--define-key menu [relative] |
| 1135 | `(menu-item "Relative Line Numbers" | 1157 | '(menu-item "Relative Line Numbers" |
| 1136 | ,(lambda () | 1158 | menu-bar--display-line-numbers-mode-relative |
| 1137 | (interactive) | ||
| 1138 | (menu-bar-display-line-numbers-mode 'relative) | ||
| 1139 | (message "Relative line numbers enabled")) | ||
| 1140 | :help "Enable relative line numbers" | 1159 | :help "Enable relative line numbers" |
| 1141 | :button (:radio . (eq display-line-numbers 'relative)) | 1160 | :button (:radio . (eq display-line-numbers 'relative)) |
| 1142 | :visible (menu-bar-menu-frame-live-and-visible-p))) | 1161 | :visible (menu-bar-menu-frame-live-and-visible-p))) |
| 1143 | 1162 | ||
| 1144 | (bindings--define-key menu [absolute] | 1163 | (bindings--define-key menu [absolute] |
| 1145 | `(menu-item "Absolute Line Numbers" | 1164 | '(menu-item "Absolute Line Numbers" |
| 1146 | ,(lambda () | 1165 | menu-bar--display-line-numbers-mode-absolute |
| 1147 | (interactive) | ||
| 1148 | (menu-bar-display-line-numbers-mode t) | ||
| 1149 | (setq display-line-numbers t) | ||
| 1150 | (message "Absolute line numbers enabled")) | ||
| 1151 | :help "Enable absolute line numbers" | 1166 | :help "Enable absolute line numbers" |
| 1152 | :button (:radio . (eq display-line-numbers t)) | 1167 | :button (:radio . (eq display-line-numbers t)) |
| 1153 | :visible (menu-bar-menu-frame-live-and-visible-p))) | 1168 | :visible (menu-bar-menu-frame-live-and-visible-p))) |
| 1154 | 1169 | ||
| 1155 | (bindings--define-key menu [none] | 1170 | (bindings--define-key menu [none] |
| 1156 | `(menu-item "No Line Numbers" | 1171 | '(menu-item "No Line Numbers" |
| 1157 | ,(lambda () | 1172 | menu-bar--display-line-numbers-mode-none |
| 1158 | (interactive) | ||
| 1159 | (menu-bar-display-line-numbers-mode nil) | ||
| 1160 | (message "Line numbers disabled")) | ||
| 1161 | :help "Disable line numbers" | 1173 | :help "Disable line numbers" |
| 1162 | :button (:radio . (null display-line-numbers)) | 1174 | :button (:radio . (null display-line-numbers)) |
| 1163 | :visible (menu-bar-menu-frame-live-and-visible-p))) | 1175 | :visible (menu-bar-menu-frame-live-and-visible-p))) |
| @@ -1266,16 +1278,33 @@ mail status in mode line")) | |||
| 1266 | 'tool-bar-lines)))))) | 1278 | 'tool-bar-lines)))))) |
| 1267 | menu)) | 1279 | menu)) |
| 1268 | 1280 | ||
| 1281 | (defun menu-bar--visual-line-mode-enable () | ||
| 1282 | "Enable visual line mode." | ||
| 1283 | (interactive) | ||
| 1284 | (unless visual-line-mode | ||
| 1285 | (visual-line-mode 1)) | ||
| 1286 | (message "Visual-Line mode enabled")) | ||
| 1287 | |||
| 1288 | (defun menu-bar--toggle-truncate-long-lines () | ||
| 1289 | "Toggle long lines mode." | ||
| 1290 | (interactive) | ||
| 1291 | (if visual-line-mode (visual-line-mode 0)) | ||
| 1292 | (setq word-wrap nil) | ||
| 1293 | (toggle-truncate-lines 1)) | ||
| 1294 | |||
| 1295 | (defun menu-bar--wrap-long-lines-window-edge () | ||
| 1296 | "Wrap long lines at window edge." | ||
| 1297 | (interactive) | ||
| 1298 | (if visual-line-mode (visual-line-mode 0)) | ||
| 1299 | (setq word-wrap nil) | ||
| 1300 | (if truncate-lines (toggle-truncate-lines -1))) | ||
| 1301 | |||
| 1269 | (defvar menu-bar-line-wrapping-menu | 1302 | (defvar menu-bar-line-wrapping-menu |
| 1270 | (let ((menu (make-sparse-keymap "Line Wrapping"))) | 1303 | (let ((menu (make-sparse-keymap "Line Wrapping"))) |
| 1271 | 1304 | ||
| 1272 | (bindings--define-key menu [word-wrap] | 1305 | (bindings--define-key menu [word-wrap] |
| 1273 | `(menu-item "Word Wrap (Visual Line mode)" | 1306 | '(menu-item "Word Wrap (Visual Line mode)" |
| 1274 | ,(lambda () | 1307 | menu-bar--visual-line-mode-enable |
| 1275 | (interactive) | ||
| 1276 | (unless visual-line-mode | ||
| 1277 | (visual-line-mode 1)) | ||
| 1278 | (message "Visual-Line mode enabled")) | ||
| 1279 | :help "Wrap long lines at word boundaries" | 1308 | :help "Wrap long lines at word boundaries" |
| 1280 | :button (:radio | 1309 | :button (:radio |
| 1281 | . (and (null truncate-lines) | 1310 | . (and (null truncate-lines) |
| @@ -1284,12 +1313,8 @@ mail status in mode line")) | |||
| 1284 | :visible (menu-bar-menu-frame-live-and-visible-p))) | 1313 | :visible (menu-bar-menu-frame-live-and-visible-p))) |
| 1285 | 1314 | ||
| 1286 | (bindings--define-key menu [truncate] | 1315 | (bindings--define-key menu [truncate] |
| 1287 | `(menu-item "Truncate Long Lines" | 1316 | '(menu-item "Truncate Long Lines" |
| 1288 | ,(lambda () | 1317 | menu-bar--toggle-truncate-long-lines |
| 1289 | (interactive) | ||
| 1290 | (if visual-line-mode (visual-line-mode 0)) | ||
| 1291 | (setq word-wrap nil) | ||
| 1292 | (toggle-truncate-lines 1)) | ||
| 1293 | :help "Truncate long lines at window edge" | 1318 | :help "Truncate long lines at window edge" |
| 1294 | :button (:radio . (or truncate-lines | 1319 | :button (:radio . (or truncate-lines |
| 1295 | (truncated-partial-width-window-p))) | 1320 | (truncated-partial-width-window-p))) |
| @@ -1297,11 +1322,8 @@ mail status in mode line")) | |||
| 1297 | :enable (not (truncated-partial-width-window-p)))) | 1322 | :enable (not (truncated-partial-width-window-p)))) |
| 1298 | 1323 | ||
| 1299 | (bindings--define-key menu [window-wrap] | 1324 | (bindings--define-key menu [window-wrap] |
| 1300 | `(menu-item "Wrap at Window Edge" | 1325 | '(menu-item "Wrap at Window Edge" |
| 1301 | ,(lambda () (interactive) | 1326 | menu-bar--wrap-long-lines-window-edge |
| 1302 | (if visual-line-mode (visual-line-mode 0)) | ||
| 1303 | (setq word-wrap nil) | ||
| 1304 | (if truncate-lines (toggle-truncate-lines -1))) | ||
| 1305 | :help "Wrap long lines at window edge" | 1327 | :help "Wrap long lines at window edge" |
| 1306 | :button (:radio | 1328 | :button (:radio |
| 1307 | . (and (null truncate-lines) | 1329 | . (and (null truncate-lines) |