Re: Code folding and wrapping using the input->code method?
- To: mathgroup at smc.vnet.net
- Subject: [mg104094] Re: Code folding and wrapping using the input->code method?
- From: David Reiss <dbreiss at gmail.com>
- Date: Mon, 19 Oct 2009 07:10:49 -0400 (EDT)
- References: <hb70a0$8rs$1@smc.vnet.net> <hb9k06$ni$1@smc.vnet.net>
On Oct 17, 7:03 am, telefunkenvf14 <rgo... at gmail.com> wrote: > On Oct 16, 6:04 am, David Reiss <dbre... at gmail.com> wrote: > > > > > Take a look at the following MathGroup posting of mine that addresses > > this: > > >http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_... > > > I also reproduce that posting below.... > > > Best, > > > Davidhttp://scientificarts.com/worklife > > > __________________________________________ > > Original posting: > > __________________________________________ > > > There are several points to make on this. The first is that, > > generally you want to create your Mathematica cod within a > > Mathematica notebook (unless you are using Workbench) and then set > > that notebook up so that it's Input Cells or Code cells are > > Initialization cells. Then the notebook will save them into a > > corresponding .m file when the notebook is saved (a dialog will ask > > you this the first time you save it after you have put initialization > > cells in it). > > As for indentation, Code cells will not (by their stylesheet design) > > auto indent. The can be changed at the style sheet level. > > As for working with .m files directly. They do not retain any > > stylsheet information when they are saved. However styles can be > > imposed on them while they are open. > > Cells with code in .m files make use of the Core.nb stylesheet's Code > > cellstyle. So if you modify cells of this style in the .m file they > > will take on those modifications for the session that the .m file is > > open. > > If nb is the NotebookObject for the .m file in question then the > > following will make it behave in a way that you are desiring, > > modifying the cells with code in them. The code comes fromhttp://sci= en= > > tificarts.com/worklifewhere it is used in one of the > > > > > > > palettes for exactly the purpose you are wanting: I needed the same > > thing and wrote it into thehttp://scientificarts.com/worklife > > package for just this reason. > > ModifyCodeStyle[nb_NotebookObject, Selection] := > > Module[{}, > > NotebookFind[nb, "Code", All, CellStyle, AutoScroll -> False]; > > SetOptions[NotebookSelection[nb], > > PageWidth -> WindowWidth, > > AutoIndent -> Automatic, > > AutoSpacing -> True, > > LineBreakWithin -> Automatic, > > LineIndent -> 1, > > LinebreakAdjustments -> {0.85, 2, 10, 0, 1}] > > ]; > > And here is a different version which acts on the style of Code cells > > rather than on the cells directly: > > ModifyCodeStyle[nb_NotebookObject, Notebook] := > > Module[{styledefs, editable}, > > editable = Editable /. Options[nb, Editable]; > > SetOptions[nb, Editable -> True]; > > styledefs = StyleDefinitions /. Options[nb, StyleDefinitions]= ; > > Switch[Head[styledefs], > > Notebook, > > styledefs = Notebook[ > > { > > First@First[styledefs], > > Cell[StyleData["Code"], > > PageWidth -> WindowWidth, > > AutoIndent -> Automatic, > > AutoSpacing -> True, > > LineBreakWithin -> Automatic, > > LineIndent -> 1, > > LinebreakAdjustments -> {0.85, 2, 10, 0, 1}], > > Rest@First[styledefs] > > }, > > Sequence @@ Rest[List @@ styledefs] > > ], > > String | FileName | FrontEnd`FileName, > > styledefs = > > Notebook[{Cell[StyleData[StyleDefinitions -> styledefs]], > > Cell[StyleData["Code"], > > PageWidth -> WindowWidth, > > AutoIndent -> Automatic, > > AutoSpacing -> True, > > LineBreakWithin -> Automatic, > > LineIndent -> 1, > > LinebreakAdjustments -> {0.85, 2, 10, 0, 1}]}, > > StyleDefinitions -> "PrivateStylesheetFormatting.nb"] > > ]; > > SetOptions[nb, StyleDefinitions -> styledefs]; > > SetOptions[nb, Editable -> editable] > > ]; > > I hope this helps... > > --Davidhttp://scientificarts.com/worklife > > On Aug 21, 4:42 am, Benjamin Hell <h... at exoneon.de> wrote: > > > > Hi, > > > this is a real beginner question for packages in mathematica. When= I > > > view a package (.m) file in mathematica, the mathematica editor do= es= > n't > > > show any indentation nor does any automatic line breaks when scali= ng= > the > > > window. So whereas my code can be read quite well in a standard > > > mathematica notebook, it looks ugly in a package file. Is there an= y = > way > > > to setup some viewing options to change that behaviour? > > > Thanks in advance, > > > Benjamin > > > -- > > <><><><><><><><><>><><><>><><><> > > David Reiss, Ph.D; Scientific Arts, LLC . > > http://www.scientificarts.com > > <><><><><><><><><>><><><>><><><> > > This message and any attachments, may contain confidential and/or > > legally privileged information. If you are not the intended > > recipient of the message by the original sender, please destroy it. > > Message and attachments Copyright (c) 2009, all rights reserved. > > > On Oct 15, 7:16 am, telefunkenvf14 <rgo... at gmail.com> wrote: > > > > Does anyone know how to make Mathematica both fold and wrap code > > > input? > > > > I really like using the code input option (because it automatically > > > generates an autosave package for you, and I like the way it sets the > > > code off from the rest of your work in a notebook), but the lack of > > > folding and wrapping are driving me NUTS! > > > > -RG > > I'd give you a hug if I could reach ya! Thanks. > > I nosed around your website as well and will keep your consultation > services in mind. > > Are you interested in developing additional packages? I have some > ideas, mainly related to search and auto-linking/cross-linking and > index generation, and am curious about the economics of working on > such a project. (I'm an economist) > > -RG Thanks! --David