init.lua 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. -- visual-line.lua
  2. -- Soft word wrap mode (like Emacs visual-line-mode)
  3. -- ============================================================================
  4. local visual_line = {}
  5. -- Configuration
  6. visual_line.config = {
  7. enabled = true,
  8. }
  9. -- Toggle visual line mode
  10. function visual_line.toggle()
  11. local current = editor:visual_line_mode()
  12. editor:set_visual_line_mode(not current)
  13. if not current then
  14. return {success = true, message = "Visual line mode enabled (word wrap on)"}
  15. else
  16. return {success = true, message = "Visual line mode disabled"}
  17. end
  18. end
  19. -- Enable visual line mode
  20. function visual_line.enable()
  21. editor:set_visual_line_mode(true)
  22. return {success = true, message = "Visual line mode enabled"}
  23. end
  24. -- Disable visual line mode
  25. function visual_line.disable()
  26. editor:set_visual_line_mode(false)
  27. return {success = true, message = "Visual line mode disabled"}
  28. end
  29. -- Setup function
  30. function visual_line.setup(opts)
  31. opts = opts or {}
  32. for k, v in pairs(opts) do
  33. visual_line.config[k] = v
  34. end
  35. if not visual_line.config.enabled then
  36. return
  37. end
  38. -- Register commands
  39. editor:register_command("visual-line-mode", "Toggle soft word wrap", function(args)
  40. return visual_line.toggle()
  41. end)
  42. editor:register_command("toggle-word-wrap", "Toggle soft word wrap (alias)", function(args)
  43. return visual_line.toggle()
  44. end)
  45. print("[visual-line] Package loaded")
  46. end
  47. -- Auto-setup with defaults
  48. visual_line.setup()
  49. return visual_line